Viso.li

Attach Links

POSThttps://www.viso.li/api/campaign/:id/links

Adds short links you already own to a campaign. The response is the updated campaign, including its attached links.

Send Authorization: Bearer sk_api_your_api_key on every request. See authentication.

Path parameters

FieldTypeDescription
idstringRequired. The campaign UUID.

Request body

Fields

FieldTypeDescription
linkSlugsstring[]Required. One or more public slugs to attach.

Example request

1curl -X POST https://www.viso.li/api/campaign/3f1c0c2a-7b4e-4d91-9c2a-1b8e6f0d2a11/links \
2 -H "Authorization: Bearer sk_api_your_api_key" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "linkSlugs": [
6 "def456"
7 ]
8}'

Success response

Returns 200 OK. The body matches GET /api/campaign/:id.

response.json
1{
2 "id": "3f1c0c2a-7b4e-4d91-9c2a-1b8e6f0d2a11",
3 "name": "Bio link",
4 "description": null,
5 "status": "ACTIVE",
6 "templateKey": "bio-evergreen",
7 "goal": {
8 "type": "CLICKS",
9 "config": {
10 "target": 10000,
11 "windowDays": 30
12 }
13 },
14 "progress": {
15 "type": "CLICKS",
16 "target": 10000,
17 "current": 1240,
18 "remaining": 8760,
19 "percent": 12,
20 "reached": false
21 },
22 "linkCount": 2,
23 "links": [
24 {
25 "slug": "abc123",
26 "alias": null,
27 "url": "https://example.com/bio"
28 }
29 ],
30 "startsAt": null,
31 "endsAt": null,
32 "createdAt": "2026-08-22T14:00:00.000Z"
33}

Response fields

FieldTypeDescription
idstringRequired. Campaign UUID.
namestringRequired. Campaign name.
descriptionstring | nullRequired. Short description, or null.
statusstringRequired. ACTIVE, DRAFT, or ENDED.
templateKeystring | nullRequired. Stored template key, or null.
goalobject | nullRequired. Typed goal settings stored for this campaign.
progressobject | nullRequired. Current vs target, when the goal is numeric.
linkCountnumberRequired. Number of attached links.
linksobject[]Required. Attached short links with slug, alias, and destination URL.
links[].slugstringRequired. Public slug of the attached link.
links[].aliasstring | nullRequired. Custom back-half, or null.
links[].urlstringRequired. Destination URL.
startsAtstring | nullRequired. ISO 8601 start, or null.
endsAtstring | nullRequired. ISO 8601 end, or null.
createdAtstringRequired. ISO 8601 time the campaign was created.

Errors

StatusErrorDescription
400Bad RequestThe campaign id is invalid, linkSlugs is empty, or a slug could not be found.
401UnauthorizedMissing, malformed, or invalid Bearer token.
403ForbiddenCampaigns are not available on the current plan.
404Not FoundNo campaign with that id belongs to you.
429Too Many RequestsMore than 10 requests per minute and 50 requests per day. Some responses include a Retry-After header.
500Internal Server ErrorUnexpected server error. Retry the request.