Launching soon.

Developer docs

Create and manage short links and QR codes from your own tools, with a REST API or an MCP server for AI assistants.

Launching soon. Qodeveo is not open for signups yet. These docs describe the API and MCP server as they will work once your account is active. Keys are created in the Qodeveo app, on the API page of your workspace.

Two ways to connect

Quickstart

1. Create an API key

In the Qodeveo app, open your workspace and go to API. Give the key a name and choose its access:

  • Read only can list links and read stats, QR codes and usage. It can't change anything.
  • Read & write can also create links, edit them and set redirect rules. New links count against your plan's monthly allowance.

Then choose where the key can be used: the REST API, the MCP server, or both. We suggest a separate key for AI assistants and another for your scripts. The key is shown once, so copy it right away.

2. Make your first request

Send the key as a Bearer token. Every request and response body is JSON.

curl
curl -X POST https://app.qodeveo.com/api/v1/links \
  -H "Authorization: Bearer shk_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/spring-menu", "title": "Spring menu"}'

A successful request returns 201 Created with the new link:

Response
{
  "id": "0b7e3f0c-…",
  "code": "a1b2c3",
  "short_url": "https://…/a1b2c3",
  "url": "https://example.com/spring-menu",
  "title": "Spring menu",
  "active": true,
  "expires_at": null,
  "created_at": "2026-11-03T14:05:00Z",
  "updated_at": "2026-11-03T14:05:00Z"
}

The short_url is the link to share. Its QR code is available from the QR endpoint.

3. Fetch the QR code

curl
curl -H "Authorization: Bearer shk_..." \
  "https://app.qodeveo.com/api/v1/links/LINK_ID/qr.png?size=600" -o qr.png

Examples

Python (requests)
import requests

API = "https://app.qodeveo.com/api/v1"
HEADERS = {"Authorization": "Bearer shk_..."}

# Create one link
r = requests.post(f"{API}/links", headers=HEADERS,
                  json={"url": "https://example.com/spring-menu", "title": "Spring menu"})
r.raise_for_status()
link = r.json()
print(link["short_url"])

# Download its QR code as a PNG
qr = requests.get(f"{API}/links/{link['id']}/qr.png", headers=HEADERS, params={"size": 600})
open("spring-menu-qr.png", "wb").write(qr.content)
JavaScript (fetch)
const API = "https://app.qodeveo.com/api/v1";
const headers = { Authorization: "Bearer shk_...", "Content-Type": "application/json" };

// Create one link
const res = await fetch(`${API}/links`, {
  method: "POST",
  headers,
  body: JSON.stringify({ url: "https://example.com/spring-menu", title: "Spring menu" }),
});
if (!res.ok) throw new Error((await res.json()).error);
const link = await res.json();
console.log(link.short_url);

Good to know

  • Every link has a QR code. Creating a QR code doesn't use any extra allowance. Links created through the API count toward your monthly allowance of new links, the same as links created in the app.
  • Keys belong to one workspace. A key can only see and change links in the workspace it was created in.
  • Rate limit. 600 requests per minute per key.
  • Keep keys secret. Don't put them in client-side code or public repositories. If a key leaks, revoke it on the API page and create a new one.

Next: the REST API reference, or connect an AI assistant over MCP.

1,000 New Links. 1,000 QR Codes. Every Month.

Every short link includes its own QR code, with a custom domain, team collaboration, smart regional routing and developer automation on one simple price.

Join the waiting list

Qodeveo is launching soon. Leave your details and we will let you know when it opens.

Loading the form…