Generate a metered schema draft that coexists with page-owned JSON-LD
/sites/{site_id}/pages/{page_id}/schemas/generationsschemas:generateRequires 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.
| Request | POST https://satelliteai.io/api/v1/sites/{site_id}/pages/{page_id}/schemas/generations |
| Permission | schemas:generate |
| Response | A single object: data is object. |
| Operation ID | generatePageSchema |
More context and worked examples are in the developer guide.
Example request
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
| Name | In | Type | Description |
|---|---|---|---|
site_idrequired | path | integer | ID from GET /sites. min 1 |
page_idrequired | path | integer | Page ID from this site’s GET /pages. min 1 |
Idempotency-Keyrequired | header | string | Stable 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.
| Field | Type | Description |
|---|---|---|
language | string | auto or the captured page language. Use the localized page URL for another language. default auto · max length 10 |
profile_id | integer | Optional active Schema Rules profile visible to this site and company. Invalid profiles fail instead of falling back. |
coexist_existing | boolean | Generate 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.
| Field | Type | Description |
|---|---|---|
data.id | string | Durable job ID. |
data.site_id | integer | Satellite site ID (from GET /sites). |
data.page_id | integer | Satellite page ID (from GET /sites/{site_id}/pages). |
data.status_url | string | |
data.billing | object | |
data.billing.status | string | one of: pending, succeeded, unknown |
data.billing.credits_charged | integer | Cumulative generation credits settled so far. Zero while metering is pending. |
data.billing.transaction_id | integernullable | |
data.billing.pricing | string | one of: metered_worker_usage |
Response metadata
| Field | Type | Description |
|---|---|---|
meta.replayed | boolean | |
meta.request_id | string | Request identifier; also returned in X-Request-ID. Include it in support requests. |
meta.api_version | string | API version that produced the response. |
Error responses
Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.
| HTTP | When |
|---|---|
400 | Invalid body |
401 | Invalid managed credential. |
402 | Positive company credits are required before generation starts. |
403 | schemas:generate was not granted. |
404 | Page |
409 | Idempotency key was used with a different target or options. |
429 | Managed API rate limit exceeded. |
502 | Queue acknowledgement is uncertain. Poll the existing job; do not submit a new key. |
503 | Generation service configuration or storage unavailable. |