Get Support Meta
GET/api/support/meta
Returns what the support UI needs before it renders anything: whether the caller holds a support-agent role (and which one), the current vocabularies (statuses, priorities, types, visibilities, link kinds) with their display labels, the groups and which of them is the default, the placeholders a macro body may use, and the attachment size limit.
support:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
This endpoint does not require tenant context — it works the same for a customer user and for an agent, and an agent's role and can_work_tickets reflect their own access.
Response fields:
live(boolean) — the cutover switch:trueonce SKU Support is the live customer channel. While it isfalse, customers are still served by the previous help channel and should not be sent to the support hub; agents (is_agent: true) can work tickets either way.mode(string) —localwhen this environment hosts the desk itself,remotewhen its customer endpoints are served by forwarding to the production desk. The contract is identical either way.environment(string) — which environment this is:production,beta,demoordev. Tickets raised here are stamped with it.console_available(boolean) — whether the agent console is served by this environment. Alwaysfalseinremotemode, where the console lives only in production, andfalsefor a caller who holds no support role.is_agent(boolean) — whether the caller holds an active support role.role(string, nullable) — the caller's support role, one of: admin, agent, viewer.nullfor a customer user.can_work_tickets(boolean) —truefor the admin and agent roles. A viewer reads tickets and leaves internal notes but never replies to customers or changes a ticket.statuses[]—{value, label, customer_label}for open, in_progress, waiting_on_customer, awaiting_release, resolved, closed;labelis the agent-facing wording,customer_labelwhat a customer sees.priorities[]—{value, label}for low, medium, high, urgent.types[]—{value, label}for bug, question, feature_request, billing.visibilities[]— tenant, requester.link_kinds[]— jira, sentry, deploy, record, ticket, url.groups(object) — group key → display name, as configured in Support settings.default_group_key(string, nullable) — the key of the group new tickets land in;nullwhen no group is marked as the default.macro_placeholders(object) — placeholder → description of what it expands to. These are the{{…}}tokens a macro body may use: ticket.id, ticket.number, ticket.subject, ticket.status, ticket.priority, requester.name, requester.first_name, requester.email, agent.name, agent.first_name, agent.signature, tenant.id, tenant.name.attachment_max_kb(integer) — the per-file attachment size limit in kilobytes.push(object) — whether this host can send push notifications.supported(boolean) is false when the deployment has no VAPID keypair configured, in which case there is nothing to subscribe to andvapid_public_keyisnull. When it is true,vapid_public_key(string) is the key a browser must subscribe against as itsapplicationServerKey; it is public by design, and its private half never leaves the host. Register the resulting device withPOST /api/support/push/subscriptions.
Authentication: Bearer token with the support:read scope, or an authenticated session.
Request
Responses
- 200
- 401
- 403
- 429
OK
Response Headers
Unauthorized
Response Headers
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.