Read this integration's generation and reviewed draft
/sites/{site_id}/pages/{page_id}/schemas/generations/{job_id}schemas:generateRequires schemas:generate. Only the originating integration, company, site and page can read this generation. No new capture or model calls occur. Terminal jobs reconcile their persisted cumulative worker usage idempotently. Insufficient credits return 402 with X-Credits-Required; top up then poll the same job. A succeeded job exposes its draft only after billing settles. This is a draft handoff, not approval to publish. AEM must keep the captured page-owned schema enabled when applying a complementary graph. Existing approved production schema endpoints and legacy integrations retain their existing approval behavior. A changed page URL does not alter this generation's captured URL.
| Request | GET https://satelliteai.io/api/v1/sites/{site_id}/pages/{page_id}/schemas/generations/{job_id} |
| Permission | schemas:generate |
| Response | A single object: data is object. |
| Operation ID | getPageSchemaGeneration |
More context and worked examples are in the developer guide.
Example request
curl --fail-with-body \
'https://satelliteai.io/api/v1/sites/123/pages/4567/schemas/generations/JOB_ID' \
-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 |
job_idrequired | path | string |
Unknown or repeated query parameters return 400.
Data dictionary
Stored status, metered billing, and a reviewed draft when available. The read itself is free.
[] 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.job | object | |
data.job.id | string | Satellite identifier for this record. |
data.job.status | string | one of: accepted, queued, running, succeeded, failed, cancelled, cancel_requested, unknown |
data.job.result_links | array of string | |
data.billing | object | |
data.billing.status | string | one of: pending, succeeded, unknown |
data.billing.credits_charged | integer | Cumulative generation charge |
data.billing.transaction_id | integernullable | |
data.billing.pricing | string | one of: metered_worker_usage |
data.schema | objectnullable | |
data.schema.id | integer | Satellite identifier for this record. |
data.schema.url | string | URL captured for this generation. |
data.schema.status | string | one of: pending_approval, approved, rejected |
data.schema.is_production | boolean | |
data.schema.language | string | |
data.schema.revision_number | integer | |
data.schema.json_ld | array of object | |
data.schema.generation | object | Source and graph hashes |
data.schema.validation | object | Deterministic and independent per-rule review results and warnings. |
Response metadata
| Field | Type | Description |
|---|---|---|
meta.request_id | stringalways present | Request identifier; also returned in X-Request-ID. Include it in support requests. |
meta.api_version | stringalways present | API version that produced the response. one of: v1 |
meta.limit | integer | Maximum records per page applied to this request. min 1 · max 100 |
meta.has_more | boolean | True when another page is available. |
meta.next_cursor | stringnullable | Opaque cursor for the next page; send as cursor. Null on the last page. |
meta.availability | string | available when stored data exists; not_available when it does not. one of: available, not_available |
meta.billing | object | Present for paid live SERP requests; replayed receipts describe the original debit, not an additional charge. |
meta.billing.operation | stringalways present | one of: client_api_serp_refresh |
meta.billing.credits_charged | integeralways present | min 0 |
meta.billing.transaction_id | integeralways present | |
meta.billing.replayed | booleanalways present |
Error responses
Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.
| HTTP | When |
|---|---|
401 | Invalid managed credential. |
402 | Top up company credits to settle this generation's actual worker usage. |
403 | schemas:generate was not granted. |
404 | Generation is not owned by this integration |
409 | Recorded usage requires reconciliation. |
429 | Managed API rate limit exceeded. |
503 | Storage or metering unavailable. |