Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.origamiagents.com/llms.txt

Use this file to discover all available pages before exploring further.

Quickstart for AI Agents

This guide is designed for AI agents integrating with Origami workflows programmatically.

Authentication

All requests require the x-origami-key header:
x-origami-key: your-api-key

Base URL

https://api.origamiagents.com/api/v1

Complete Workflow Execution

To execute a workflow and retrieve results:

1. Trigger Workflow

POST /workflows/{workflowId}/runs/async
Content-Type: application/json
x-origami-key: your-api-key

{
  "nodes": {}
}
Response:
{
  "success": true,
  "data": {
    "workflowId": "wf_abc123",
    "runId": "run_xyz789",
    "status": "queued"
  }
}
Save the runId for subsequent requests.

2. Poll for Completion

Poll this endpoint every 2-5 seconds until status is completed or failed:
GET /workflows/{workflowId}/runs/{runId}/async/status
x-origami-key: your-api-key
Possible statuses:
  • queued - Run is waiting to start
  • running - Run is in progress
  • completed - Run finished successfully (proceed to step 3)
  • failed - Run encountered an error

3. Retrieve Results

Once status is completed:
GET /workflows/{workflowId}/runs/{runId}/async/response
x-origami-key: your-api-key
Response:
{
  "success": true,
  "data": {
    "row_1": {
      "output_key": "result value"
    }
  }
}

Rate Limits

  • Trigger: 50/min global, 30/min per workflow
  • Status Check: 50/min global, 6/min per run
  • Get Results: 50/min global
When rate limited (429), wait for the duration specified in the Retry-After header.

Error Handling

All errors return:
{
  "success": false,
  "error": "Error message"
}
Common errors:
  • 401 - Invalid API key
  • 403 - No access to workflow
  • 404 - Workflow or run not found
  • 429 - Rate limit exceeded

Example: Complete Flow

import requests
import time

BASE_URL = "https://api.origamiagents.com/api/v1"
HEADERS = {"x-origami-key": "your-api-key"}

# 1. Trigger
response = requests.post(
    f"{BASE_URL}/workflows/{workflow_id}/runs/async",
    headers={**HEADERS, "Content-Type": "application/json"},
    json={"nodes": {}}
)
run_id = response.json()["data"]["runId"]

# 2. Poll
while True:
    status_response = requests.get(
        f"{BASE_URL}/workflows/{workflow_id}/runs/{run_id}/async/status",
        headers=HEADERS
    )
    status = status_response.json()["data"]["status"]
    
    if status == "completed":
        break
    elif status == "failed":
        raise Exception("Workflow failed")
    
    time.sleep(2)

# 3. Get results
result_response = requests.get(
    f"{BASE_URL}/workflows/{workflow_id}/runs/{run_id}/async/response",
    headers=HEADERS
)
output = result_response.json()["data"]

Tips for AI Agents

  • Polling frequency: Start with 2 seconds, increase to 5 seconds after 30 seconds
  • Timeout: Set a maximum wait time (e.g., 5 minutes) before abandoning
  • Retry logic: Retry 429 errors after the Retry-After duration
  • Parallel execution: Respect per-workflow rate limits when triggering multiple runs