GET Read checkout and last billing address
/api/v1/account/orders/checkout
Read your last submitted billing profile, pending order and current checkout availability. This endpoint only accepts your normal verified owner session. Workspace membership and support access do not grant ordering authority.
On this page
Access and permissions
Read your last submitted billing profile, pending order and current checkout availability. This endpoint only accepts your normal verified owner session. Workspace membership and support access do not grant ordering authority.
Browser session: __Host-mb_session cookie.
Parameters and headers
| Field | Location | Type and limits | Required | Meaning |
|---|---|---|---|---|
| workspace_id | URL query | string; {"format":"uuid"} | No | Limit the list to an accessible workspace. |
Request body
No request body.
Responses
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | PackageOrderCheckout | Yes | — |
| $.account_id | string | Yes | — |
| $.address | BillingAddress | null | Yes | — |
| $.address (anyOf 1) | BillingAddress | No | International billing address. Postal code and state requirements follow the country; company is required for businesses. A supplied Tax ID must be verified by the provider before it can affect tax. |
| $.address (anyOf 1).city | string | Yes | — |
| $.address (anyOf 1).company | string | No | — |
| $.address (anyOf 1).country | string; {"maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$"} | Yes | — |
| $.address (anyOf 1).kind | string; {"enum":["personal","business"]} | Yes | — |
| $.address (anyOf 1).line1 | string | Yes | — |
| $.address (anyOf 1).line2 | string | No | — |
| $.address (anyOf 1).name | string | Yes | — |
| $.address (anyOf 1).postal_code | string; {"maxLength":32} | Yes | — |
| $.address (anyOf 1).state | string; {"maxLength":64} | No | — |
| $.address (anyOf 1).tax_id | string | No | — |
| $.address (anyOf 1).tax_id_type | string | No | — |
| $.address (anyOf 2) | null | No | — |
| string | Yes | — | |
| $.open_order | PackageOrder | null | Yes | — |
| $.open_order (anyOf 1) | PackageOrder | No | — |
| $.open_order (anyOf 1).account_email | string | Yes | — |
| $.open_order (anyOf 1).account_id | string | null | Yes | — |
| $.open_order (anyOf 1).account_id (anyOf 1) | string | No | — |
| $.open_order (anyOf 1).account_id (anyOf 2) | null | No | — |
| $.open_order (anyOf 1).activation_status | string; {"enum":["not_activated"]} | Yes | — |
| $.open_order (anyOf 1).cancelled_at | string; {"format":"date-time"} | null | Yes | — |
| $.open_order (anyOf 1).cancelled_at (anyOf 1) | string; {"format":"date-time"} | No | — |
| $.open_order (anyOf 1).cancelled_at (anyOf 2) | null | No | — |
| $.open_order (anyOf 1).created_at | string; {"format":"date-time"} | Yes | — |
| $.open_order (anyOf 1).id | string | Yes | — |
| $.open_order (anyOf 1).invoice_status | string; {"enum":["not_created"]} | Yes | — |
| $.open_order (anyOf 1).number | string | Yes | — |
| $.open_order (anyOf 1).payment_status | string; {"enum":["not_requested"]} | Yes | — |
| $.open_order (anyOf 1).revision | integer | Yes | — |
| $.open_order (anyOf 1).snapshot | PackageOrderSnapshot | Yes | — |
| $.open_order (anyOf 1).snapshot.address | BillingAddress | Yes | International billing address. Postal code and state requirements follow the country; company is required for businesses. A supplied Tax ID must be verified by the provider before it can affect tax. |
| $.open_order (anyOf 1).snapshot.address.city | string | Yes | — |
| $.open_order (anyOf 1).snapshot.address.company | string | No | — |
| $.open_order (anyOf 1).snapshot.address.country | string; {"maxLength":2,"minLength":2,"pattern":"^[A-Z]{2}$"} | Yes | — |
| $.open_order (anyOf 1).snapshot.address.kind | string; {"enum":["personal","business"]} | Yes | — |
| $.open_order (anyOf 1).snapshot.address.line1 | string | Yes | — |
| $.open_order (anyOf 1).snapshot.address.line2 | string | No | — |
| $.open_order (anyOf 1).snapshot.address.name | string | Yes | — |
| $.open_order (anyOf 1).snapshot.address.postal_code | string; {"maxLength":32} | Yes | — |
| $.open_order (anyOf 1).snapshot.address.state | string; {"maxLength":64} | No | — |
| $.open_order (anyOf 1).snapshot.address.tax_id | string | No | — |
| $.open_order (anyOf 1).snapshot.address.tax_id_type | string | No | — |
| $.open_order (anyOf 1).snapshot.billing | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown | array<object> | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[] | object | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].amount | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].tax_rate_details | object | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].tax_rate_details.country | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].tax_rate_details.percentage_decimal | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].tax_rate_details.state | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].tax_rate_details.tax_type | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].taxability_reason | string | Yes | — |
| $.open_order (anyOf 1).snapshot.breakdown[].taxable_amount | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.calculation_id | string | Yes | — |
| $.open_order (anyOf 1).snapshot.catalog_revision | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.config_version | string | Yes | — |
| $.open_order (anyOf 1).snapshot.currency | string | Yes | — |
| $.open_order (anyOf 1).snapshot.expires_at | string; {"format":"date-time"} | Yes | — |
| $.open_order (anyOf 1).snapshot.language | string | Yes | — |
| $.open_order (anyOf 1).snapshot.net_cents | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.payment_method | string | Yes | — |
| $.open_order (anyOf 1).snapshot.plan | PricingPlan | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.id | string; {"enum":["free","essentials","pro","business","enterprise"]} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.monthly_cents | integer | null; {"minimum":0,"maximum":1000000000} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.yearly_cents | integer | null; {"minimum":0,"maximum":1000000000} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.values | object | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention | PlanRetention | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.raw | integer; {"minimum":1,"maximum":30} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.minute | integer; {"minimum":1,"maximum":30} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.quarter_hour | integer; {"minimum":1,"maximum":365} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.hour | integer; {"minimum":1,"maximum":1095} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.text | integer; {"minimum":1,"maximum":7} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan.retention.logs | integer; {"minimum":1,"maximum":30} | Yes | — |
| $.open_order (anyOf 1).snapshot.plan_id | string | Yes | — |
| $.open_order (anyOf 1).snapshot.profile_revision | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.tax_cents | integer | Yes | — |
| $.open_order (anyOf 1).snapshot.tax_id_verified | boolean | Yes | — |
| $.open_order (anyOf 1).snapshot.terms | object | Yes | — |
| $.open_order (anyOf 1).snapshot.terms_version | string | Yes | — |
| $.open_order (anyOf 1).snapshot.total_cents | integer | Yes | — |
| $.open_order (anyOf 1).status | string; {"enum":["received","cancelled"]} | Yes | — |
| $.open_order (anyOf 2) | null | No | — |
| $.profile_revision | integer | Yes | — |
| $.ready | boolean | Yes | — |
| $.terms | object | Yes | — |
| $.terms.body | string | Yes | — |
| $.terms.renewal | string | Yes | — |
| $.terms_version | string | Yes | — |
{
"account_id": "00000000-0000-4000-8000-000000000002",
"email": "owner@example.test",
"ready": false,
"profile_revision": 0,
"address": null,
"open_order": null,
"terms": {
"body": "Example order terms for this API response: the selected contract starts upon later activation after confirmed payment. Publish complete terms before accepting real orders.",
"renewal": "Example: monthly term, automatic renewal according to the accepted conditions."
},
"terms_version": "0000000000000000000000000000000000000000000000000000000000000000"
}| Stable error codes |
|---|
| unauthorized |
| invalid_credential |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 401,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| order_forbidden |
| csrf |
| csrf_failed |
| invalid_origin |
| owner_required |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 403,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| order_not_found |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 404,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| session_context_changed |
| quote_pending |
| order_conflict |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 409,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| invalid_order |
| tax_id_unverified |
| tax_region_unavailable |
| invalid_cursor |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 422,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| tax_rate_limited |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 429,
"title": "Demo error",
"type": "about:blank"
}| Stable error codes |
|---|
| ordering_unavailable |
| tax_unavailable |
| Header | Type and limits | Meaning |
|---|---|---|
| Cache-Control | string; {"pattern":"(?:^|,\\s*)no-store(?:,|$)"} | Private API responses prohibit storage. Public OAuth metadata is cached for 300 seconds; live streams additionally prohibit transformation. |
| Content-Language | string; {"enum":["en","de"]} | Language of human-readable response text, resolved from Accept-Language or the documented browser preference. Technical codes and identifiers remain stable. |
| Referrer-Policy | JSON; {"enum":["strict-origin-when-cross-origin","no-referrer"]} | The default referrer policy is strict-origin-when-cross-origin. Provider-login responses use no-referrer to protect login parameters. |
| Retry-After | string; {"pattern":"^[0-9]+$"} | Seconds before retry. Preserve supported idempotency identifiers and respect the operation’s mutation semantics. |
| Vary | string | Responses vary by Accept-Language; browser-rendered responses can also vary by the preference cookie. |
| X-Content-Type-Options | JSON; {"const":"nosniff"} | The browser must use the declared content type. |
| X-Frame-Options | JSON; {"const":"DENY"} | The response must not be embedded in a frame. |
| X-Request-ID | string | Server-generated request identifier. Include this when reporting an error; inbound values are not trusted. |
application/problem+json
| Field | Type and limits | Required | Meaning |
|---|---|---|---|
| $ | Problem | Yes | — |
| $.code | string | Yes | Stable machine-readable error code |
| $.detail | string | Yes | Short localized explanation without internal error details |
| $.instance | string | Yes | Unique relative identifier /api/v1/requests/{request_id}; not a retrievable resource |
| $.message | string | Yes | Temporarily identical to detail for existing clients |
| $.message_key | string | Yes | Stable translation key for changing the displayed language without another request |
| $.message_params | object; {"additionalProperties":true} | Yes | Named, safely rendered message parameters; never arbitrary HTML |
| $.request_id | string; {"pattern":"^[0-9a-f]{32}$"} | Yes | Server-generated diagnostic identifier. It contains no login token or credential. |
| $.status | integer; {"maximum":599,"minimum":400} | Yes | — |
| $.title | string | Yes | Localized HTTP status title |
| $.type | string; {"const":"about:blank"} | Yes | — |
{
"code": "demo",
"detail": "Demo error detail; inspect the documented code.",
"instance": "demo",
"message": "Demo error detail; inspect the documented code.",
"message_key": "errors.requestFailed",
"message_params": {},
"request_id": "00000000000000000000000000000000",
"status": 503,
"title": "Demo error",
"type": "about:blank"
}Retries and asynchronous work
This change does not have a general retry guarantee. If the response is unclear, read the affected resource before trying again. Follow Retry-After waiting times and request new sign-in or action codes when they expire.
Request examples
Replace demo IDs, timestamps and placeholders with your own values. For a retry, keep the same IDs, time and content. These examples do not run requests on this page.
Keep login links, codes, cookies and keys private. Do not print them in logs or share them in support requests.
curl --request GET --cookie '__Host-mb_session=<session>' --header 'Origin: https://metribeacon.com' --header 'X-CSRF-Token: <csrf>' --header 'X-MetriBeacon-Session-Context: <context>' --header 'Content-Type: application/json' --header 'Idempotency-Key: 00000000-0000-4000-8000-000000000002' 'https://metribeacon.com/api/v1/account/orders/checkout'import requests
response = requests.request('GET', 'https://metribeacon.com/api/v1/account/orders/checkout', cookies={'__Host-mb_session': '<session>'}, headers={'Origin': 'https://metribeacon.com', 'X-CSRF-Token': '<csrf>', 'X-MetriBeacon-Session-Context': '<context>', 'Idempotency-Key': '00000000-0000-4000-8000-000000000002'}, json=None)
response.raise_for_status()const response = await fetch('/api/v1/account/orders/checkout', {method: 'GET', credentials: 'same-origin', headers: {'Content-Type': 'application/json', 'X-CSRF-Token': '<csrf>', 'X-MetriBeacon-Session-Context': '<context>', 'Idempotency-Key': '00000000-0000-4000-8000-000000000002'}, });package main
import (
"net/http"
"strings"
)
func main() {
req, _ := http.NewRequest("GET", "https://metribeacon.com/api/v1/account/orders/checkout", strings.NewReader(""))
req.Header.Set("Cookie", "__Host-mb_session=<session>")
req.Header.Set("Origin", "https://metribeacon.com")
req.Header.Set("X-CSRF-Token", "<csrf>")
req.Header.Set("X-MetriBeacon-Session-Context", "<context>")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Idempotency-Key", "00000000-0000-4000-8000-000000000002")
response, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer response.Body.Close()
}
Related guides
- HTTP API, OAuth and MCP
Find the user API endpoints, their permissions, fields, examples and response formats.
- GET List package orders
List orders with status, plan and text filters and cursor pagination of 50 rows. Customer sessions see only their own orders; operator sessions on the operator endpoint see all accounts. Summaries exclude billing addresses and full terms.
- POST Place a package order
Submit an unexpired quote after accepting its exact terms version. Use a new UUID Idempotency-Key for one submission and reuse it on manual retries after an uncertain response. The same key with different content is rejected. There is at most one pending order per account. An encrypted outbox sends the receipt; the billing profile updates only after successful submission. Orders preserve immutable prices, tax, address and terms. Invoice, payment and activation remain pending for the later NextOffice integration. Existing package limits and retention stay unchanged.
- POST Calculate order price and tax
Explicitly calculate a final price from the current net catalog price and billing address. Tax is calculated with Stripe Tax; unsupported locations, missing configuration and unverified Tax IDs block checkout. Quotes last at most 30 minutes, bind all commercial choices and are reused for identical requests within the account. Limits: 10 provider attempts per account/hour and 200/day globally. No payment, invoice, subscription, tax transaction or package activation is created.