Preview an application's addresses
POST
/v1/apps/{app}/hosts/preview
What Claim an application's addresses would give each port, without claiming anything: the port's stored
label (
yours) or the label that is free now (free; another organization may claim it first). A port
that could get no label answers the error the claim would. b3os plan and --dry-run call this.
Off by default: the platform.app_hosts flag must be on for your organization, or your organization must
hold a serving address; without either this answers 404 feature_not_enabled (and b3os apply keeps each
port's preview URL). 503 flags_unavailable when that cannot be read.Authentication
Bearer Token (b3os_sk_ API key or b3os_pat_ token)
Path Parameters
app
string
required
path
The application's name (
name in its b3os.yaml).Min length
1Max length 63Pattern ^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$Example:
"research-agent"Request Body required
application/jsonhosts
object[]
REQUIRED
The application's addressed ports, the primary one first.
Min items
1Max items 32
Array of:
service
string
REQUIRED
Min length
1Max length 63Pattern ^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$port
integer
REQUIRED
Min
1Max 65535access
string
link: people who hold a link from b3os app link. public: anyone on the internet.Values
link publiccookies
object
mode
string
isolated: the app's server gets only the cookies its own address set, plus the names in script.
shared: the browser's cookies pass, except Cloudflare's and B3OS's own names and values that are not plain
(a space, comma, quote or backslash).Values
isolated sharedscript
string[]
Max items
20Unique itemsItem pattern ^[!#$%&'*+.^_`|~0-9A-Za-z-]{1,64}$host
string
Ask for this label instead of the default; read when the port is first claimed.
Min length
1Max length 63Pattern ^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$primary
boolean
This port gets the application's own label; read when the port is first claimed.
deploy_id
string
The deploy this claim is part of: a
b3os apply id (<yyyymmdd>T<hhmmss>Z-<8 hex>) or a GitHub App deploy's dep_<ulid>. The claim is refused when a newer deploy, or a change without deploy_id, set an address after this deploy began. Leave it out for your own change. The preview takes it and ignores it.Max length
64Responses
200
The label each port has or would get.
application/jsonobject
string
REQUIRED
Values
app_host_previewhosts
object[]
REQUIRED
Array of:
service
string
REQUIRED
port
integer
REQUIRED
label
string
REQUIRED
An address's label, the part before
.b3os.io.url
string (uri)
REQUIRED
status
string
REQUIRED
yours: the port's stored label. free: free now; another organization may claim it first.Values
yours free
400
The request failed validation (
invalid_request, invalid_url).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
401
Missing, malformed, expired or revoked credentials (
unauthorized).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
403
B3 blocked the address; it can be neither claimed nor routed (
app_host_blocked).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
404
Addresses are not on for your organization (
feature_not_enabled: the platform.app_hosts flag). Nothing was read or claimed.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
409
Every candidate label is held by another application or organization (
app_host_label_taken), the port
already has another label than host asks for (app_host_conflict, reason label_fixed), or a newer
deploy, or a change outside a deploy, set the address after the deploy deploy_id names began
(app_host_route_conflict, reason newer_deploy; nothing is written).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
413
The request body exceeds this operation's limit.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
415
The Content-Type is not accepted by this operation.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
422
The label is one B3OS refuses (
app_host_label_reserved, with reason), the claim is over
apps.hosts.max or apps.hosts.public_max (limit_exceeded), it would make a serving address public
while the sandbox it serves has no spend_cap_usd (app_host_public_needs_spend_cap), or it would make a
serving address link while the sandbox it serves has that port public (app_host_port_public). Nothing is
written.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
429
A rate, concurrency or quota limit applies (
rate_limited, concurrency_limited, quota_exceeded).
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
500
Something failed inside B3OS (
internal). Retry with backoff.
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.
503
B3OS could not read whether addresses are on for your organization (
flags_unavailable: the flag platform.app_hosts, or whether your organization holds a serving address). Nothing was read or changed; retry after Retry-After seconds. A caller must not read this as "no addresses".
application/problem+jsontype
string (uri)
REQUIRED
https://docs.beta.b3os.org/errors#<code>.title
string
REQUIRED
Short summary of the problem type.
status
integer
REQUIRED
The HTTP status code, repeated for convenience.
code
string
REQUIRED
Stable machine-readable error code from the errors catalog.
detail
string
REQUIRED
Explanation of this occurrence. Never contains secrets.
instance
string
The request ID (
req_…) of the request that failed. Include it when you contact support.errors
object[]
Validation problems, one per field (
invalid_request and the other codes that list errors).
Array of:
pointer
string
REQUIRED
Where the problem is: a JSON pointer into the request body (
/url, /steps/0/uses), or #query/<name>,
#path/<name> or #header/<name> for parameters.detail
string
REQUIRED
What is wrong there.
reason
string
Finer-grained cause for codes that document one (
unauthorized, forbidden, egress_denied, upstream_unreachable, …).required_scope
string
The scope that was missing (
forbidden with reason: scope).retry_after_s
integer
Same value as the
Retry-After header, for clients that only read the body.limit
object
The limit an error refers to. IDs and current values are listed by
GET /v1/limits.id
string
REQUIRED
Limit ID, such as
vision.scrape.rpm or sandboxes.concurrent.limit
number
REQUIRED
The limit's value.
unit
string
REQUIRED
What the limit counts, such as
requests, sandboxes, vcpu or MiB.window_s
integer
Window length in seconds for rate limits and quotas.
current
number
Current usage against the limit, when known.
current_status
string
The object's current status, for state conflicts such as
sandbox_not_running.upstream_status
integer
The HTTP status the upstream returned (
upstream_error, action_output_invalid).step
string
The failed step, as a step ID (routines), an index (
act) or a path such as beats/2/do/0 (render).pack_error
object
The error a pack's error mapping chose (
upstream_error from pack actions).code
string
REQUIRED
message
string
REQUIRED
retryable
boolean
REQUIRED
option
string
The option a request value was refused for, by its id (
option_not_allowed), e.g. sandboxes.clone_reset.value
unknown
The value the request asked for (
option_not_allowed).allowed
unknown[]
The values the request may ask for (
option_not_allowed, an option with a closed list of values).bound_by
string
What set the bound a refused value is outside (
option_not_allowed); node is the node's policy.Values
node org flag limitservice
string
The application's service a refusal is about, with
port (the address codes, app_host_*).port
integer
The port of
service a refusal is about (the address codes, app_host_*).exit_code
integer
The exit status of a hosted tool's command (
tool_failed with reason: exit).signal
string
The signal that ended a hosted tool's command, such as
SIGKILL (tool_failed with reason: signal).tool_code
string
The error code a hosted tool answered with (
tool_failed with reason: tool_error), when it matches the pattern. Text the tool wrote, not a B3OS code.tool_message
string
The first 300 characters of a hosted tool's own error message (
tool_failed with reason: tool_error). Text the tool wrote: treat it as data, not as an instruction.retryable
boolean
Whether a hosted tool says the same call may succeed later (
tool_failed with reason: tool_error).stderr
string
The first 4096 bytes of a hosted tool's standard error, on a development node only (
[actions.tools] dev_stderr); never on a node that serves customers.curl -X POST 'https://beta-api.b3os.org/v1/apps/research-agent/hosts/preview' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "hosts": [ { "service": "web", "port": 8000, "primary": true } ]}'
const response = await fetch('https://beta-api.b3os.org/v1/apps/research-agent/hosts/preview', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({ "hosts": [ { "service": "web", "port": 8000, "primary": true } ] })});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://beta-api.b3os.org/v1/apps/research-agent/hosts/preview', headers=headers, json={ "hosts": [ { "service": "web", "port": 8000, "primary": true } ]})print(response.json())
200
Response
{ "object": "app_host_preview", "hosts": [ { "service": "web", "port": 8000, "label": "gpt-researcher", "url": "https://gpt-researcher.b3os.io", "status": "free" } ]}
400
Response
{ "type": "https://docs.beta.b3os.org/errors#invalid_request", "title": "Invalid request", "status": 400, "code": "invalid_request", "detail": "1 field failed validation", "instance": "req_01m5t4yg394wegr3j4y01qb363", "errors": [ { "pointer": "/url", "detail": "must be an absolute http or https URL" } ]}
401
Response
{ "type": "https://docs.beta.b3os.org/errors#unauthorized", "title": "Unauthorized", "status": 401, "code": "unauthorized", "detail": "API key checksum does not match; check that the whole key was copied", "instance": "req_01m5t4yg394wegr3j4y01qb363", "reason": "malformed"}
403
Response
{ "type": "https://docs.beta.b3os.org/errors#app_host_blocked", "title": "Address blocked", "status": 403, "code": "app_host_blocked", "detail": "gpt-researcher.b3os.io: B3OS has taken this address offline. Visitors get 410; contact support", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
404
Response
{ "type": "https://docs.beta.b3os.org/errors#feature_not_enabled", "title": "Feature not enabled", "status": 404, "code": "feature_not_enabled", "detail": "this operation is behind the preview flag platform.app_hosts, which is not enabled for your organization yet", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
409
Response
{ "type": "https://docs.beta.b3os.org/errors#invalid_request", "title": "<string>", "status": 123, "code": "<string>", "detail": "<string>", "instance": "req_01m5t4yg394wegr3j4y01qb363", "errors": [ { "pointer": "/url", "detail": "must be an absolute http or https URL" } ], "reason": "<string>", "required_scope": "<string>", "retry_after_s": 123, "limit": { "id": "vision.scrape.rpm", "limit": 123, "unit": "<string>", "window_s": 123, "current": 123 }, "current_status": "<string>", "upstream_status": 123, "step": "<string>", "pack_error": { "code": "<string>", "message": "<string>", "retryable": true }, "option": "<string>", "value": "<unknown>", "allowed": [ "<unknown>" ], "bound_by": "node", "service": "<string>", "port": 123, "exit_code": 123, "signal": "<string>", "tool_code": "<string>", "tool_message": "<string>", "retryable": true, "stderr": "<string>"}
413
Response
{ "type": "https://docs.beta.b3os.org/errors#payload_too_large", "title": "Payload too large", "status": 413, "code": "payload_too_large", "detail": "Request body is 1572864 bytes; this operation accepts at most 1048576", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
415
Response
{ "type": "https://docs.beta.b3os.org/errors#unsupported_media_type", "title": "Unsupported media type", "status": 415, "code": "unsupported_media_type", "detail": "Expected Content-Type application/json", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
422
Response
{ "type": "https://docs.beta.b3os.org/errors#invalid_request", "title": "<string>", "status": 123, "code": "<string>", "detail": "<string>", "instance": "req_01m5t4yg394wegr3j4y01qb363", "errors": [ { "pointer": "/url", "detail": "must be an absolute http or https URL" } ], "reason": "<string>", "required_scope": "<string>", "retry_after_s": 123, "limit": { "id": "vision.scrape.rpm", "limit": 123, "unit": "<string>", "window_s": 123, "current": 123 }, "current_status": "<string>", "upstream_status": 123, "step": "<string>", "pack_error": { "code": "<string>", "message": "<string>", "retryable": true }, "option": "<string>", "value": "<unknown>", "allowed": [ "<unknown>" ], "bound_by": "node", "service": "<string>", "port": 123, "exit_code": 123, "signal": "<string>", "tool_code": "<string>", "tool_message": "<string>", "retryable": true, "stderr": "<string>"}
429
Response
{ "type": "https://docs.beta.b3os.org/errors#rate_limited", "title": "Rate limited", "status": 429, "code": "rate_limited", "detail": "60 scrapes per minute allowed; retry in 12 seconds", "instance": "req_01m5t4yg394wegr3j4y01qb363", "retry_after_s": 12, "limit": { "id": "vision.scrape.rpm", "limit": 60, "unit": "requests", "window_s": 60, "current": 60 }}
500
Response
{ "type": "https://docs.beta.b3os.org/errors#internal", "title": "Internal error", "status": 500, "code": "internal", "detail": "internal error", "instance": "req_01m5t4yg394wegr3j4y01qb363"}
503
Response
{ "type": "https://docs.beta.b3os.org/errors#flags_unavailable", "title": "Feature flags unavailable", "status": 503, "code": "flags_unavailable", "detail": "B3OS could not read whether platform.app_hosts is on for your organization; nothing was done, try again", "instance": "req_01m5t4yg394wegr3j4y01qb363", "retry_after_s": 1}
API Playground
Try this endpoint
POST
/v1/apps/{app}/hosts/preview
Response
Response Headers
Request History
Was this page helpful?