These endpoints work with your organisation's support tickets. The CLI's vigilbase support tickets uses the list. They are v1 operations, on https://api.vigilbase.com/one/v1. Sign-in, permissions and error shapes are on Vigilbase One API.
| Method and path | Permission | CLI command |
|---|---|---|
GET/support-tickets | support:access | vigilbase support tickets |
POST/support-tickets | support:access | |
GET/support-tickets/{ticketId}/messages | support:access | |
POST/support-tickets/{ticketId}/replies | support:access |
support:access is held by owners, admins and Read Only members, not Members. Opening a ticket and replying are attributed to the signed-in person, so organisation API keys can't send them.
Each takes an optional customerId. Leave it out for your own organisation.
On top of One's per-IP rate limits, reading tickets and messages allows 60 requests a minute per organisation, opening tickets 5 every 10 minutes per person, and replies 10 a minute per person. Over that, the answer is a 429 problem with Retry-After.
List tickets
GET/support-tickets lists your organisation's open tickets, as a cursor page. Send includeClosed=true to include closed ones. It reads at most the newest 100.
{
"items": [
{
"id": "…",
"number": 1042,
"title": "…",
"state": "waiting_on_you",
"priority": "high",
"tags": [],
"requester": { "name": "…", "email": "…" },
"assignee": { "name": "…", "email": "…" },
"bodyText": "…",
"createdAt": "2026-10-30T09:12:44.000Z",
"updatedAt": "2026-10-30T10:01:02.000Z",
"closedAt": null
}
]
}
bodyText is the request's text without markup or file links. When your organisation has no customer record, or support isn't set up for it, the list is empty.
Open a ticket
POST/support-tickets opens a support request with Vigilbase:
{
"subject": "DNS change for example.com",
"description": "Please add a CNAME for status.example.com pointing to …",
"priority": "medium"
}
| Field | Description |
|---|---|
subject | 5 to 200 characters |
description | 20 to 40,000 characters |
priority | low, medium (the default), high or urgent |
serviceCategory | Optional |
ccEmails | Optional; up to 20 email addresses |
Send an Idempotency-Key header so a retry never opens a second request. The answer is 201 with ticketId, ticketNumber and replayed; replayed is true, with 200, when an earlier request with the same key already opened it.
Messages and replies
GET/support-tickets/{ticketId}/messages lists the conversation on one ticket, oldest first, up to the newest 200 messages. Each message has id, authorName, fromVigilbase, isInternalNote (always false for you), source, text, attachments (each file's index, name and kind: image, pdf or file) and createdAt.
POST/support-tickets/{ticketId}/replies posts a reply as your support contact:
{ "body": "Thanks, that fixed it." }
body is 1 to 10,000 characters. Send an Idempotency-Key so a retry never posts twice. The answer is 201 with messageId.
If the support system can't be reached, the answer is a 503 problem. Retry later.
Older paths
Each operation here also answers at an older path on https://one.vigilbase.com/api, such as GET/api/support/tickets for GET/support-tickets. The older paths are deprecated aliases and will be retired with 410 Gone. Each operation's page in the API reference names its older path. See hosts.