Documentation Index
Fetch the complete documentation index at: https://docs.userepo.com/llms.txt
Use this file to discover all available pages before exploring further.
Bearer tokens
Every Repo API request requires anAuthorization header:
repo_ prefix and are issued from the console’s Developers tab. The full secret is shown once at creation time — Repo stores only a SHA-256 hash, so a lost key cannot be recovered. Mint a new one and rotate.
Two ways to mint keys
| Method | Who | When |
|---|---|---|
| Console UI | Humans with a Supabase login | First key for an org, manual rotation |
POST /v1/api-keys | An existing key with the admin action | Programmatic key creation from CI/CD or your own admin tool |
Key shape
Actor types
agent— Default. An AI agent making programmatic requests.application— A traditional application or backend service.admin— Capable of minting other keys (adminaction grants this).
allowedActions). It’s there for audit + observability.
Actions
Every action is a discrete permission a key may carry. Pass the full set when creating a key; Repo enforces them at the route level.| Action | Endpoint(s) | Purpose |
|---|---|---|
admin | /v1/api-keys (CRUD), /v1/maintenance/* | Mint/revoke keys, run maintenance jobs |
search | POST /v1/search | Vector search across the org’s memory |
context | POST /v1/context | Full Context Contract (search + citations + exclusions) |
ask | POST /v1/ask | Grounded answer generation with citations |
memory:read | GET /v1/memory-canvas | Graph view of entities + relationships |
sources:read | GET /v1/sources | List connectors |
sources:write | PATCH /v1/sources/:id | Modify connector settings (e.g. Slack channel allowlist) |
sync:read | GET /v1/sync-runs | View sync run history |
sync:write | POST /v1/sync-runs | Queue a sync run |
ingest | POST /v1/ingest | Push source documents directly (no connector required) |
Provider scopes
allowedProviders is an optional whitelist of provider IDs the key may retrieve from. Pass null for no restriction (the key sees everything the org has connected); pass an array to scope it down.
slack, google_drive, notion, gmail.
When /v1/search or /v1/context runs against a key with provider scopes, hits from excluded providers are filtered out server-side before any data leaves Repo — the key cannot bypass the scope by inspecting the response.
Rate limits
Each(api_key, action) pair has a per-minute budget — default 60 req/min, configurable per-deployment via API_RATE_LIMIT_PER_MIN. Over-limit calls return 429 with headers:
Revocation
Console keys vs. API keys
The console uses Supabase Auth tokens (theAuthorization: Bearer eyJ... from a logged-in human). API keys are for agents. Repo treats them as different actor types in the audit log so you can always distinguish “Gabriel did X” from “the support agent did X”.
Console endpoints are namespaced under /v1/console/* and never accept API keys. Agent endpoints are namespaced under /v1/* (no console prefix) and only accept API keys.