Zingasolve API v1

The Zingasolve endpoints — publish documentation (spaces, chapters, articles, per-locale draft → publish) and run the helpdesk (tickets, support areas, FAQs) from your own systems. Authenticate with a zk_ key carrying data:read / data:write:*. Every write runs the same services the console does, so a publish gets its canonical URL and search/AI indexing, and a new ticket gets its number, SLA and auto-assignment.

Doc spaces

A space is one manual / help centre, published to its own micro-site.

GET/solve/spacesList spaces
NameInTypeReqDescription
limitqueryintegerPage size (1-200, default 50)
offsetqueryintegerRows to skip
Trial
POST/solve/spacesCreate a space

slug defaults to a slugified name and must be unique in the workspace. defaultLocale is always added to enabledLocales.

Trial
GET/solve/spaces/{space_id}Get a space
NameInTypeReqDescription
space_idpathstringyesSpace id
Trial
PATCH/solve/spaces/{space_id}Update a space

Updatable: name, description, defaultLocale, enabledLocales, visibility (public|authenticated|restricted), status (active|archived), settings.

NameInTypeReqDescription
space_idpathstringyesSpace id
Trial
DELETE/solve/spaces/{space_id}Delete a space
NameInTypeReqDescription
space_idpathstringyesSpace id
Trial

Doc chapters

Collections are the (nestable) chapters inside a space. Slugs are sibling-scoped.

GET/solve/collectionsList a space's chapters

Flat list ordered by depth then sortOrder; path + depth let you rebuild the tree.

NameInTypeReqDescription
spaceIdquerystringyesThe documentation space
limitqueryintegerPage size (1-200, default 50)
offsetqueryintegerRows to skip
Trial
POST/solve/collectionsCreate a chapter

name is stored as the space default-locale translation unless locale is given.

Trial
GET/solve/collections/{collection_id}Get a chapter
NameInTypeReqDescription
collection_idpathstringyesChapter id
Trial
PATCH/solve/collections/{collection_id}Update a chapter

Rename, re-slug, re-parent or reorder. Re-parenting recomputes path + depth.

NameInTypeReqDescription
collection_idpathstringyesChapter id
Trial
DELETE/solve/collections/{collection_id}Delete a chapter
NameInTypeReqDescription
collection_idpathstringyesChapter id
Trial

Doc articles

Articles plus their per-locale content: read the working copy, save a draft, publish an immutable version.

GET/solve/articlesList articles
NameInTypeReqDescription
spaceIdquerystringyesThe documentation space
collectionIdquerystringNarrow to one chapter
statusquerystringdraft|published|archived
qquerystringSlug substring
limitqueryintegerPage size (1-200, default 50)
offsetqueryintegerRows to skip
Trial
POST/solve/articlesCreate an article

Creates a draft shell and seeds its default-locale head. Nothing is public until you publish.

Trial
GET/solve/articles/{article_id}Get an article

Includes the per-locale heads in translations.

NameInTypeReqDescription
article_idpathstringyesArticle id
Trial
PATCH/solve/articles/{article_id}Update an article

Updatable: slug, collectionId, visibility, status (draft|published|archived), sortOrder, isReusable. Reindexes search + AI grounding.

NameInTypeReqDescription
article_idpathstringyesArticle id
Trial
DELETE/solve/articles/{article_id}Delete an article
NameInTypeReqDescription
article_idpathstringyesArticle id
Trial
GET/solve/articles/{article_id}/contentRead the working copy

The draft if there is one, else the published version; hasUnpublishedChanges says whether they differ.

NameInTypeReqDescription
article_idpathstringyesArticle id
localequerystringLanguage code (defaults to the article's)
Trial
PUT/solve/articles/{article_id}/contentSave a draft

Writes the draft slot (version 0) for one locale. Publishes nothing.

NameInTypeReqDescription
article_idpathstringyesArticle id
Trial
POST/solve/articles/{article_id}/publishPublish a version

Freezes an immutable version, mints the canonical slug (old slug → 301), reindexes search/AI and refreshes @[include] edges. Byte-identical content is deduped. locale must be enabled on the space.

NameInTypeReqDescription
article_idpathstringyesArticle id
Trial

Support areas

The departments tickets route to — SLA clocks, default priority, escalation ceiling.

GET/solve/support-domainsList support areas
Trial
POST/solve/support-domainsCreate a support area
Trial
PATCH/solve/support-domains/{domain_id}Update a support area

Partial update — only the fields you send change.

NameInTypeReqDescription
domain_idpathstringyesSupport area id
Trial
DELETE/solve/support-domains/{domain_id}Delete a support area
NameInTypeReqDescription
domain_idpathstringyesSupport area id
Trial

Tickets

Open, track and work tickets — numbering, SLA, auto-assignment and the timeline are identical to the console.

GET/solve/ticketsList tickets

status takes any ticket status or open_active; assigneeUserId=unassigned returns the queue.

NameInTypeReqDescription
statusquerystringopen|pending|on_hold|resolved|closed|open_active
domainIdquerystringOne support area
assigneeUserIdquerystringUser id, or 'unassigned'
priorityquerystringlow|normal|high|urgent
qquerystringSubject substring or ticket number
limitqueryintegerPage size (1-200, default 50)
offsetqueryintegerRows to skip
Trial
POST/solve/ticketsOpen a ticket

Numbered, SLA computed from the support area, auto-assigned, requester emailed. source defaults to api.

Trial
GET/solve/tickets/{ticket_id}Get a ticket

Includes the events timeline and, when the ticket has a thread, messages.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial
PATCH/solve/tickets/{ticket_id}Update a ticket

subject, status (open|pending|on_hold|resolved|closed), priority, domainId. Moving domain recomputes SLA and re-runs auto-assign.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial
POST/solve/tickets/{ticket_id}/assignAssign a ticket

Omit userId to let routing pick the best available agent.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial
POST/solve/tickets/{ticket_id}/escalateEscalate a ticket

Raises the level (capped at the area's maxLevel) and reassigns to higher expertise.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial
POST/solve/tickets/{ticket_id}/notesAdd a timeline note

Internal by default; isInternal: false makes it customer-visible.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial
POST/solve/tickets/{ticket_id}/replyReply to the requester

Queues an agent reply into the ticket's conversation. 400 no_conversation when the ticket has no thread.

NameInTypeReqDescription
ticket_idpathstringyesTicket id
Trial

FAQs

The curated Q&A base — suggested during ticket intake, served on the docs site, and grounding for the AI assistant.

GET/solve/faqsList FAQs
NameInTypeReqDescription
statusquerystringdraft|published
qquerystringQuestion substring
limitqueryintegerPage size (1-200, default 50)
offsetqueryintegerRows to skip
Trial
POST/solve/faqsCreate a FAQ
Trial
GET/solve/faqs/{faq_id}Get a FAQ
NameInTypeReqDescription
faq_idpathstringyesFAQ id
Trial
PATCH/solve/faqs/{faq_id}Update a FAQ

Partial update — only the fields you send change.

NameInTypeReqDescription
faq_idpathstringyesFAQ id
Trial
DELETE/solve/faqs/{faq_id}Delete a FAQ
NameInTypeReqDescription
faq_idpathstringyesFAQ id
Trial

← All APIs