REST API

Send events directly to SignalVault. No SDK required — use any HTTP client in any language.

Base URL

https://api.signalvault.io

Authentication

All API requests require a Bearer token:

Authorization: Bearer sk_live_your_api_key

POST /v1/events

Ingest an event into SignalVault.

Event types

There are two kinds of events: ones you submit, and ones SignalVault generates internally.

TypeSubmitted byDescription
ai.requestYouSend before calling your AI provider. SignalVault evaluates rules and returns a decision.
ai.responseYouSend after your AI provider responds. SignalVault runs post-flight rules and records cost.
ai.errorYouSend if your AI provider call fails (timeout, rate limit, etc.). Logged for observability.
agent.tool_callYouOptional. Send to audit individual tool calls made by an AI agent.
policy.violationSignalVaultAutomatically created when a guardrail rule fires. Cannot be submitted directly.
budget.exceededSignalVaultAutomatically created when a cost or token budget is exceeded. Cannot be submitted directly.

Submitting a policy.violation or budget.exceeded event directly will return a 422 error. These are generated by SignalVault automatically — you never need to send them yourself.

Request body fields

FieldTypeRequiredDescription
typestringYesSee event types above
request_idstringFor ai.*Correlates request/response/error events
event_idstringNoIdempotency key — safe to retry with the same value
environmentstringNodevelopment, staging, production (default: production)
providerstringNoAI provider: openai, anthropic, mistral, etc.
modelstringNoModel name, e.g. gpt-4o
metadataobjectNoArbitrary key/value pairs (user_id, session_id, etc.)
payloadobjectNoEvent-specific data (see below)

ai.request payload

{"messages": [{"role": "user", "content": "Hello"}], "monitor_mode": false}

ai.response payload

{"output": "Hi there!", "usage": {"prompt_tokens": 10, "completion_tokens": 8}, "cost_usd": 0.0018}

Responses

The response shape depends on the event type:

Event typeResponse
ai.request Decision + violations + redactions. Use decision to decide whether to proceed with the AI call.
ai.response {"event_id": "...", "status": "recorded", "violations": []} — any post-flight violations are included.
ai.error, agent.tool_call {"event_id": "..."} — acknowledgement only.
{"event_id": "...", "decision": "allow", "violations": [], "redactions": []}

HTTP Status Codes

CodeMeaning
200Success
401Invalid or missing API key
422Invalid request body, or system-generated event type submitted directly
429Rate limited