APIPlans
List Plans
List active public plans. No auth required.
Authorization
BearerAuth AuthorizationBearer <token>
Botyard API key — see /docs/authentication.
In: header
Response Body
application/json
curl -X GET "https://example.com/v1/plans"[
{
"plan_id": "string",
"name": "string",
"slug": "string",
"description": "string",
"meter_gates": [
{
"meter_key": "bot_count",
"included_units": 0,
"hard_cap": 0,
"unit_price_cents": 0
}
],
"resource_defaults": {
"property1": {
"resources": []
},
"property2": {
"resources": []
}
},
"resource_maximums": {
"property1": {
"resources": []
},
"property2": {
"resources": []
}
},
"features": [
"string"
],
"feature_set": [
"auto_suspend_opt_out"
],
"price_monthly": 0,
"price_yearly": 0,
"currency": "string",
"trial_days": 0,
"is_public": true,
"subscribable": true,
"included_ai_credit_cents": 0,
"display_order": 0,
"billing_provider_product_id": "string",
"billing_provider_yearly_product_id": "string",
"billing_provider_free_product_id": "string",
"status": "active",
"created_at": "2019-08-24T14:15:22Z",
"updated_at": "2019-08-24T14:15:22Z"
}
]{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"error_code": "string",
"errors": [
{
"pointer": "string",
"detail": "string",
"type": "string"
}
],
"trace_id": "string"
}Revoke Permission Grant
Revoke a direct grant by id. A grant id is a **global** handle, so the route's org prefix is not what contains this: the service re-derives the row's own organization and applies tenant containment plus authority over the pattern being removed. Without that, any caller reaching this endpoint could strip authority from an actor in another organization. Revocation removes authority rather than adding it, so it cannot escalate — but it is emphatically not unauthenticated, and it is audited with the same weight as a grant.
Get Plan
Get a public active plan by ID. No auth required.