Skip to content

Launch internal API ​

Internal only

These routes belong to spark_launch and are reached only through the backend. The browser calls /launch/* (client) or /system/launch/* (staff) on the backend; the backend checks the session and permission, then forwards to the internal path below with a service token. Every error answers { reason }; anything unmatched under /internal answers 404 { reason: "not_found" }.

Mounts ​

Browser path (backend)Internal mountScope
/launch/*/internal/launchorg (the token's organization only)
/launch/content/*/internal/contenteither
/system/launch/*/internal/system/launchessystem (staff)
/system/launch/content/*/internal/system/contentsystem
(service only)/internal/launches/:orgId/readinessspark-flows, or backend system scope
(none)/healthpublic liveness check, no data

CELL below stands for /cells/:criterion/:target.

Client routes (org scope) ​

Method & pathPurposePermission
GET /viewThe full readiness view: stages, cells, guides, history, readiness summarylaunch.read
GET /setupSetup state and proposed primary assets (rolling out)launch.read
PUT /setupSave country, business type, platforms, primary assets (rolling out)launch.write
POST CELL/claim"I've done it — check now": re-checks api cells at once, sends others to Spark reviewlaunch.write
POST CELL/assist"Ask Spark to do it"launch.write
GET /identity · PUT /identityRead or save the business identitylaunch.read · launch.write
POST /identity/draft-descriptionsAI draft of a description for a platform and languagelaunch.write
GET /brand-kit · PUT /brand-kitRead or save the brand kitlaunch.read · launch.write
GET /brand-kit/exportLogo or cover exported in a platform's sizelaunch.read
GET /documentsList verification documentsverification.documents (else 404)
POST /documentsUpload a document (consent required)verification.documents + launch.write
GET /documents/:id/downloadDownload (decrypts, writes an access-log entry)verification.documents
DELETE /documents/:idDelete a documentverification.documents + launch.write

Staff routes (system scope) ​

Method & pathPurpose
GET /All-clients overview list, with filters
GET /summaryTotals and most common missing criteria across clients
POST /Start a launch for an organization
POST /ensureCreate a launch if none exists (idempotent; used when a subscription becomes active) (rolling out)
GET /:orgId/viewThe same view as the client, plus staff-only blocks
GET /:orgId/assetsConnected assets to choose primary assets from
PUT /:orgId/settingsChange platforms, primary assets, business type, owner
POST /:orgId + CELL/confirmSet a cell's status; done needs an evidence file
POST /:orgId + CELL/noteAdd a staff-only note
POST /:orgId/check-nowRun all api checks now
POST /:orgId/flows-overrideRecord (or clear) a written reason to let flows run before the launch is ready
POST /:orgId/offboardMark the client offboarded (starts the 90-day document retention clock)
/:orgId/identity, /:orgId/brand-kit, /:orgId/documents…Same identity routes as the client
GET /:orgId/documents/access-logDocument access log (system only)
POST /:orgId/evidenceUpload a staff evidence file (system only)

Content routes ​

Method & pathPurposeScope
GET /languagesSupported languageseither
POST /resolveResolve content keys to text in a languageeither
POST /uiTranslate a UI message catalogueorg
GET /pendingTexts awaiting review, with the English textsystem
PUT /:key/:langMark a text reviewed (or correct it)system

Readiness for flows ​

GET /internal/launches/:orgId/readiness returns a ReadinessSummary (percent, counts, readyToLaunch, missingRequired, etaDays, flowsOverride). With no launch it returns an empty summary with reason: "no_launch"; before setup, reason: "launch_setup_required".

Spark help center. Questions? Email info@sparkautoflow.com.