Skip to content

API reference

Support

Support tickets and the public contact form.

5 operationsBase URL https://packetexchange.io/api/v1Postman collection

List your support tickets

GET/api/v1/tickets

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Response 200

  • datarequired

    object[]

  • idrequired

    string (uuid) · data[].id

  • userIdrequired

    string (uuid) | null · data[].userId

  • guestEmailrequired

    string | null · data[].guestEmail

  • categoryrequired

    string · data[].category

    Ticket category, e.g. billing_dispute, technical_support, other
  • subjectrequired

    string · data[].subject

  • statusrequired

    string · data[].status

    One of open, in_progress, resolved, closed
  • relatedRouteIdrequired

    string (uuid) | null · data[].relatedRouteId

  • relatedPurchaseIdrequired

    string (uuid) | null · data[].relatedPurchaseId

  • assignedTorequired

    string (uuid) | null · data[].assignedTo

  • createdAtrequired

    string (date-time) · data[].createdAt

    ISO-8601 timestamp (UTC)
  • resolvedAtrequired

    string (date-time) | null · data[].resolvedAt

    ISO-8601 timestamp (UTC)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Open a support ticket

POST/api/v1/tickets

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

The message becomes the first entry in the thread and support is alerted.

Request body (application/json)

  • subjectrequired

    string

    max 200 chars
  • messagerequired

    string

    max 5000 chars
  • category

    string

    max 50 chars

Response 200

  • datarequired

    object

    Same fields as SupportTicket, shown earlier on this page.

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get a support ticket with its messages

GET/api/v1/tickets/{id}

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Internal staff notes are never included.

Parameters

  • idrequired

    path · string

Response 200

  • datarequired

    object

  • idrequired

    string (uuid) · data.id

  • userIdrequired

    string (uuid) | null · data.userId

  • guestEmailrequired

    string | null · data.guestEmail

  • categoryrequired

    string · data.category

    Ticket category, e.g. billing_dispute, technical_support, other
  • subjectrequired

    string · data.subject

  • statusrequired

    string · data.status

    One of open, in_progress, resolved, closed
  • relatedRouteIdrequired

    string (uuid) | null · data.relatedRouteId

  • relatedPurchaseIdrequired

    string (uuid) | null · data.relatedPurchaseId

  • assignedTorequired

    string (uuid) | null · data.assignedTo

  • createdAtrequired

    string (date-time) · data.createdAt

    ISO-8601 timestamp (UTC)
  • resolvedAtrequired

    string (date-time) | null · data.resolvedAt

    ISO-8601 timestamp (UTC)
  • messagesrequired

    object[] · data.messages

  • idrequired

    string (uuid) · data.messages[].id

  • authorIdrequired

    string (uuid) | null · data.messages[].authorId

  • messagerequired

    string · data.messages[].message

  • createdAtrequired

    string (date-time) · data.messages[].createdAt

    ISO-8601 timestamp (UTC)
  • authorName

    string | null · data.messages[].authorName

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Reply to a support ticket

POST/api/v1/tickets/{id}/messages

Access
API key. Full-access keys only; not reachable by scoped keys.
Rate limit
100 requests per second (the default)

Replying to a resolved ticket reopens it.

Parameters

  • idrequired

    path · string

Request body (application/json)

  • messagerequired

    string

    max 5000 chars

Response 200

  • datarequired

    object

  • idrequired

    string (uuid) · data.id

  • authorIdrequired

    string (uuid) | null · data.authorId

  • messagerequired

    string · data.message

  • createdAtrequired

    string (date-time) · data.createdAt

    ISO-8601 timestamp (UTC)
  • ticketIdrequired

    string (uuid) · data.ticketId

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 404NOT_FOUND: no such resource on your account.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Contact support without an account

POST/api/v1/support/tickets

Access
Key optional. A key or token personalises the answer.
Rate limit
5 requests per hour

The public contact form. When a valid credential is sent the ticket is filed on that account instead of as a guest ticket; an invalid credential is ignored, never refused.

Request body (application/json)

  • subjectrequired

    string

    max 200 chars
  • messagerequired

    string

    max 5000 chars
  • emailrequired

    string (email)

    max 254 chars

Response 200

  • datarequired

    object

  • idrequired

    string (uuid) · data.id

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 401UNAUTHORIZED: missing, invalid, expired or revoked credential.
  • 403FORBIDDEN: not allowed - a scoped key lacks the scope, or the endpoint is session-only.
  • 409CONFLICT (or a code-specific 409): the change clashes with existing state.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.