Skip to main content

Documentation Index

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

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

API Reference

Use HTTP when the job starts outside TypeScript: Python, Airflow, notebooks, backend services, or data warehouse tasks.

Authentication

export DEEPLINE_ORIGIN_URL="https://code.deepline.com"
export DEEPLINE_API_KEY="dl_..."
Send the key as a bearer token:
Authorization: Bearer <DEEPLINE_API_KEY>

Start a workflow run

curl -X POST "$DEEPLINE_ORIGIN_URL/api/v2/plays/run" \
  -H "Authorization: Bearer $DEEPLINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "person-linkedin-to-email",
    "input": {
      "linkedin_url": "https://www.linkedin.com/in/real-person/",
      "first_name": "Jane",
      "last_name": "Smith",
      "company_name": "Acme",
      "domain": "acme.com"
    }
  }'
Response:
{
  "workflowId": "play_run_..."
}

Check run status

curl "$DEEPLINE_ORIGIN_URL/api/v2/plays/run/$WORKFLOW_ID" \
  -H "Authorization: Bearer $DEEPLINE_API_KEY"
Terminal statuses:
completed
failed
cancelled

Python caller

import os
import time
import requests

base_url = os.environ.get("DEEPLINE_ORIGIN_URL", "https://code.deepline.com")
api_key = os.environ["DEEPLINE_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}"}

start = requests.post(
    f"{base_url}/api/v2/plays/run",
    headers=headers,
    json={"name": "person-linkedin-to-email", "input": {"domain": "acme.com"}},
)
workflow_id = start.json()["workflowId"]

while True:
    status = requests.get(
        f"{base_url}/api/v2/plays/run/{workflow_id}",
        headers=headers,
    ).json()
    if status.get("status") in {"completed", "failed", "cancelled"}:
        print(status)
        break
    time.sleep(2)

When to use HTTP

Use HTTP forUse SDK/CLI for
Airflow jobswriting custom workflows
notebookslocal CSV pilots
backend servicesClaude Code operation
warehouse tasksworkflow authoring and checks