The API is organised around REST resources, uses standard HTTP verbs and status codes, and always returns JSON (except image endpoints). All requests must use HTTPS.
Base URL
https://1link.1workspace.in/api/v1
Format
JSON request bodies with Content-Type: application/json
Pagination
page and pageSize query parameters; list responses include total and totalPages
Timestamps
ISO 8601 strings in UTC
Authentication
Authenticate every request with an API key sent as a bearer token. Keys start with fk_live_ and belong to a single workspace, so you never need to pass a workspace ID.
Open Dashboard → API keys. API access is included on the Business plan.
Name the key, choose its scopes and, optionally, an expiry.
Copy the secret immediately — it is shown only once. You can regenerate or revoke a key at any time.
Treat keys like passwords: keep them server-side, never embed them in mobile apps or browser code, and rotate them if they may have leaked.
Scopes
Each key is limited to the scopes you grant. Requests outside a key’s scopes fail with 403.
links:read
List links and read a single link.
links:write
Create, update and delete links.
analytics:read
Read summaries, timeseries and breakdowns.
qr:read
Render QR code images for links.
domains:read
List the domains available to the workspace.
Links
A link has a defaultUrl, an optional fallbackUrl, per-platform destinations (IOS, IPAD, ANDROID, HUAWEI, AMAZON, WINDOWS, MACOS, LINUX), ordered rules and utm parameters.
GET/api/v1/linkslinks:read
List links
Query parameters for listing links
Parameter
Type
Description
q
string
Search by name, slug or destination.
status
string
all · active · inactive · archived · expired · suspended
Returns the shared platform domain and your custom domains with status (PENDING, VERIFIED, FAILED), isDefault, linkCount and the DNS records to configure. Use a domain’s id as domainId when creating links.
Errors
Errors use conventional HTTP status codes and a consistent body. fieldErrors maps field paths to messages for validation failures. Include the requestId when contacting support.
httpError response
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"statusCode": 400,
"code": "VALIDATION_FAILED",
"message": "Some fields are invalid",
"fieldErrors": {
"destinations.0.url": ["Enter a valid https:// URL"]
},
"requestId": "req_7f3c2a9e41b0"
}
HTTP status codes
400
The request is malformed or failed validation (code VALIDATION_FAILED).
401
Missing, invalid, expired or revoked API key.
402
The feature or limit requires a higher plan (FEATURE_NOT_IN_PLAN or PLAN_LIMIT_REACHED).
Something went wrong on our side. Retry with backoff.
Rate limits
Each API key can make 600 requests per minute. Every response includes RateLimit-Limit and RateLimit-Remaining headers. When you exceed the limit you receive 429 with a Retry-After header in seconds.
httpRate limit headers
HTTP/1.1 200 OK
RateLimit-Limit: 600
RateLimit-Remaining: 587
HTTP/1.1 429 Too Many Requests
RateLimit-Limit: 600
RateLimit-Remaining: 0
Retry-After: 23
Examples
Create a link that sends iPhone and Android users to their stores, routes visitors in Germany to a localised page, and tags every visit with UTM parameters.