Skip to main content
POST
Propose an action for human confirmation

Authorizations

Authorization
string
header
required

A trusted agent key (bs_agent_<Name>__<secret>), shown once when you register the agent in the Console under Agents Ask → Trusted Agents. Scoped to one agent and one environment.

Body

application/json
request_id
string<uuid>
required

Agent-supplied UUID for idempotency. Re-proposing with the same request_id returns the existing card_id.

action
object
required
opaque_id
string

CANONICAL. The pairwise id this agent holds for the human, obtained once via the bind ceremony (agent/bind-session → claim → check-binding). Meaningless to any other agent. Provide exactly one of opaque_id, botshield_user_id, user_email.

Required string length: 4 - 64
botshield_user_id
string<uuid>

The user's global BotShield id. Prefer opaque_id — this key is identical across agents and can correlate a human between integrations.

user_email
string<email>
deprecated

Deprecated — use opaque_id. Email of the BotShield user to receive this proposal.

adaptive_card_payload
object

Optional Adaptive Card v1.5 JSON shown when the user expands the card. Allowlist: TextBlock, FactSet, ColumnSet, Container, Table, Image (bundled-asset only).

ttl_seconds
integer
default:600

How long the user has to respond before the proposal expires (60–86400; default 600). Out-of-range values are rejected with ttl_below_floor / ttl_above_ceiling.

Required range: 60 <= x <= 86400

Response

Action proposal queued (or replayed). NOTE: handler errors also arrive here (HTTP 200) as data.error — codes for this operation: 401, 403 (category_not_allowed), 404 (no binding for opaque_id / user not found), 422 (Adaptive Card rejected, see violations), 400 with code ttl_below_floor | ttl_above_ceiling, 500, 502 (user lookup failed).

data
object
required