Get a Campaign
GEThttps://viso.li/api/campaign/:id
Returns one campaign you own: name, dates, template, typed goal config, current progress, and the attached links.
Use this when you need the full campaign. For progress only, see GET campaign status.
Send Authorization: Bearer sk_api_your_api_key on every request. See authentication.
Path parameters
| Field | Type | Description |
|---|---|---|
id | string | Required. The campaign UUID. |
Example request
1curl https://viso.li/api/campaign/3f1c0c2a-7b4e-4d91-9c2a-1b8e6f0d2a11 \
2 -H "Authorization: Bearer sk_api_your_api_key"
Success response
Returns 200 OK.
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": 1,
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
| Field | Type | Description |
|---|---|---|
id | string | Campaign UUID. |
status | string | ACTIVE, DRAFT, or ENDED. |
goal | object | Typed goal settings stored for this campaign. |
progress | object | Current vs target, when the goal is numeric. |
links | object[] | Attached short links with slug, alias, and destination URL. |
createdAt | string | ISO 8601 time the campaign was created. |
Errors
| Status | Error | Description |
|---|---|---|
| 400 | Bad Request | The campaign id is not a valid UUID. |
| 401 | Unauthorized | Missing, malformed, or invalid Bearer token. |
| 403 | Forbidden | Campaigns are not available on the current plan. |
| 404 | Not Found | No campaign with that id belongs to you. |
| 429 | Too Many Requests | More than 10 requests per minute or 50 requests per day. |
| 500 | Internal Server Error | Unexpected server error. Retry the request. |