support
POST /v1/tickets/{ticketId}/messages
Reply to a support ticket.
Authentification
Envoyez une clé API en tant que jeton du porteur. La clé doit posséder l'autorisation tickets.reply ; une clé qui ne l'a pas est refusée avec le code 403, et non 404.
Cet endpoint ne prend aucun identifiant d'organisation. Votre clé identifie déjà l'organisation à laquelle elle appartient, et la réponse y est limitée.
Essayer
Remplacez tout ce qui se trouve entre crochets par vos propres valeurs, et le espace réservé à la clé par une clé de votre tableau de bord.
curl -X POST https://api.zinndigital.com/v1/tickets/{ticketId}/messages \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "body": <string> }'Connecté ? La console d'API de votre tableau de bord saisit votre véritable ID d'organisation ainsi que votre propre clé, et exécute la requête sur l'API de production afin que vous puissiez voir la réponse réelle. Ouvrir ce point de terminaison dans la console API
Détails
Appends a customer message and returns the thread to `open`. Replying to a `solved` ticket reopens it. A **closed** ticket is rejected with a `422` whose error code is the stable `TICKET_CLOSED`, so a client can offer "reopen" without string-matching a translated message. Requires `tickets.reply`.
Paramètres
| Nom | Type | Obligatoire | Qu'est-ce que c'est |
|---|---|---|---|
ticketId (path) | Uuid | Oui | The ticket's id. |
Corps de la requête
| Nom | Type | Obligatoire | Qu'est-ce que c'est |
|---|---|---|---|
body | string | Oui | — |
Réponse
| Nom | Type | Obligatoire | Qu'est-ce que c'est |
|---|---|---|---|
id | Uuid | Oui | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
org_id | Uuid | Oui | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
subject | string | Oui | — |
status | TicketStatus | Oui | Where a ticket sits in its lifecycle. `open` = waiting on us; `pending` = waiting on the customer; `solved` = we believe it is resolved and a customer reply reopens it; `closed`… |
priority | TicketPriority | Oui | How urgent the ticket is. The customer may propose one; staff decide. |
channel | string | Oui | How the ticket reached us — `dashboard`, `api` or `staff`. Server-decided; an open string so a future channel is additive on both sides. |
site_id | object | Non | — |
invoice_id | object | Non | — |
on_behalf_of_org_id | object | Non | The **client org** a reseller opened this ticket about. Null on every ordinary ticket. ⛔ Validated as a descendant of the ticket's own org and `404`d otherwise, so it can never… |
assignee_name | object | Oui | The owning agent's display name (first name), or null while unassigned. The customer sees a **name** so they know a person owns their ticket; the agent's id and email are staff-… |
first_response_at | object | Non | — |
resolved_at | object | Non | — |
closed_at | object | Non | — |
last_message_at | object | Non | — |
reopened_count | integer | Oui | — |
message_count | integer | Oui | Customer-visible messages in the thread — internal notes are not counted. |
created_at | string | Oui | — |
updated_at | string | Oui | — |
messages | TicketMessage[] | Oui | The customer-visible thread in chronological order. |
Erreurs que cet point de terminaison peut renvoyer
401 · 403 · 404 · 422 · 429