A valid request URL is required to generate request examples{
"data": {
"id": "pp_demo_us",
"version": 1,
"name": "US fixed egress IP",
"country_code": "US",
"duration_seconds": 2592000,
"renewal_mode": "manual",
"availability": "available",
"price": {
"currency": "USD",
"subtotal_amount_minor": 1200,
"tax_status": "included",
"tax_amount_minor": 0,
"total_amount_minor": 1200,
"price_reference": "price_demo_fixed",
"tax_behavior": "inclusive",
"configured_price_amount_minor": 1200
},
"sales_policy_version": "policy_demo_1",
"capability_policy_version": "cap_demo_1",
"allowed_actions": [
{
"action": "create_quote",
"allowed": true,
"reason_code": null,
"message": null
}
]
},
"snapshot": {
"freshness": "fresh",
"observed_at": "2026-10-01T00:00:00Z",
"served_at": "2026-10-01T00:00:00Z",
"message": null
},
"request_id": "req_demo_1"
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "rate_limited",
"message": "<string>"
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}Read a managed Proxy product
Requires a first-party interactive organization session with devices:read. Financial commands require an administrator and the configured checkout step-up policy. Network commands also require devices:act, current device authority and explicit consent. New purchase/connection commands require current admission. No credentials are returned. A deployment without the durable composition returns capability_unavailable (422). Renewal, order target/delivery edits, operation resume and event feeds are not available. Preserve command identity after an uncertain reply and read the original order or operation.
Hosted deployments only. A local checkout does not mount this route, so calling it there is a 404.
A valid request URL is required to generate request examples{
"data": {
"id": "pp_demo_us",
"version": 1,
"name": "US fixed egress IP",
"country_code": "US",
"duration_seconds": 2592000,
"renewal_mode": "manual",
"availability": "available",
"price": {
"currency": "USD",
"subtotal_amount_minor": 1200,
"tax_status": "included",
"tax_amount_minor": 0,
"total_amount_minor": 1200,
"price_reference": "price_demo_fixed",
"tax_behavior": "inclusive",
"configured_price_amount_minor": 1200
},
"sales_policy_version": "policy_demo_1",
"capability_policy_version": "cap_demo_1",
"allowed_actions": [
{
"action": "create_quote",
"allowed": true,
"reason_code": null,
"message": null
}
]
},
"snapshot": {
"freshness": "fresh",
"observed_at": "2026-10-01T00:00:00Z",
"served_at": "2026-10-01T00:00:00Z",
"message": null
},
"request_id": "req_demo_1"
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}{
"error": {
"code": "rate_limited",
"message": "<string>"
}
}{
"error": {
"code": "version_conflict",
"message": "The device or resource changed. Refresh its status before confirming again.",
"request_id": "req_demo_2",
"details": {
"retryable": false,
"recovery_action": "refresh_and_confirm",
"resource_versions": {
"px_demo_1": 8
},
"device_versions": {
"dev_demo_a": 13,
"dev_demo_b": 4
}
}
}
}Authorizations
The control surface credential. Send Authorization: Bearer <token>.
Two kinds of token are accepted and they are told apart by shape, not by a separate header. A token beginning pbk_ is an org scoped API key, whose public half and secret half are generated together and of which only a hash of the secret is ever stored; anything else is treated as an OAuth 2.1 access token and verified against the authorization server's keys.
Both resolve to the same context: an org, a principal and a set of scopes. Nothing downstream branches on which channel you used, with one deliberate exception, key management, which requires a signed-in person so that a key can never mint another key.
Scopes are enforced when MCP tools are REGISTERED rather than when they are called, so a tool your credential cannot use is absent from tools/list rather than refused mid gesture.
Path Parameters
Opaque organization-scoped identifier.
Response
Authorized current projection.
Show child attributes
Show child attributes
{
"id": "pp_demo_us",
"version": 1,
"name": "US fixed egress IP",
"country_code": "US",
"duration_seconds": 2592000,
"renewal_mode": "manual",
"availability": "available",
"price": {
"currency": "USD",
"subtotal_amount_minor": 1200,
"tax_status": "included",
"tax_amount_minor": 0,
"total_amount_minor": 1200,
"price_reference": "price_demo_fixed",
"tax_behavior": "inclusive",
"configured_price_amount_minor": 1200
},
"sales_policy_version": "policy_demo_1",
"capability_policy_version": "cap_demo_1",
"allowed_actions": [
{
"action": "create_quote",
"allowed": true,
"reason_code": null,
"message": null
}
],
"expiry_disclosure": {
"version": "expiry_default_v1",
"strategy": "restore_default_network",
"text": "Your service period starts when your Proxy is ready. It does not renew automatically. When the service period ends, the Proxy expires. If it is connected to a device, PhoneBase will restore that device's default network and remove the managed Proxy credentials. This may interrupt network connections. Buying a Proxy without connecting it does not change any device's network. Connecting it later requires a separate confirmation and a supported device.",
"digest": "340e5404c95251853977db6f6a966ff51c13442b340de5bfada7a0470503cd64"
}
}
Show child attributes
Show child attributes
Opaque organization-bound identifier.
1 - 128^[A-Za-z0-9][A-Za-z0-9_-]*$