Get Checkout Session Status
/v1/billing/checkout/{session_id}/statusPart of Billing.
Poll after returning from Stripe Checkout. Status progresses: pending_payment → provisioning → active. When active, resource_id is populated. operation_id is always null for webhook-driven provisioning and cannot be used to follow progress — poll this endpoint instead.
Authentication
Authenticate in any one of these ways — not all of them:
- API key in the
X-API-Keyheader. - Bearer token in the
Authorizationheader.
Path parameters
| Name | Type | Description |
|---|---|---|
session_idrequired | string | Session Id |
Example request
curl -X GET "https://api.robosystems.ai/v1/billing/checkout/{session_id}/status" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY"Responses
200 Successful Response
| Field | Type | Description |
|---|---|---|
statusrequired | string | Checkout status: 'pending_payment', 'provisioning', 'active', 'failed', 'canceled' |
subscription_idrequired | string | Internal subscription ID |
resource_idoptional | string | Resource ID (graph_id for both graphs and repositories) once provisioned. For repositories, this is the repository slug (e.g., 'sec') |
operation_idoptional | string | Always null. Webhook-driven provisioning passes no operation id (`_trigger_resource_provisioning` calls `run_graph_provisioning` with `operation_id=None`), so there is no SSE stream to follow — poll the status endpoint instead. Retained rather than removed because it is on a published response shape; wiring it is a feature, not a fix. |
erroroptional | string | Error message if checkout failed |
| Status | Meaning |
|---|---|
| 400 | Invalid request |
| 401 | Authentication required |
| 403 | Access denied |
| 404 | Resource not found |
| 422 | Validation Error |
| 429 | Rate limit exceeded |
| 500 | Internal server error |