code-care
POST /v1/dev-requests
Ask for a fix (a bug, an error, a plugin, theme or code change).
Authentication
Send an API key as a bearer token. The key must carry the tickets.reply permission; a key without it is refused with 403, not 404.
Where your organisation id goes
This endpoint takes org_id as a field in the JSON body.
Your organisation id is on the API keys screen in your dashboard, beside the key itself. It is the same id in every call you make.
Try it
Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.
curl -X POST https://api.zinndigital.com/v1/dev-requests \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "title": <string>, "description": <string>, "kind": <DevRequestKind>, "access_consent": <boolean> }'Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console
Details
Opens a fix request and its support ticket. Nothing is charged: the request is quoted first (an AI draft, sent automatically only when it is at most 30 minutes, fully covered by Code Care and bills nothing; otherwise staff approve or edit it) and work starts only after the customer approves. access_consent must be true (we may log in and change files). Refused while the account is not in good standing or a fix invoice is unpaid (not_in_good_standing, dev_invoice_unpaid). Requires tickets.reply.
Request body
| Name | Type | Required | What it is |
|---|---|---|---|
title | string | Yes | — |
description | string | Yes | — |
kind | DevRequestKind | Yes | — |
site_id | string | No | — |
access_consent | boolean | Yes | — |
org_id | string | No | — |
currency | string | No | — |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
id | string | Yes | — |
reference | string | Yes | — |
org_id | string | Yes | — |
site_id | string | No | — |
ticket_id | string | No | — |
title | string | Yes | — |
description | string | No | — |
kind | DevRequestKind | Yes | — |
status | DevRequestStatus | Yes | — |
access_consent | boolean | No | — |
estimate_note | string | No | — |
estimate_source | string<ai, ai_approved, staff> | No | — |
quote | DevRequestQuote | No | — |
approved_at | string | No | — |
logged_minutes | integer | No | — |
billed_covered_minutes | integer | No | — |
billed_extra_minutes | integer | No | — |
extra_amount_minor | integer | No | — |
currency | string | No | — |
backup_at | string | No | — |
ready_at | string | No | — |
completed_at | string | No | — |
site_suspended | boolean | No | The site is suspended because this request's invoice is unpaid. |
created_at | string | Yes | — |
work_logs | object[] | Yes | — |
ai_draft | object | No | Staff only. |
flagged_large | boolean | No | Staff only. Over 2 hours. |
auto_sent | boolean | No | Staff only. |
estimated_by | string | No | Staff only. |
Errors this endpoint can return
401 · 403 · 422