agent.run()
DOCUMENTATION / PLATFORM GUIDES

Based on AgentRun release · Synced .

Use the API

The console, CLI, and your application use the same /v2 API. Start the server with the quickstart, then create an agent and submit work from a second terminal.

Use the CLI first

The published launcher also provides API commands. It finds a local server started with the same data directory, so you do not need to copy its token:

npx @parcha/agentrun@0.4 agents list
npx @parcha/agentrun@0.4 help

Save this as agent.json:

{
  "definition": {
    "id": "release-notes",
    "name": "Release notes",
    "instructions": "Write release notes from the supplied changes. Do not invent changes.",
    "harness": "pi",
    "tools": []
  }
}

Create it:

npx @parcha/agentrun@0.4 agents create --body @agent.json

Save the input as run.json:

{
  "input": {
    "content": "Write release notes: added CSV export; fixed the date filter."
  }
}

With a model key configured, start a capped run. This calls the model provider:

npx @parcha/agentrun@0.4 runs start release-notes --max-cost-usd 1 --body @run.json

Use the returned run_id:

npx @parcha/agentrun@0.4 runs get RUN_ID

Inspect status, result, error, and pending. If it asks a question, answer with runs message RUN_ID --content "...". The CLI source reference also documents commands added on main; use your installed command's help to check availability.

Connect over HTTP

Set AGENTRUN_BASE_URL to the server's printed API address, including /v2. For a launcher using its default data directory, read the token into the environment without displaying it:

export AGENTRUN_BASE_URL=http://127.0.0.1:7340/v2
export AGENTRUN_API_KEY="$(cat "$HOME/.agentrun/.token")"

Use the actual printed port. With a custom --data directory, the token is in that directory's .token. For a remote server, inject its token through your application's secret manager.

A read-only request:

curl --fail-with-body --silent --show-error \
  "$AGENTRUN_BASE_URL/agents" \
  -H "Authorization: Bearer $AGENTRUN_API_KEY"

Create an agent with the same agent.json:

curl --fail-with-body --silent --show-error \
  "$AGENTRUN_BASE_URL/agents" \
  -H "Authorization: Bearer $AGENTRUN_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @agent.json

Use either the CLI creation or the HTTP creation for this example; do not create the same ID twice.

Routes to build around

Request Purpose
GET /v2/health Check server health without a credential.
GET /v2/capabilities Discover runtime capabilities.
GET /v2/openapi.json Read this server's API schema.
POST /v2/agents Create an agent from {definition}.
POST /v2/agents/{id}/runs Start work with {input, max_cost_usd?}.
GET /v2/runs/{id} Inspect state and the final result.
GET /v2/runs/{id}/timeline Follow activity; use the schema's cursor/polling contract.
POST /v2/runs/{id}/messages Answer or follow up with {content}.

Send the bearer token for authenticated requests. Use an Idempotency-Key when retrying a run creation after a connection failure; keep the same key and request body for that logical submission.

Handle errors explicitly

  • 401: token absent or refused.
  • 409 agent_not_runnable: inspect the reported setup problem, such as a missing model key or unavailable box.
  • 409 not_continuable: start a new run instead of messaging a failed or cancelled run.
  • 412: a revision or learning item changed since you read its ETag.
  • 422: fix the named request fields.
  • 429: the server has reached its run or request limit.

The running server's OpenAPI is authoritative for its version. The server reference describes current main.

Client libraries

The TypeScript client is @parcha/agentrun-client on npm. The Python client is parcha-agentrun on PyPI and imports as agentrun. Both read AGENTRUN_BASE_URL and AGENTRUN_API_KEY, have one method per API operation, and can wait for a run:

npm i @parcha/agentrun-client
pip install parcha-agentrun

The home page shows both creating an agent, starting a capped run, and answering its question. See the TypeScript client and Python client references. @parcha/agentrun is the launcher and CLI, not a client library; do not import the older @parcha/agentrun 0.2 SDK as the server client.