Eden REST API
LLM And Agent APIs
/api/v1These APIs cover AI Orchestration chat, tool execution, approvals, autonomous agents, A2A delegation, the LLM gateway, and OpenAI-compatible proxy routes.
Route Map
Chat And Tool Execution
| Method | Route | Purpose |
|---|---|---|
| POST | /api/v1/llm/chat | Start or continue a chat turn. |
| POST | /api/v1/llm/chat/stream | Stream chat output. |
| POST | /api/v1/llm/chat/cancel | Cancel an active chat. |
| POST | /api/v1/llm/chat/tool-decision | Submit an operator tool approval decision. |
| POST | /api/v1/llm/chat/tool-result | Submit a tool result. |
| POST | /api/v1/llm/chat/tool-form-submit | Submit a secure form result. |
| GET | /api/v1/llm/orchestration/status | Return orchestration runtime status. |
| GET | /api/v1/llm/secure-forms/{form_id} | Return a secure form specification. |
Approvals
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/approvals | List pending approvals. |
| POST | /api/v1/llm/approvals/{approval_id}/approve | Approve a pending request. |
| POST | /api/v1/llm/approvals/{approval_id}/reject | Reject a pending request. |
| POST | /api/v1/llm/approvals/{approval_id}/delegate | Delegate approval to another principal. |
Agents And A2A
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/agents | List agents. |
| POST | /api/v1/llm/agents | Create an agent. |
| GET | /api/v1/llm/agents/{agent_id} | Get an agent. |
| GET | /api/v1/llm/agents/{agent_id}/status | Get agent status. |
| PATCH | /api/v1/llm/agents/{agent_id}/status | Update agent status. |
| GET | /api/v1/llm/agents/{agent_id}/runs | List agent runs. |
| GET | /api/v1/llm/agents/{agent_id}/runs/{run_id}/logs | Return agent run logs. |
| GET | /api/v1/llm/agents/{agent_id}/metrics | Return agent metrics. |
| GET | /api/v1/llm/agents/metrics/summary | Return organization agent metrics. |
| GET | /api/v1/llm/agents/{agent_id}/card | Return an A2A agent card. |
| POST | /api/v1/llm/agents/{agent_id}/card | Upsert an A2A agent card. |
| POST | /api/v1/llm/a2a/delegate | Delegate a task through A2A. |
| GET | /api/v1/llm/a2a/tasks/{task_id} | Return A2A task status. |
The repository also ships Production Feature Agent blueprints that compile their prompts, built-in skills, schedule, service identity, and Eden-only tool scope into ordinary POST /api/v1/llm/agents requests. They use these same lifecycle, run, log, metrics, and A2A routes.
Investigation Runs
| Method | Route | Purpose |
|---|---|---|
| POST | /api/v1/llm/agents/investigate | Start an investigation run. |
| GET | /api/v1/llm/agents/investigate/{run_id}/status | Return investigation status. |
| GET | /api/v1/llm/agents/investigate/{run_id}/evidence | Return investigation evidence. |
Agent Gateway
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/agents/gateway/connections | List gateway connections. |
| POST | /api/v1/llm/agents/gateway/connections | Register a gateway connection. |
| POST | /api/v1/llm/agents/gateway/connections/{session_id}/heartbeat | Record connection heartbeat. |
| POST | /api/v1/llm/agents/gateway/connections/{session_id}/usage | Record connection usage. |
| POST | /api/v1/llm/agents/gateway/connections/{session_id}/drain | Mark a connection draining. |
| DELETE | /api/v1/llm/agents/gateway/connections/{session_id} | Disconnect a session. |
| GET | /api/v1/llm/agents/gateway/usage | List gateway usage. |
| GET | /api/v1/llm/agents/{agent_id}/route | Resolve agent routing. |
Gateway Governance And Proxy
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/gateway/dashboard | Return gateway dashboard data. |
| GET | /api/v1/llm/gateway/requests | Return gateway request history. |
| GET | /api/v1/llm/gateway/traces | Return gateway traces. |
| GET | /api/v1/llm/gateway/snapshot | Return gateway control-plane snapshot. |
| GET | /api/v1/llm/gateway/api-keys | List gateway API keys. |
| POST | /api/v1/llm/gateway/api-keys | Create a gateway API key. |
| PATCH | /api/v1/llm/gateway/api-keys/{key_id} | Update a gateway API key. |
| DELETE | /api/v1/llm/gateway/api-keys/{key_id} | Delete a gateway API key. |
| GET | /api/v1/llm/pii/dictionary | Return organization PII dictionary. |
| PUT | /api/v1/llm/pii/dictionary | Replace organization PII dictionary. |
| POST | /api/v1/llm/pii/redact | Redact UTF-8 text or extracted document text without invoking a model. |
| GET | /api/v1/llm/governance/content-policy-profiles | List reusable content policy profiles. |
| PUT | /api/v1/llm/governance/content-policy-profiles | Create or update a content policy profile. |
| GET | /api/v1/llm/governance/content-policy-profiles/{profile_uuid} | Get one content policy profile. |
| DELETE | /api/v1/llm/governance/content-policy-profiles/{profile_uuid} | Delete a content policy profile. |
| GET | /api/v1/llm/governance/policy-bindings | List policy bindings. |
| PUT | /api/v1/llm/governance/policy-bindings | Create or update a policy binding. |
| GET | /api/v1/llm/governance/policy-bindings/{binding_uuid} | Get one policy binding. |
| DELETE | /api/v1/llm/governance/policy-bindings/{binding_uuid} | Delete a policy binding. |
| GET | /api/v1/llm/governance/access-boundaries | List access boundaries. |
| PUT | /api/v1/llm/governance/access-boundaries | Create or update an access boundary. |
| GET | /api/v1/llm/governance/access-boundaries/{boundary_uuid} | Get one access boundary. |
| DELETE | /api/v1/llm/governance/access-boundaries/{boundary_uuid} | Delete an access boundary. |
| GET | /api/v1/llm/governance/exports | List promptless governance exports. |
| POST | /api/v1/llm/governance/exports | Create a promptless governance export. |
| POST | /api/v1/llm/governance/exports/from-history | Build a promptless export from authorized retained history. |
| GET | /api/v1/llm/governance/exports/{export_uuid} | Get one governance export. |
| GET | /api/v1/llm/governance/lineage | List promptless lineage events. |
| POST | /api/v1/llm/governance/lineage | Create a lineage event. |
| GET | /api/v1/llm/governance/lineage/{lineage_uuid} | Get one lineage event. |
| GET | /api/v1/llm/governance/replay-jobs | List promptless replay jobs. |
| PUT | /api/v1/llm/governance/replay-jobs | Create or update a replay job. |
| GET | /api/v1/llm/governance/replay-jobs/{replay_job_uuid} | Get one replay job. |
| DELETE | /api/v1/llm/governance/replay-jobs/{replay_job_uuid} | Delete a replay job. |
| GET | /api/v1/llm/governance/feature-records/{feature_kind} | List promptless feature records for a feature kind. |
| PUT | /api/v1/llm/governance/feature-records/{feature_kind} | Create or update a feature record. |
| GET | /api/v1/llm/governance/feature-records/{feature_kind}/{record_uuid} | Get one feature record. |
| DELETE | /api/v1/llm/governance/feature-records/{feature_kind}/{record_uuid} | Delete a feature record. |
| POST | /api/v1/llm/governance/feature-records/approval-request/{record_uuid}/approve | Approve a pending approval-request record. |
| POST | /api/v1/llm/governance/feature-records/approval-request/{record_uuid}/reject | Reject a pending approval-request record. |
OpenAI-compatible proxy routes are mounted separately:
| Method | Route | Purpose |
|---|---|---|
| POST | /proxy/v1/chat/completions | OpenAI-compatible chat completions. |
| POST | /proxy/v1/responses | OpenAI-compatible responses. |
| GET | /proxy/v1/models | OpenAI-compatible model listing. |
Gateway Key Governance Configuration
Gateway key create and update requests can include built-in policy fields, key-specific custom terms, and template-backed lookup configuration.
{
"name": "document-summary-gateway",
"endpoint_id": "local-ollama",
"model_allowlist": ["llama3.1"],
"custom_pii_terms": [
{
"term": "SIU-INV-4419",
"label": "investigation_id",
"action": "redact"
}
],
"pii_lookup_templates": [
{
"template_id": "lookup-customer-account-pii",
"input_fields": [
{
"name": "account_id",
"source": "user_message_regex",
"pattern": "(?i)account(?: id)?[:# ]+(?P<value>[A-Z0-9-]+)",
"required": true,
"value_type": "string"
}
],
"records_path": "",
"redaction_fields": [
{
"path": "/full_name",
"label": "customer",
"action": "redact"
}
],
"max_rows": 1,
"error_mode": "block"
}
],
"work_metadata": {
"workflow": "document_summary"
}
}pii_lookup_templates references saved Gateway Read templates. Lookup-derived values are request-scoped and are not persisted back into organization or key dictionaries. Telemetry records safe identifiers, statuses, and counts only.
Governance Feature Kinds
The generic feature-record API accepts these feature kinds:
| Feature kind | Use it for |
|---|---|
policy_simulation | Promptless previews of stored content policies and access boundaries against safe request metadata. |
approval_request | Human approval or attestation records with guarded approve/reject transitions. |
evidence_pack_template | Reusable promptless export templates. |
entitlement_sync_job | IdP, SCIM, or import sync metadata for auth-group membership. |
resource_control | Promptless resource labels and allowed-group controls. |
model_eval_job | Model evaluation or drift job metadata. |
data_quality_check | Endpoint or template quality/provenance checks. |
dashboard_view | Curated dashboard-view records over safe telemetry sources. |
dlp_scan | DLP scan metadata that reuses content profiles and safe counts. |
Configuration And Catalogs
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/assistants | List assistants. |
| GET | /api/v1/llm/system-prompts | List system prompts. |
| GET | /api/v1/llm/skills | List skills. |
| GET | /api/v1/llm/endpoints | List chat endpoints. |
| GET | /api/v1/llm/recipes | List recipes. |
| GET | /api/v1/llm/marketplace/search | Search marketplace skills. |
| GET | /api/v1/llm/tools/endpoints | List tool endpoints. |
| POST | /api/v1/llm/tools/endpoints | Register a tool endpoint. |
| DELETE | /api/v1/llm/tools/endpoints/{endpoint_id} | Delete a tool endpoint. |
| GET | /api/v1/llm/tools | List tools. |
| GET | /api/v1/llm/pricing | Return LLM pricing data. |
| GET | /api/v1/llm/cost/timeseries | Return cost time series. |
| GET | /api/v1/llm/cost/work-metadata | Return cost metadata. |
Credentials
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/credentials | List credentials. |
| POST | /api/v1/llm/credentials | Create a credential. |
| PATCH | /api/v1/llm/credentials/{credential_id} | Update a credential. |
| DELETE | /api/v1/llm/credentials/{credential_id} | Delete a credential. |
Per-user database credentials are mounted outside the LLM API:
| Method | Route | Purpose |
|---|---|---|
| PUT | /api/v1/endpoints/{endpoint_uuid}/credentials/database | Create or replace the caller's database credential. |
| GET | /api/v1/endpoints/{endpoint_uuid}/credentials/database | Get password-free credential metadata. |
| DELETE | /api/v1/endpoints/{endpoint_uuid}/credentials/database | Delete the caller's database credential. |
| GET | /api/v1/endpoints/{endpoint_uuid}/credentials/database/users | List password-free credential inventory for an endpoint auditor. |
| POST | /api/v1/endpoints/{endpoint_uuid}/credentials/database/rotations | Start or replay a durable credential rotation. |
| GET | /api/v1/endpoints/{endpoint_uuid}/credentials/database/rotations/{rotation_id} | Read durable rotation status. |
Credential read and rotation responses never return a password and carry Cache-Control: no-store. Rotation activates a replacement credential already provisioned on the target database; Eden does not change the target account. Clients should reuse a stable rotation_id when retrying so DBOS returns the same durable workflow instead of scheduling another rotation.
See Per-User Database Credentials And Rotation for the complete registration and rotation workflow.
Projects, Conversations, And Notifications
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/llm/conversations | List conversations. |
| GET | /api/v1/llm/conversations/{conversation_id} | Get conversation detail. |
| DELETE | /api/v1/llm/conversations/{conversation_id} | Delete a conversation. |
| GET | /api/v1/llm/conversations/{conversation_id}/settings | Get conversation settings. |
| PATCH | /api/v1/llm/conversations/{conversation_id}/settings | Update conversation settings. |
| PATCH | /api/v1/llm/conversations/{conversation_id}/project | Assign conversation to a project. |
| GET | /api/v1/llm/projects | List projects. |
| POST | /api/v1/llm/projects | Create a project. |
| DELETE | /api/v1/llm/projects/{project_uuid} | Delete a project. |
| GET | /api/v1/llm/notifications | List agent notifications. |
| POST | /api/v1/llm/notifications/{notification_id}/read | Mark an agent notification read. |
Admin LLM APIs
| Method | Route | Purpose |
|---|---|---|
| GET | /api/v1/admin/llm/system-prompts | List admin system prompts. |
| PUT | /api/v1/admin/llm/system-prompts/{prompt_key} | Upsert an admin system prompt. |
| GET | /api/v1/admin/llm/skills | List admin skills. |
| POST | /api/v1/admin/llm/skills | Create an admin skill. |
| PATCH | /api/v1/admin/llm/skills/{skill_id} | Update an admin skill. |
| DELETE | /api/v1/admin/llm/skills/{skill_id} | Delete an admin skill. |
| POST | /api/v1/admin/llm/marketplace/import | Import marketplace skills. |
| GET | /api/v1/admin/llm/marketplace/updates | Check marketplace updates. |
| POST | /api/v1/admin/llm/marketplace/update/{skill_id} | Update one marketplace skill. |