body templateIDstring"base")body timeoutinteger300)body cpuCountintegermemoryMB is set, inferred automatically.body memoryMBintegercpuCount is set, inferred automatically.body burstbooleancpuCount and memoryMB are provided, they must match a platform tier.body envsobjectbody metadataobjectbody imageobjectbody snapshotstringbody webhooksobject[]sandbox.created / sandbox.ready are relayed, so you don't miss the first events.url (string, required): HTTPS endpoint.secret (string): signing secret; omit and one is generated and returned on the response (webhooks[].secret), also re-fetchable later.eventTypes (string[]): event-type allow-list (default all).POST /api/webhooks): a non-HTTPS url or unknown eventTypes is rejected with 400. Registration is otherwise best-effort — if a spec fails to register downstream, the sandbox is still created; inspect the echoed webhooks: [{ id, url, secret? }] to see what registered.body previewAuthobjecthttps://sb-<id>-p<port>.<domain> must include an Authorization: Bearer <token> (or X-OC-Preview-Token: <token>) header; missing or wrong → 401.scheme (string): must be "bearer". Reserved for HMAC/JWT later.token (string): "auto" (or omitted) → server generates a 256-bit random token. An explicit string of at least 16 characters lets you bring your own.previewAuthToken; only its SHA-256 hash is stored. Use POST /api/sandboxes/{id}/preview/rotate to mint a new one.12345678910{ "sandboxID": "sb-abc123", "status": "running", "region": "use2", "workerID": "w-use2-abc123", "previewAuthToken": "qx2sSi5IYXWBvnnRqwK9Ky_cIAI-x0Vx1bPCt0XMxsI", "webhooks": [ { "id": "whk_3f9a2c", "url": "https://app.example.com/oc-webhook", "secret": "whsec_Hk9…" } ] }