REST API · v1

DiscordNext API

A JSON REST API to read and act on your tickets, categories, panels and stats from your own tools. Available on the Expert plan.

Base URLhttps://discordnext.com/api

Introduction

Every request is scoped to a single Discord server via its API key. Responses are JSON with snake_case fields. Lists return { object: "list", data: [...] } with total, limit and offset.

Authentication

Create a key in your dashboard under API (Expert plan). It's shown once — store it safely. Send it as a Bearer token:

Authorization: Bearer dn_live_xxxxxxxxxxxxxxxxxxxxxxxx

Keys are scoped to one server. Revoking a key in the dashboard takes effect immediately.

Rate limits

Up to 120 requests per minute per key. Exceeding it returns 429 with a Retry-After header.

Errors

Standard HTTP status codes. Failures return a JSON body with a message.

  • 401 — missing, invalid or revoked key
  • 403 — the server isn't on the Expert plan
  • 404 — resource not found (or not in your server)
  • 409 — conflict (e.g. ticket already closed)
  • 429 — rate limit exceeded
GET/v1/tickets

List tickets, newest first. Filter by status or category and paginate.

Query parameters
  • status · string — open · claimed · waiting · closed
  • category_id · string — filter to one category
  • limit · int — 1–100 (default 25)
  • offset · int — pagination offset
Request
curl https://discordnext.com/api/v1/tickets \
  -H "Authorization: Bearer $DN_KEY"
Response
{
  "object": "list",
  "total": 142,
  "limit": 25,
  "offset": 0,
  "data": [
    {
      "id": "f3a…",
      "number": 42,
      "status": "open",
      "priority": "high",
      "creator": { "id": "1007…", "name": "luna" },
      "claimed_by": null,
      "category": { "id": "c1…", "name": "Support", "emoji": "🛟", "color": "#6366f1" },
      "created_at": "2026-06-05T16:38:00.000Z"
    }
  ]
}
GET/v1/tickets/{id}

Retrieve a single ticket by id.

Request
curl https://discordnext.com/api/v1/tickets/{id} \
  -H "Authorization: Bearer $DN_KEY"
GET/v1/tickets/{id}/transcript

The stored HTML transcript (closed tickets with retention enabled).

Request
curl https://discordnext.com/api/v1/tickets/{id}/transcript \
  -H "Authorization: Bearer $DN_KEY"
POST/v1/tickets/{id}/priority

Set the ticket priority and post a notice in the channel.

Body
  • priority · string · required — low · medium · high · urgent
Request
curl -X POST https://discordnext.com/api/v1/tickets/{id}/priority \
  -H "Authorization: Bearer $DN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"priority":"high"}'
POST/v1/tickets/{id}/assign

Assign the ticket to a staff member.

Body
  • user_id · string · required — Discord user ID
  • name · string — display name (optional)
Request
curl -X POST https://discordnext.com/api/v1/tickets/{id}/assign \
  -H "Authorization: Bearer $DN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"392384246737534978","name":"Dodo"}'
POST/v1/tickets/{id}/note

Post a note into the ticket, optionally to the internal staff thread.

Body
  • content · string · required — max 2000 chars
  • internal · bool — true → staff thread
Request
curl -X POST https://discordnext.com/api/v1/tickets/{id}/note \
  -H "Authorization: Bearer $DN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"Refund processed in Stripe.","internal":true}'
POST/v1/tickets/{id}/close

Mark the ticket closed and notify the channel.

Body
  • reason · string — optional close reason
Request
curl -X POST https://discordnext.com/api/v1/tickets/{id}/close \
  -H "Authorization: Bearer $DN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"Resolved."}'
GET/v1/categories

The server's ticket categories.

Request
curl https://discordnext.com/api/v1/categories \
  -H "Authorization: Bearer $DN_KEY"
GET/v1/panels

The server's ticket panels.

Request
curl https://discordnext.com/api/v1/panels \
  -H "Authorization: Bearer $DN_KEY"
GET/v1/stats

High-level ticket counts.

Request
curl https://discordnext.com/api/v1/stats \
  -H "Authorization: Bearer $DN_KEY"
Response
{ "total": 142, "open": 14, "closed_this_week": 31, "by_status": { "open": 9, "claimed": 5, "closed": 128 } }
Need an endpoint we don't have yet? Tell us in the community Discord — the API grows with what Expert users actually automate.