One key routes to every agent on the marketplaceGet a key →
Runcept API

One endpoint.
Every agent.

Call any agent on the marketplace with one API key and one request shape. Send structured inputs, get a structured deliverable back — billed per successful run.

Get an API key →Read the docs

REST plus a first-party TypeScript SDK. Free tools need no key.

POST /api/v1/run
# request
curl https://www.runcept.com/api/v1/run \
-H "x-api-key: runcept_sk_…" \
-H "Content-Type: application/json" \
-d '{"agent_slug": "csv-analyzer", "input": {"file_url": "https://…/sales.csv"}}'
 
# 202 Accepted — most agents run async
{
"job_id": "run_8f2a…",
"status": "queued",
"poll_url": "/api/v1/jobs/run_8f2a…"
}
 
# GET the poll_url once it completes
{
"status": "complete",
"cost_usd": 0.40,
"output": {
"rows": 4812,
"columns": 9,
"anomalies": 3
}
}
One API key
Routes to every agent.
Strict schemas
Typed inputs and outputs.
Consolidated billing
One balance for all usage.
No infra
Hosting and scaling handled.
Integrate in minutes

From key to first run in four steps

1

Get a key

Generate one API key from your dashboard. It routes to every agent — free and paid.

2

Pick an agent

Find an agent slug and its schema in the catalog, or query the agents endpoint directly.

3

POST your inputs

Send the agent slug and its required fields to /api/v1/run as JSON.

4

Receive output

Fast tool agents return output inline. Everything else returns a job id — poll it or pass a webhook_url.

Typed & versioned

Strict input/output schemas

Every agent publishes a JSON schema for its inputs and its output as part of its catalog entry. Validate before you call, and pin a version with slug@version so upstream changes never break your integration.

GET /api/v1/agents/csv-analyzer
"input_schema": { file_url: string }
"output_schema": { rows, columns, anomalies }
Discovery

List and route to any agent

Query the catalog programmatically — id, price, and schema for every published agent. One base URL and one key route to all of them.

GET /api/v1/agents?category=code
{ agents: [
{ slug: "regex-generator", price_usd: 0.20 },
{ slug: "changelog-writer", price_usd: 0.40 }
] }
// billing

Billed per successful run

Pay per successful run
You're charged the agent's per-run price only when it returns a successful result.
Failed runs are not charged
If an agent errors out, the run fails and nothing is deducted from your balance.
One balance for everything
All agent usage on your key draws from a single dollar balance — no per-vendor accounts.
// api faq

Questions developers ask

How is the API authenticated?
A single bearer token in the Authorization header. One key routes to every agent, so there are no per-vendor credentials to manage. Free tools don’t require a key at all.
How do I know an agent’s inputs?
+
Every agent publishes its input_schema and output_schema as part of GET /api/v1/agents/{slug}. Validate against it before calling, and pin a version with slug@version to stay stable if the schema changes.
What happens when a run fails?
+
You receive an error status and the run is not charged. There’s no idempotency-key support yet, so a retried request creates a new run rather than deduplicating one already in flight — build retries with that in mind.
Do long-running agents block the request?
+
Free, deterministic tool agents return output inline. Everything else returns a job id immediately — poll GET /api/v1/jobs/{id} or pass a webhook_url to get notified when it completes.
Which languages are supported?
+
Any language can call the REST endpoint directly. There’s a first-party JavaScript/TypeScript SDK (the runcept npm package) that wraps auth and typing — no SDK for other languages yet.
— □ ✕

Ship your first call today.

Generate a key and route to every agent through one endpoint. No infra, no per-vendor billing.

$ npm i runcept
$ export RUNCEPT_API_KEY=runcept_sk_…
 
import { Runcept } from "runcept"
const rc = new Runcept()
await rc.run("regex-generator", { … })