REST API
Everything in the helpdesk, from your own code.
{"object": "list",
"data": [{"id": 4182,
"status": "open",
"channel": "email",
"subject": "Where is order #1042?"
}],
"meta": { "next_cursor": "aWQ6NDE4Mg" }}
Tickets, messages, customers, agents, teams, tags, macros, rules, views, fields, surveys, integrations and events, over HTTPS with JSON. Paths, fields and pagination follow Gorgias's REST API.
- HTTP Basic or Bearer
- Cursor pagination
- Signed webhooks
- OpenAPI reference
Why it matters
Keep the code you wrote for Gorgias's REST API
Rewriting integrations to switch helpdesks
Change the base URL and key
Paths, fields and pagination follow Gorgias's REST API.
Polling for changes
Webhooks on every change
Ticket created, updated and new message events, signed and retried.
Things only the app can do
The app uses the same API
Anything an agent does on screen, a script can do.
A key for each job, shown once
Create a key in Settings for an agent. It acts with that agent's role, so a key for a read-only agent can only read. The key is shown once, stored only as a hash, and can be revoked at any time.
Send the agent's email and the key as HTTP Basic credentials, or the key alone as a Bearer token. The key decides which helpdesk the request is for.
Copy this key now. It is not shown again.
7c1e0b4f2a9d6e3b8a51f0c2d7e4b9a6
Answer a customer from a script
Add a public message to an email ticket and the helpdesk sends it like any other reply: from the mailbox the ticket came in on, in the same thread, with the agent's signature.
Lists page with a cursor and sort with order_by, so a sync job can walk every ticket without missing or repeating one.
curl -X POST https://cs.growthdept.ai/api/tickets/4182/messages \
-u "$HELPDESK_EMAIL:$HELPDESK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "email",
"via": "api",
"from_agent": true,
"public": true,
"sender": { "email": "ana@demostore.example" },
"receiver": { "email": "maya.okafor@example.com" },
"body_text": "Hi Maya, your parcel is at the regional hub. We have asked the carrier to trace it."
}'Hear about changes as they happen
An HTTP integration posts to your URL when a ticket is created or updated or gets a new message. You write the body as a template, and fields such as {{ticket.id}} are filled in for each delivery.
Deliveries are signed, and retried with a growing delay when your server does not answer.
URL
https://hooks.example.com/helpdesk
Method
POST
Content type
application/json
Send on
- Ticket created
- Ticket updated
- Message added
Body
{"ticket_id": {{ticket.id}},
"status": "{{ticket.status}}"}Built to be scripted
The app uses it too
The helpdesk's own pages call the same endpoints, so nothing on screen is out of reach for a script.
Moving code from Gorgias
Scripts written for Gorgias's REST API work once they point at the new base URL and key.
Clear limits
40 calls in any 20 seconds per key. Past that the API answers 429 and says how long to wait.
Errors that say why
A request the API refuses comes back with the field and the reason, not a bare status code.
Questions
Point your scripts at a new base URL
Book a 45-minute call, or bring your history over from Gorgias with the import.
A week in support
Questions it answers
Each card opens the part of the helpdesk that handles it.
Can our order system open a ticket when a parcel is returned to sender?
Create the ticket with the customer's email, a subject and a first message, and tag it in the same call.
REST APISee howCan our warehouse app hear about every new ticket?
An HTTP integration posts to your URL when a ticket is created or updated or gets a new message.
WebhooksSee howWhat happens to two years of tickets if we switch helpdesks?
The import copies customers, tickets, messages, tags, macros, views and rules into your new helpdesk.
Moving from GorgiasSee howWhat did this customer order, and has it shipped?
Their earlier tickets and their Shopify orders sit beside the conversation, and a refund or replacement starts from the ticket with a check before it runs.
Customer sidebarSee howHow long did customers wait for a first reply last week?
Median first reply and resolution times by day, agent, team, tag and channel, with the tickets behind each number.
ReportsSee how