Skip to content

POST /api/v1/auth/agent-token

Status: GA Access: token required API contract: 0.3.0 · capability 2026-09-03.1 View as Markdown Open in Claude Open in ChatGPT

Mint Agent Token

mint (or rotate) a scoped AGENT token + its contract grants.

Superuser-only. Creates (or reuses) the agent identity and REPLACES its grant pool with body.grants (default-deny — a contract not listed is inaccessible). Changing the pool or capabilities later is a grant edit, no re-mint needed. publish is granted only when listed explicitly: withhold on prod contracts by default).

Auth: Authorization: Bearer <token> required

Terminal window
curl -sS -X POST "https://entherium.duckdns.org:8443/api/v1/auth/agent-token" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"email":"agent@entherium.dev","expires_days":90,"full_name":"Partner agent","grants":[{"capabilities":["submit","launch","cancel","edit_config"],"salescontract":40}],"revoke_prior":true}'
{
"access_token": "eyJhbGciOiJIUzI1NiJ9.<payload>.<signature>",
"api_scope": "agent",
"email": "agent@entherium.dev",
"expires_in": 7776000,
"token_type": "bearer",
"user_guid": 5
}

ServiceTokenResponse — Successful Response

FieldTypeDescription
access_tokenstring
api_scopestring
emailstring
expires_ininteger
token_typestring (opt.)
user_guidinteger
ParameterInRequiredTypeDefaultConstraintsDescription
Idempotency-Keyheadernostring—uuidOptional.
FieldTypeRequiredDescription
emailstringno
expires_daysintegerno
full_namestring | nullno
grantsarray of AgentGrantSpecyes
revoke_priorbooleanno

Example:

{
"email": "agent@entherium.dev",
"expires_days": 90,
"full_name": "Partner agent",
"grants": [
{
"capabilities": [
"submit",
"launch",
"cancel",
"edit_config"
],
"salescontract": 40
}
],
"revoke_prior": true
}
CodeMeaningBody
401Missing or invalid authentication credentialsErrorResponse
409The e-mail belongs to a non-agent user; refusing to convertErrorResponse
422Validation ErrorHTTPValidationError

Every error body is {detail, code?, request_id, doc_url} — request_id is the value to quote, doc_url points at the Errors reference.