API Reference
v1The MakerManifest API lets you create and manage short links programmatically. All requests require a Bearer API key. Premium plan or above required.
Base URL
https://makermanifest.co/api/v1
All endpoints are prefixed with this base URL. All responses are JSON.
Authentication
Every request must include your API key as a Bearer token in the Authorization header. Keys are prefixed with mm_.
Authorization: Bearer mm_your_key_here
Generate and manage keys at Dashboard → API Access. Premium accounts can have 1 active key; Enterprise accounts can have up to 10. Keys are shown exactly once at creation — store them securely.
Rate Limits
Limits are applied per API key on a sliding 60-second window.
| Plan | Limit |
|---|---|
| Premium | 60 requests / minute |
| Enterprise | 300 requests / minute |
When a limit is exceeded the API returns 429 Too Many Requests with a Retry-After header (seconds until the window resets) and X-RateLimit-Limit / X-RateLimit-Remaining headers on every response.
Errors
All errors return a JSON body with an error string.
| Status | Meaning |
|---|---|
| 400 | Bad request — invalid URL, missing required fields, or invalid code format |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — your plan does not include this feature (e.g. custom codes require Basic+) |
| 404 | Not found — the short link code does not exist or belongs to another account |
| 409 | Conflict — the requested vanity code is already taken or reserved |
| 429 | Rate limit exceeded — slow down and retry after the Retry-After interval |
| 500 | Server error — unexpected failure; contact support if it persists |
{ "error": "Invalid URL. Must start with http:// or https://." }Endpoints
/api/v1/meReturns your account info — useful for verifying authentication and checking your plan.
Response
{
"id": "cuid_abc123",
"username": "TheNewJankyWorkshop",
"displayName": "The New Janky Workshop",
"email": "[email protected]",
"plan": "Premium",
"preferredShortDomain": "mkr.ms",
"createdAt": "2026-01-15T12:00:00.000Z"
}/api/v1/linksList all your URL-type short links, newest first. Paginated.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Page number (default: 1) |
| limit | integer | No | Results per page, max 200 (default: 50) |
Response
{
"data": [
{
"id": "cuid_abc123",
"code": "xK9mP2",
"url": "https://amazon.com/dp/B0EXAMPLE",
"shortUrl": "https://mkr.ms/xK9mP2",
"clickCount": 42,
"createdAt": "2026-05-01T09:00:00.000Z"
}
],
"page": 1,
"limit": 50
}Only returns URL-type links. Gear list and product item links are managed automatically by the platform and are not included.
/api/v1/linksCreate a new short link for any http or https URL. Returns the created link object.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | The destination URL (must start with http:// or https://) |
| code | string | No | Optional vanity code (2–50 chars, letters/numbers/hyphens, no leading/trailing hyphens, no consecutive hyphens). Requires Basic plan or above. Omit to auto-generate. |
Example request
POST /api/v1/links
Content-Type: application/json
{ "url": "https://amazon.com/dp/B0EXAMPLE", "code": "dewalt-drill" }Response — 201 Created
{
"id": "cuid_abc123",
"code": "dewalt-drill",
"url": "https://amazon.com/dp/B0EXAMPLE",
"shortUrl": "https://mkr.ms/dewalt-drill",
"clickCount": 0,
"createdAt": "2026-05-20T10:00:00.000Z"
}/api/v1/links/{code}Fetch stats for a single short link. Only returns links that belong to your account.
Path parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
| code | string | Yes | The short link code (e.g. dewalt-drill or xK9mP2) |
Response
{
"id": "cuid_abc123",
"code": "dewalt-drill",
"url": "https://amazon.com/dp/B0EXAMPLE",
"targetType": "url",
"shortUrl": "https://mkr.ms/dewalt-drill",
"clickCount": 42,
"createdAt": "2026-05-20T10:00:00.000Z"
}/api/v1/links/{code}Delete a URL short link. Only URL-type links can be deleted via the API — gear list and item links are managed automatically.
Path parameter
| Parameter | Type | Required | Description |
|---|---|---|---|
| code | string | Yes | The short link code to delete |
Response — 200 OK
{ "ok": true }