List domains and campaigns
Returns the domains and campaigns owned by the authenticated account.
On this page
Returns the domains and campaigns owned by the authenticated account. Use it to populate a channel picker so users can scope an integration to a single channel.
Sort order: domains first (alphabetical by domain), then campaigns (alphabetical by name).
Endpoint
http
GET /api/v1/channels
Authentication
Bearer Personal Access Token. See Authentication.
Example request
curl https://www.voicegram.io/api/v1/channels \
-H "Authorization: Bearer vg_pat_<your-token>"Responses
200OK
Channel list
| Field | Type | Required | Description |
|---|---|---|---|
channels | array of object | yes | |
channels[].id | string (uuid) | yes | Channel identifier. Stable across renames. |
channels[].type | enum ("domain", "campaign") | yes | |
channels[].name | string | yes | For type=domain this is the hostname (e.g. acme.com). For type=campaign this is the campaign display name. |
channels[].slug | string | no | URL-safe slug. Only present for type=campaign; absent on domain rows. |
json
{
"channels": [
{
"id": "11111111-1111-1111-1111-111111111111",
"type": "domain",
"name": "acme.com"
},
{
"id": "22222222-2222-2222-2222-222222222222",
"type": "domain",
"name": "shop.acme.com"
},
{
"id": "33333333-3333-3333-3333-333333333333",
"type": "campaign",
"name": "Store Feedback",
"slug": "store-feedback"
}
]
}
401Unauthorized
The PAT is missing, malformed, expired, or revoked.
See Errors for the shared error response shape.
403Forbidden
PAT is valid but the account is on the free plan.
See Errors for the shared error response shape.
Need help? Email support@voicegram.io.