DEVPROOF.AI Own your scalable AI

Docs

API & integrations

Two APIs: the gateway serves models in both major wire formats; the platform API manages agents, sessions and everything around them.

The gateway API

Authenticate with a console-managed key (dpk_…). External keys always call a routing by name — that's what makes budget rules enforceable.

# OpenAI dialect
curl http://<gateway>/v1/chat/completions \
  -H "Authorization: Bearer dpk_..." \
  -d '{"model": "main",
       "messages": [{"role": "user", "content": "Summarize this…"}]}'

# Anthropic dialect — same key, same routing
curl http://<gateway>/v1/messages \
  -H "Authorization: Bearer dpk_..." \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model": "main", "max_tokens": 1024,
       "messages": [{"role": "user", "content": "Summarize this…"}]}'

Streaming, tool use and structured outputs work in both dialects, subject to what the underlying model supports.

Point existing clients at it

ClientChange
OpenAI SDK (any language)base_url → your gateway, api_keydpk_…
Anthropic SDKbase_url → your gateway, auth token → dpk_…
Claude CodeANTHROPIC_BASE_URL + ANTHROPIC_AUTH_TOKEN, --model <routing>
LangChain / LlamaIndex / Vercel AI SDKthe provider's base-URL setting

The platform API

A REST API under /v1 on the control plane. Requests are scoped to a workspace via the X-Devproof-Workspace header (defaults to the default workspace). The console is built entirely on this API — anything it does, you can script.

AreaEndpoints
Workspaces/v1/workspaces
Agents/v1/agents, /v1/agents/:id/versions
Sessions/v1/sessions, …/messages, …/events (SSE), …/interrupt
Files/v1/files (uploads, outputs, checkpoints)
Knowledge/v1/skills, /v1/memory-stores, /v1/wikis
Environments & secrets/v1/environments, /v1/vaults
Serving/v1/deployments, /v1/routings, /v1/pools, catalog
Usage & billing/v1/usage, /v1/settings, API keys

Python client

A typed Python client (pip install devproofai-client, Apache-2.0) covers the platform API — workspaces, agents, sessions, files, skills, memory stores, wikis and vaults. An agent from zero to a streamed session:

from devproof import Devproof

client = Devproof()  # DEVPROOF_BASE_URL + DEVPROOF_API_KEY

env = client.environments.create(name="support-sandbox")
agent = client.agents.create(name="support-triage", routing="main",
                             environment_id=env["id"],
                             tools=["Bash", "Read", "Write"])

inbox = client.files.upload("inbox-week-30.csv")
log = client.files.upload("m40-0233-diagnostics.log")

session = client.sessions.create(agent=agent["id"],
                                 prompt="Triage this inbox export.",
                                 files=[inbox["id"], log["id"]])

for event in client.sessions.events.stream(session["id"]):
    print(event["type"], event.get("payload"))

# collect what the agent produced (reply drafts, summaries, …)
for f in client.sessions.resources(session["id"])["outputFiles"]:
    print(f["name"], f["size"])

Follow-up turns are client.sessions.send_message(session_id, prompt=…) — the session resumes from its checkpoint with full context.

Webhooks & events

Session lifecycle events (session.completed, session.failed, …) can be delivered to your endpoints per workspace; the same events stream over SSE for live UIs.

This page is an overview, not a full reference — the complete, current API surface lives in the repository alongside the code.