Documentation
Update a collection
PATCH
/v1/collections/{collection}CollectionsChanges the name, the line under it, the page's address or whether the page is public. Fields left out stay. A change shows on the page within a minute.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
collection | string, in the path | required | The collection's id. |
Request body
JSON, sent with Content-Type: application/json.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | optional | |
description | string, null | optional | The line under the name on the page; null or an empty string removes it. |
public | boolean | optional | Switches the page on or off. Off by default. |
slug | string, null | optional | The page's address: 3 to 40 lowercase letters, digits and dashes, unique across snip.link. Left out when the page goes public, one is made from the name. A taken address answers 400 on details.slug. |
Example request
curl -s -X PATCH "https://snip.link/v1/collections/3f6c2a9e-1b4d-4e8a-9c7f-2d5b8e1a0c64" \
-H "Authorization: Bearer $SNIP_KEY" \
-H "Content-Type: application/json" \
-d '{}'Example response
{
"collection": {
"id": "3f6c2a9e-1b4d-4e8a-9c7f-2d5b8e1a0c64",
"name": "Spring launch",
"description": "Everything for the spring menu.",
"public": true,
"slug": "spring-launch",
"page_url": "https://snip.link/c/spring-launch",
"held": false,
"link_count": 6,
"created_at": "2026-10-20T12:00:00.000Z",
"updated_at": "2026-10-21T08:30:00.000Z"
},
"links": [
{
"id": "lnk_7f0c2a2b4bb04a8b",
"code": "spring-menu",
"domain": "snip.link",
"short_url": "https://snip.link/spring-menu",
"url": "https://example.com/menus/spring-2026",
"title": "Spring menu",
"redirect": 302,
"disabled": false,
"held": false,
"expires_at": null,
"expired_url": null,
"expired": false,
"starts_at": null,
"scheduled": false,
"max_clicks": null,
"limit_reached": false,
"track": true,
"password_protected": false,
"routes": [
{
"when": "all",
"conditions": [
{
"kind": "os",
"values": [
"ios"
]
}
],
"url": "https://apps.apple.com/app/id1234567890",
"match": "ios"
},
{
"name": "Lunch menu",
"when": "all",
"conditions": [
{
"kind": "time",
"from": "11:00",
"to": "15:00",
"tz": "America/New_York"
},
{
"kind": "weekday",
"values": [
1,
2,
3,
4,
5
],
"tz": "America/New_York"
}
],
"url": "https://example.com/menus/lunch"
}
],
"forward_query": false,
"health": {
"status": "ok",
"code": 200,
"checked_at": "2026-10-20T08:00:00.000Z"
},
"clicks": 1284,
"qr_style": {
"style": "rounded",
"fg": "#111111",
"bg": "#ffffff",
"ecc": "M"
},
"qr_png_url": "https://snip.link/qr.png?data=https%3A%2F%2Fsnip.link%2Fspring-menu%3Fqr%3D1",
"qr_svg_url": "https://snip.link/qr.svg?data=https%3A%2F%2Fsnip.link%2Fspring-menu%3Fqr%3D1",
"snapshots": "public",
"watch": null,
"file": null,
"stats_url": null,
"created_at": "2026-10-01T09:12:40.000Z",
"updated_at": "2026-10-18T16:03:11.000Z"
}
]
}Response fields
| Field | Type | Description |
|---|---|---|
collection | Collection | |
collection.id | string | Stable id. |
collection.name | string | |
collection.description | string, null | The line under the name on the page. Null for none. |
collection.public | boolean | True while the page is on: anyone with its address sees the collection's live links. |
collection.slug | string, null | The page's address after /c/ (https://snip.link/c/<slug>). Kept while the page is off, so it can come back. |
collection.page_url | string, null | The page, while it is public and not held. Null otherwise. |
collection.held | boolean | True while the page is down after a report. The collection itself still works. |
collection.link_count | integer | |
collection.created_at | string | |
collection.updated_at | string | |
links | Link[] | The collection's links in their order. |
Errors
| Status | Meaning |
|---|---|
| 400 | The body or query is invalid. details names each field. |
| 401 | The API key is missing, malformed or revoked. |
| 404 | No collection by that id in this account. |
| 429 | Either the key exceeded its requests-per-second limit (honor Retry-After), or a daily or plan quota is used up (details.reason). |