Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vane.build/llms.txt

Use this file to discover all available pages before exploring further.

All endpoints require authentication. Agents are namespaced per company — the same agentId string can exist in multiple companies.

POST /v1/agents/register

Registers an agent under the authenticated company and issues its initial JWT-SVID. Uses INSERT OR REPLACE — calling this again with the same agentId updates the registration without creating a duplicate.

Request body

FieldTypeRequiredDescription
agentIdstringYesUnique identifier for this agent within the company. Embedded in the SPIFFE ID.
metadataobjectNoArbitrary JSON metadata stored with the agent record.

Response 201

FieldTypeDescription
agentIdstringThe agent identifier.
spiffeIdstringspiffe://{trustDomain}/company/{companyId}/agent/{agentId}
svidstringJWT-SVID signed with the company’s Ed25519 key. TTL: 3600 s.
registeredAtstringISO 8601 timestamp.

Error responses

StatusBodyMeaning
400{ "error": "Missing or invalid field: agentId is required" }agentId missing or not a string.

Example

curl -s -X POST http://localhost:3000/v1/agents/register \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "agentId": "researcher-1",
    "metadata": { "model": "gpt-4o", "version": "2025-01" }
  }'
{
  "agentId": "researcher-1",
  "spiffeId": "spiffe://vane.local/company/acme/agent/researcher-1",
  "svid": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImExYjJjM2Q0In0...",
  "registeredAt": "2026-01-01T00:00:00.000Z"
}

GET /v1/agents/:agentId

Returns the registration record for a specific agent. Returns 404 if the agent is not registered under the authenticated company.

Path parameters

ParameterTypeDescription
agentIdstringThe agent identifier.

Response 200

FieldTypeDescription
agentIdstringThe agent identifier.
spiffeIdstringThe agent’s SPIFFE ID.
companyIdstringThe company this agent belongs to.
registeredAtstringISO 8601 registration timestamp.
metadataobjectPresent only if metadata was set at registration.

Example

curl -s http://localhost:3000/v1/agents/researcher-1 \
  -H "Authorization: Bearer $API_KEY"
{
  "agentId": "researcher-1",
  "spiffeId": "spiffe://vane.local/company/acme/agent/researcher-1",
  "companyId": "acme",
  "registeredAt": "2026-01-01T00:00:00.000Z",
  "metadata": { "model": "gpt-4o" }
}

GET /v1/agents/:agentId/svid

Issues a fresh JWT-SVID for the specified agent. Returns 404 if the agent is not registered under the authenticated company. SVIDs are short-lived (TTL: 3600 s) and are primarily used as inputs to the RFC 8693 token exchange (POST /v1/token/exchange). For agent authentication at MCP servers, use passports instead — they carry richer claims and can be verified offline.

Path parameters

ParameterTypeDescription
agentIdstringThe agent identifier.

Response 200

FieldTypeDescription
agentIdstringThe agent identifier.
spiffeIdstringThe agent’s SPIFFE ID.
svidstringFresh JWT-SVID. TTL: 3600 s.

Example

curl -s http://localhost:3000/v1/agents/researcher-1/svid \
  -H "Authorization: Bearer $API_KEY"
{
  "agentId": "researcher-1",
  "spiffeId": "spiffe://vane.local/company/acme/agent/researcher-1",
  "svid": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImExYjJjM2Q0In0..."
}