Integrations
API Access
Use the API to create tickets, manage customers and tags, configure webhooks, and read usage data. Your plan must include API access to create an API key. Check your plan in the dashboard.
Create an API key
- Open Settings > API Keys.
- Select Create API Key.
- Enter a name and select the required scopes.
- Copy the key and store it securely. The full key is shown only once.
Keys start with sk_live_. Send the key in the Authorization: Bearer header
or the X-API-Key header. Use a separate organization for test data.
Make a request
curl https://api.supportstation.io/api/v1/me -H "Authorization: Bearer $SS_API_KEY"
This returns your organization, API key name, and scopes. No specific scope is required for this route.
Create a ticket
This request requires tickets:write:
curl -X POST https://api.supportstation.io/api/v1/tickets -H "Authorization: Bearer $SS_API_KEY" -H "Content-Type: application/json" -d '{
"subject": "Need help with billing",
"message": "I was charged twice this month.",
"priority": "HIGH",
"customer": { "email": "john@example.com" }
}'
Use GET /api/v1/tickets/:id to read a ticket and its messages. Use
POST /api/v1/tickets/:id/messages with content to add a customer reply.
Include a staff user_id to add a staff reply.
Add an internal note
Use POST /api/v1/tickets/:id/notes with tickets:write to add a private staff
note. Replace ticket-id and staff-user-id with the ticket and author IDs.
Both must belong to the API key's organization.
curl -X POST https://api.supportstation.io/api/v1/tickets/ticket-id/notes -H "Authorization: Bearer $SS_API_KEY" -H "Content-Type: application/json" -d '{
"content": "Check the logs before the next reply.",
"user_id": "staff-user-id"
}'
The API returns 201 with the note in data and type INTERNAL_NOTE.
Customers cannot see the note. It does not send customer email or public
webhook events. You can read it in the ticket's messages array through
GET /api/v1/tickets/:id with tickets:read.
See the internal note API reference for request fields, responses, and errors.
Scopes
tickets:readandtickets:writecustomers:readandcustomers:writetags:readandtags:writewebhooks:readandwebhooks:writebilling:read
Lists and errors
Tickets, customers, and webhook delivery history use page and limit.
The defaults are page 1 and 20 items; the maximum limit is 100. Pagination data
is returned in meta.pagination. Ticket lists exclude closed tickets unless
you send include_closed=true or an explicit status filter. Tag lists and
webhook lists are not paginated.
Errors use { "error": { "code": "NOT_FOUND", "message": "Ticket not found" } }.
Validation errors also include error.details, which maps field names to error
message arrays.
Deleting a customer also deletes that customer's tickets and their messages.
Full reference
See the API reference source, authentication guide, and webhook guide.
Was this article helpful?
