Skip to main content

Documentation Index

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

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

Orbit turns topic-level research behavior into a usable audience. Start with the subjects people are actively researching, narrow the audience with ICP filters, then materialize a run to retrieve people, fill-rate stats, or a CSV export. Orbit is built for net-new targeting. It helps you find people and accounts that have not visited your site yet but are already showing signs of demand in the market.

What Orbit is

Orbit is Leadpipe’s intent audience API. Use it to find people researching specific B2B or B2C topics, then narrow those audiences with company, role, job title, contactability, geography, and demographic filters. The current workflow is:
  1. Analyze a site, browse topics, or search topics.
  2. Validate or preview an audience config.
  3. Save an audience as draft or active.
  4. Queue a manual run, or let active audiences refresh through scheduled daily runs.
  5. Read run results, run stats, or export CSV from the run ID.
Topic overlap controls how strict the audience should be. A higher overlap means a person must match more of the selected topics, which makes the signal narrower and usually stronger.

Base URL

https://api.aws53.cloud

Authentication

Authenticated requests can use an x-api-key header.
x-api-key: sk_your_api_key
API keys are scoped to an organization. Create and manage them in Settings > API Keys in the dashboard. Bearer-authenticated requests are also supported for logged-in frontend users. Do not send sk_... API keys as Bearer tokens.

Quick start

API_KEY="sk_your_api_key"
BASE="https://api.aws53.cloud"

# 1. Analyze a site into matching topics
curl -X POST "$BASE/v1/intent/topics/analyze" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://snowflake.com"}'

# 2. Preview the audience
curl -X POST "$BASE/v1/intent/audiences/preview" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "topicIds": [117805, 117890],
    "minScore": 70,
    "maxScore": 99,
    "minTopicOverlap": 1,
    "filters": {
      "company.industries": {
        "values": ["software development", "information technology & services"]
      },
      "role.seniority": {
        "values": ["director", "vp", "c_suite"]
      },
      "contact.hasBusinessEmail": true
    }
  }'

# 3. Create an audience
AUDIENCE_ID=$(curl -s -X POST "$BASE/v1/intent/audiences" \
  -H "x-api-key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Marketing Directors at Tech Companies",
    "status": "active",
    "config": {
      "topicIds": [117805, 117890],
      "minScore": 70,
      "maxScore": 99,
      "minTopicOverlap": 1,
      "filters": {
        "company.industries": {
          "values": ["software development", "information technology & services"]
        },
        "role.seniority": {
          "values": ["director", "vp", "c_suite"]
        },
        "contact.hasBusinessEmail": true
      }
    }
  }' | jq -r '.data.id')

# 4. Queue a materialization run
RUN_ID=$(curl -s -X POST "$BASE/v1/intent/audiences/$AUDIENCE_ID/runs" \
  -H "x-api-key: $API_KEY" \
  -H "Idempotency-Key: audience-run-$AUDIENCE_ID-001" \
  -H "Content-Type: application/json" \
  -d '{"runType":"manual"}' | jq -r '.data.id')

# 5. Poll results until the run is completed
curl "$BASE/v1/intent/audiences/$AUDIENCE_ID/runs/$RUN_ID/results?limit=50&offset=0" \
  -H "x-api-key: $API_KEY"

# 6. Download CSV for a completed run
curl -L "$BASE/v1/intent/audiences/$AUDIENCE_ID/runs/$RUN_ID/export.csv" \
  -H "x-api-key: $API_KEY" \
  -o audience.csv
GET /v1/intent/audiences/{id}/runs/{runId}/results returns 202 while a run is queued or running, and 200 when results are ready.

Endpoint groups

Topic discovery

MethodPathAuthPurpose
POST/v1/intent/topics/analyzeOptionalMatch a website to intent topics
GET/v1/intent/topicsOptionalBrowse all topics
GET/v1/intent/topics/facetsOptionalGet topic filter values with counts
GET/v1/intent/topics/searchOptionalAutocomplete topic search
GET/v1/intent/topics/listsx-api-keyList saved topic lists
POST/v1/intent/topics/listsx-api-keySave a topic list
PATCH/v1/intent/topics/lists/{id}x-api-keyUpdate a saved topic list
DELETE/v1/intent/topics/lists/{id}x-api-keyDelete a saved topic list
POST/v1/intent/topics/lists/{id}/instantiatex-api-keyCreate an audience from a topic list
GET/v1/site-topics/recentx-api-keyList recent site topic searches

Audience builder

MethodPathAuthPurpose
GET/v1/intent/audiences/filtersx-api-keyGet ICP filter catalog
POST/v1/intent/audiences/validatex-api-keyValidate and normalize an audience config
POST/v1/intent/audiences/previewx-api-keyPreview count and sample rows
GET/v1/intent/audiencesx-api-keyList saved audiences
POST/v1/intent/audiencesx-api-keyCreate an audience
GET/v1/intent/audiences/{id}x-api-keyGet one audience
PATCH/v1/intent/audiences/{id}x-api-keyUpdate, activate, or pause
DELETE/v1/intent/audiences/{id}x-api-keyDelete an audience

Audience runs and results

MethodPathAuthPurpose
POST/v1/intent/audiences/{id}/runsx-api-keyQueue a manual run
GET/v1/intent/audiences/{id}/runsx-api-keyList audience runs
DELETE/v1/intent/audiences/{id}/runs/{runId}x-api-keyCancel a queued run
GET/v1/intent/audiences/{id}/runs/{runId}/resultsx-api-keyGet paginated hydrated results
GET/v1/intent/audiences/{id}/runs/{runId}/statsx-api-keyGet fill rates and score histogram
GET/v1/intent/audiences/{id}/runs/{runId}/export.csvx-api-keyDownload CSV directly
POST/v1/intent/audiences/{id}/runs/{runId}/exportsx-api-keyCreate or reuse a stored CSV export
GET/v1/intent/audiences/{id}/runs/{runId}/exportsx-api-keyList stored exports
GET/v1/intent/audiences/{id}/runs/{runId}/exports/{exportId}x-api-keyGet an export with a fresh signed URL

Errors

StatusCodeMeaning
400VALIDATION_ERRORInvalid request
401AUTHENTICATION_ERRORMissing or invalid credentials
403DRAFT_AUDIENCEAudience must be active before this operation
403NO_INTENT_CREDITSPlan does not include intent access
403SLOTS_FULLAll audience slots are in use
404NOT_FOUNDAudience, run, topic list, or export was not found
409RUN_NOT_READYRun is not completed yet
429RATE_LIMITEDRate limit exceeded
500PROCESSING_ERRORQuery or run processing failed

Rate limits

Auth modeLimit
Unauthenticated2 requests per minute on public topic endpoints
Authenticated via API key or Bearer200 requests per minute unless endpoint-specific limits apply