- Home
- Developers
- API reference
API reference
Version 1. Base URL https://toa.ee/api/v1. Download the OpenAPI document.
- Account
- Short links
- Stats
- Digital business cards
- QR codes
- UTM templates
Account
/api/v1/meAccount snapshot — plan, live counts and API quota
Required scope: read
| Property | Type | Required | Description |
|---|---|---|---|
email | string | Yes | — |
plan | free | pro | max | ultra | Yes | — |
links | object | Yes | — |
live | integer | Yes | — |
max | integer | Yes | — |
digital_business_cards | object | Yes | — |
live | integer | Yes | — |
max | integer | Yes | — |
api_keys | object | Yes | — |
live | integer | Yes | — |
max | integer | Yes | — |
api_requests | object | Yes | — |
used | integer | Yes | — |
limit | integer | Yes | — |
per_minute | integer | Yes | — |
resets_on | string | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
{
"email": "you@example.com",
"plan": "pro",
"links": {
"live": 12,
"max": 150
},
"cards": {
"live": 2,
"max": 150
},
"api_keys": {
"live": 1,
"max": 3
},
"quota": {
"used": 420,
"limit": 10000,
"reset_on": "2026-12-01"
}
}Short links
/api/v1/linksList short links
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | No | — |
slug | query | string | No | — |
sort | query | created | clicks | No | — |
order | query | asc | desc | No | — |
limit | query | integer | Yes | — |
cursor | query | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
data | object[] | Yes | — |
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
destination | string | Yes | — |
final_url | string | Yes | — |
title | string | null | Yes | — |
utm | object | null | Yes | — |
redirect_type | number | number | Yes | — |
status | active | expired | disabled | flagged | Yes | — |
hold_ends_at | string | null | Yes | — |
clicks | integer | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
warning | string | No | — |
next_cursor | string | null | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/linksCreate a short link
Required scope: read and write
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Idempotency-Key | header | string | No | Optional. Replay-safe create: same key + body returns the first response. |
| Property | Type | Required | Description |
|---|---|---|---|
destination | unknown | Yes | — |
slug | unknown | No | — |
title | unknown | No | — |
utm | object | null | No | — |
utm_template_id | string | No | — |
redirect_type | number | number | string | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
destination | string | Yes | — |
final_url | string | Yes | — |
title | string | null | Yes | — |
utm | object | null | Yes | — |
redirect_type | number | number | Yes | — |
status | active | expired | disabled | flagged | Yes | — |
hold_ends_at | string | null | Yes | — |
clicks | integer | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
warning | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
{
"id": "019a3f2c-8b1e-7d40-9c2a-1f6e4b8d0a11",
"slug": "spring",
"short_url": "https://toa.ee/spring",
"destination": "https://example.com/spring-sale",
"final_url": "https://example.com/spring-sale",
"title": null,
"utm": null,
"redirect_type": 301,
"status": "active",
"hold_ends_at": null,
"clicks": 0,
"dashboard_url": "https://toa.ee/app/links/019a3f2c-8b1e-7d40-9c2a-1f6e4b8d0a11",
"created_at": "2026-10-29T12:00:00.000Z",
"updated_at": "2026-10-29T12:00:00.000Z"
}/api/v1/links/{id}Get a short link
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
destination | string | Yes | — |
final_url | string | Yes | — |
title | string | null | Yes | — |
utm | object | null | Yes | — |
redirect_type | number | number | Yes | — |
status | active | expired | disabled | flagged | Yes | — |
hold_ends_at | string | null | Yes | — |
clicks | integer | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
warning | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
{
"id": "019a3f2c-8b1e-7d40-9c2a-1f6e4b8d0a11",
"slug": "spring",
"short_url": "https://toa.ee/spring",
"destination": "https://example.com/spring-sale",
"final_url": "https://example.com/spring-sale",
"title": null,
"utm": null,
"redirect_type": 301,
"status": "active",
"hold_ends_at": null,
"clicks": 0,
"dashboard_url": "https://toa.ee/app/links/019a3f2c-8b1e-7d40-9c2a-1f6e4b8d0a11",
"created_at": "2026-10-29T12:00:00.000Z",
"updated_at": "2026-10-29T12:00:00.000Z"
}/api/v1/links/{id}Update a short link
Required scope: read and write
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
destination | unknown | No | — |
slug | unknown | No | — |
title | unknown | No | — |
utm | object | null | No | — |
redirect_type | number | number | string | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
destination | string | Yes | — |
final_url | string | Yes | — |
title | string | null | Yes | — |
utm | object | null | Yes | — |
redirect_type | number | number | Yes | — |
status | active | expired | disabled | flagged | Yes | — |
hold_ends_at | string | null | Yes | — |
clicks | integer | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
warning | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/links/{id}Delete a short link
Required scope: read and write
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
Response 204: Deleted
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
Stats
/api/v1/links/{id}/statsClick stats for a short link
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
range | query | 48h | 7d | 30d | all | Yes | — |
from | query | string | No | — |
to | query | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
range | object | Yes | — |
from | string | Yes | — |
to | string | Yes | — |
granularity | hour | day | Yes | — |
totals | object | Yes | — |
clicks | integer | Yes | — |
unique_visitors | integer | Yes | — |
bot_clicks | integer | Yes | — |
series | object[] | Yes | — |
t | string | Yes | — |
clicks | integer | Yes | — |
unique_visitors | integer | Yes | — |
top | object | Yes | — |
referrers | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
countries | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
devices | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
browsers | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/cards/{id}/statsView and tap stats for a digital business card
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
range | query | 48h | 7d | 30d | all | Yes | — |
from | query | string | No | — |
to | query | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
range | object | Yes | — |
from | string | Yes | — |
to | string | Yes | — |
granularity | hour | day | Yes | — |
totals | object | Yes | — |
views | integer | Yes | — |
unique_visitors | integer | Yes | — |
saves | integer | Yes | — |
series | object[] | Yes | — |
t | string | Yes | — |
views | integer | Yes | — |
taps | object[] | Yes | — |
field | string | Yes | — |
count | integer | Yes | — |
top | object | Yes | — |
countries | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
devices | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
referrers | object[] | Yes | — |
name | string | Yes | — |
count | integer | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/compareCompare click stats across short links and digital business cards
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
ids | query | string | Yes | — |
range | query | 48h | 7d | 30d | all | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
range | object | Yes | — |
from | string | Yes | — |
to | string | Yes | — |
granularity | hour | day | Yes | — |
items | object[] | Yes | — |
id | string | Yes | — |
kind | link | card | Yes | — |
slug | string | Yes | — |
totals | object | Yes | — |
series | object[] | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
Digital business cards
/api/v1/cardsList digital business cards
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sort | query | created | No | — |
limit | query | integer | Yes | — |
cursor | query | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
data | object[] | Yes | — |
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
display_name | string | Yes | — |
status | active | paused | disabled | flagged | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
next_cursor | string | null | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/cards/{id}Get a digital business card summary
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
id | string | Yes | — |
slug | string | Yes | — |
short_url | string (uri) | Yes | — |
display_name | string | Yes | — |
status | active | paused | disabled | flagged | Yes | — |
dashboard_url | string (uri) | Yes | — |
created_at | string | Yes | — |
updated_at | string | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
QR codes
/api/v1/links/{id}/qrDownload a QR code for a short link
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
format | query | png | svg | pdf | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
/api/v1/cards/{id}/qrDownload a QR code for a digital business card
Required scope: read
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | Yes | — |
format | query | png | svg | pdf | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
UTM templates
/api/v1/utm-templatesList saved UTM templates
Required scope: read
| Property | Type | Required | Description |
|---|---|---|---|
data | object[] | Yes | — |
id | string | Yes | — |
name | string | Yes | — |
utm | object | Yes | — |
source | string | No | — |
medium | string | No | — |
campaign | string | No | — |
term | string | No | — |
content | string | No | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |
| Property | Type | Required | Description |
|---|---|---|---|
error | object | Yes | — |
code | bad_request | unauthorized | key_over_limit | insufficient_scope | limit_reached | not_found | slug_taken | delete_too_soon | in_plan_grace | idempotency_conflict | idempotency_in_progress | qr_unavailable | validation_error | unsafe_destination | rate_limited | quota_exceeded | internal | Yes | — |
message | string | Yes | — |
field | string | No | — |
docs | string (uri) | Yes | — |