CLIENT API / V1 JSON-LD RETRIEVAL AND GENERATION

Generate a metered schema draft that coexists with page-owned JSON-LD

POST/sites/{site_id}/pages/{page_id}/schemas/generationsschemas:generate

Requires schemas:generate and an explicit site grant. The page ID supplies the captured URL; arbitrary URLs and user/company IDs are not accepted. New integrations must explicitly receive this scope. A positive company credit balance is required before dispatch. Actual worker usage, including model/tool calls and the existing schema resource multiplier, is charged when recorded. No fixed generation price and no browser-user exemption or grace discount applies. No approval or production replacement occurs. Reuse the same Idempotency-Key and identical body on retries; a replay returns the same job without another dispatch. Poll the returned status_url. An uncertain dispatch is retained for reconciliation; never retry with a new key to bypass it.

RequestPOST https://satelliteai.io/api/v1/sites/{site_id}/pages/{page_id}/schemas/generations
Permissionschemas:generate
ResponseA single object: data is object.
Operation IDgeneratePageSchema

More context and worked examples are in the developer guide.

Example request

cURL · Bash
curl --fail-with-body --request POST \
  'https://satelliteai.io/api/v1/sites/123/pages/4567/schemas/generations' \
  -H 'Idempotency-Key: IDEMPOTENCY-KEY' \
  -H 'Content-Type: application/json' \
  --data '{"language":"auto","coexist_existing":true}' \
  -H "Authorization: Bearer $SATELLITE_API_KEY"

Replace the example IDs with values returned by the discovery endpoints. Example values are placeholders, not real records.

Parameters

NameInTypeDescription
site_idrequiredpathintegerID from GET /sites.
min 1
page_idrequiredpathintegerPage ID from this site’s GET /pages.
min 1
Idempotency-KeyrequiredheaderstringStable identity for this generation intent, scoped to the company and integration.
min length 16 · max length 128 · pattern ^[!-~]{16,128}$

Unknown or repeated query parameters return 400.

JSON request body

Send Content-Type: application/json. The request body is required. Fields below describe the request; response fields follow separately.

JSON request fields
FieldTypeDescription
languagestringauto or the captured page language. Use the localized page URL for another language.
default auto · max length 10
profile_idintegerOptional active Schema Rules profile visible to this site and company. Invalid profiles fail instead of falling back.
coexist_existingbooleanGenerate a complementary contribution while existing page/AEM JSON-LD stays enabled. False explicitly requests the legacy complete-graph format.
default True

Data dictionary

Generation intent recorded and a job identity returned. No generation result is approved or published.

202: Generation intent recorded and a job identity returned. No generation result is approved or published.

[] marks an array element. nullable means the value can be null; treat it as unknown, not zero. always present means the key is always included in the object.

Fields in data
FieldTypeDescription
data.idstringDurable job ID.
data.site_idintegerSatellite site ID (from GET /sites).
data.page_idintegerSatellite page ID (from GET /sites/{site_id}/pages).
data.status_urlstring
data.billingobject
data.billing.statusstring
one of: pending, succeeded, unknown
data.billing.credits_chargedintegerCumulative generation credits settled so far. Zero while metering is pending.
data.billing.transaction_idintegernullable
data.billing.pricingstring
one of: metered_worker_usage

Response metadata

Fields in meta
FieldTypeDescription
meta.replayedboolean
meta.request_idstringRequest identifier; also returned in X-Request-ID. Include it in support requests.
meta.api_versionstringAPI version that produced the response.

Error responses

Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.

HTTPWhen
400Invalid body
401Invalid managed credential.
402Positive company credits are required before generation starts.
403schemas:generate was not granted.
404Page
409Idempotency key was used with a different target or options.
429Managed API rate limit exceeded.
502Queue acknowledgement is uncertain. Poll the existing job; do not submit a new key.
503Generation service configuration or storage unavailable.