Support Tickets and Release Notes
Read your organization's support tickets, and the platform's release notes, with an API key. Both are read only: opening or answering a ticket stays in the dashboard.
Base URL: https://api.oec.sh/api/public/v1
Support Tickets
Off by default. A support conversation is a different kind of data from servers and deploys, so no key can read tickets until an organization admin turns on Support tickets for that key under Settings → API Keys. Read-only and full-access keys can both have it; project-scoped keys cannot, because tickets belong to the organization, not to one project.
List Tickets
GET /support/ticketsYour organization's tickets, newest first.
| Query parameter | Type | Description |
|---|---|---|
status | string | Only tickets in this status: open, in_progress, waiting_for_customer, waiting_for_admin, resolved, closed. |
limit | integer | 1 to 100, default 20. |
cursor | string | next_cursor from the previous page. |
{
"data": [
{
"id": "3f1c2b4a-5d6e-4f70-8a91-b2c3d4e5f607",
"ticket_number": "OEC-10231",
"subject": "Read tickets with an API key",
"status": "waiting_for_customer",
"priority": "medium",
"category": "Feature request",
"source": "web",
"project_id": null,
"environment_id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"server_id": null,
"created_at": "2026-10-14T08:00:00Z",
"updated_at": "2026-10-14T09:30:00Z",
"resolved_at": null,
"closed_at": null
}
],
"pagination": { "has_more": false, "next_cursor": null, "total": 1 }
}Get a Ticket
GET /support/tickets/{ticket_id}One ticket with its description and its public replies, oldest first. Replies from oec.sh staff have from_support: true and are signed oec.sh Support.
{
"id": "3f1c2b4a-5d6e-4f70-8a91-b2c3d4e5f607",
"ticket_number": "OEC-10231",
"subject": "Read tickets with an API key",
"status": "waiting_for_customer",
"priority": "medium",
"category": "Feature request",
"source": "web",
"project_id": null,
"environment_id": "6a7b8c9d-0e1f-4a2b-8c3d-4e5f6a7b8c9d",
"server_id": null,
"created_at": "2026-10-14T08:00:00Z",
"updated_at": "2026-10-14T09:30:00Z",
"resolved_at": null,
"closed_at": null,
"description": "Our agent should be able to follow its own tickets.",
"comments": [
{
"id": "9e8d7c6b-5a4f-4e3d-8c2b-1a0f9e8d7c6b",
"author_name": "oec.sh Support",
"from_support": true,
"content": "This is live now. Turn on Support tickets for your key.",
"created_at": "2026-10-14T09:30:00Z"
}
]
}What a ticket shows
Only the fields above. Internal notes written by oec.sh staff, the person a ticket is assigned to, internal tags, response-time targets, satisfaction ratings, email addresses and attachments are never returned. Attachments stay in the dashboard.
Errors
| Status | error | When |
|---|---|---|
403 | support_tickets_not_enabled | Support tickets is not turned on for this key. |
403 | org_scope_required | The key is limited to one project. |
404 | not_found | No ticket with this id in your organization. A ticket of another organization answers the same way. |
400 | invalid_cursor | The cursor is not one this list returned. |
Release Notes
GET /changelogThe platform's releases, newest first: the same list as the Release Notes tab of the dashboard's Support page. Any API key can read it.
| Query parameter | Type | Description |
|---|---|---|
since_version | string | Only releases newer than this version, e.g. 1.53.20 returns 1.54.0 and later. |
since_date | string | Only releases on or after this date, YYYY-MM-DD. |
limit | integer | 1 to 100, default 20. |
offset | integer | Releases to skip, default 0. |
{
"entries": [
{
"version": "1.54.2",
"date": "2026-10-14",
"title": "Backup alerts no longer fire while backups are still running",
"highlights": ["The backup success-rate check no longer counts backups that are still running as failures."],
"categories": {
"fixed": ["Backup alerts: the backup success-rate check no longer counts running backups as failures."]
}
}
],
"total": 1,
"limit": 20,
"offset": 0
}categories keys are mostly added, changed, improved and fixed; a release lists only the ones it has.