Documentation
Create many links
POST
/v1/links/bulkLinksUp to 50 links in one call, each created exactly as create_link would: the same screening, plan allowance and daily limit. Free on every plan. Every row answers for itself in results, in order; once the allowance or the daily limit refuses a row, the rows after it carry that refusal without being tried. Send larger imports as several calls.
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
links | object[] | required | 1 to 50 links, each with a url and optionally an ending, a title, a redirect type and one of the account's domains. Passwords, expiry and rules are set per link afterwards; a row that carries them is refused on its own. |
Example request
curl -s -X POST "https://snip.link/v1/links/bulk" \
-H "Authorization: Bearer $SNIP_KEY" \
-H "Content-Type: application/json" \
-d '{"links":[{"url":"https://example.com/menus/spring-2026","ending":"spring-menu","title":"Spring menu"},{"url":"https://example.com/events"}]}'Response fields
| Field | Type | Description |
|---|---|---|
results | LinkBulkRow[] | |
results[].index | integer | The row's place in the request, counting from 0. |
results[].link | object | |
results[].error | object | Why the row was not created, in the same shape as a single create's error. |
created | integer | |
failed | integer |
Errors
| Status | Meaning |
|---|---|
| 400 | The body or query is invalid. details names each field. |
| 401 | The API key is missing, malformed or revoked. |
| 429 | Either the key exceeded its requests-per-second limit (honor Retry-After), or a daily or plan quota is used up (details.reason). |