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:
- Analyze a site, browse topics, or search topics.
- Validate or preview an audience config.
- Save an audience as
draft or active.
- Queue a manual run, or let active audiences refresh through scheduled daily runs.
- 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
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
| Method | Path | Auth | Purpose |
|---|
POST | /v1/intent/topics/analyze | Optional | Match a website to intent topics |
GET | /v1/intent/topics | Optional | Browse all topics |
GET | /v1/intent/topics/facets | Optional | Get topic filter values with counts |
GET | /v1/intent/topics/search | Optional | Autocomplete topic search |
GET | /v1/intent/topics/lists | x-api-key | List saved topic lists |
POST | /v1/intent/topics/lists | x-api-key | Save a topic list |
PATCH | /v1/intent/topics/lists/{id} | x-api-key | Update a saved topic list |
DELETE | /v1/intent/topics/lists/{id} | x-api-key | Delete a saved topic list |
POST | /v1/intent/topics/lists/{id}/instantiate | x-api-key | Create an audience from a topic list |
GET | /v1/site-topics/recent | x-api-key | List recent site topic searches |
Audience builder
| Method | Path | Auth | Purpose |
|---|
GET | /v1/intent/audiences/filters | x-api-key | Get ICP filter catalog |
POST | /v1/intent/audiences/validate | x-api-key | Validate and normalize an audience config |
POST | /v1/intent/audiences/preview | x-api-key | Preview count and sample rows |
GET | /v1/intent/audiences | x-api-key | List saved audiences |
POST | /v1/intent/audiences | x-api-key | Create an audience |
GET | /v1/intent/audiences/{id} | x-api-key | Get one audience |
PATCH | /v1/intent/audiences/{id} | x-api-key | Update, activate, or pause |
DELETE | /v1/intent/audiences/{id} | x-api-key | Delete an audience |
Audience runs and results
| Method | Path | Auth | Purpose |
|---|
POST | /v1/intent/audiences/{id}/runs | x-api-key | Queue a manual run |
GET | /v1/intent/audiences/{id}/runs | x-api-key | List audience runs |
DELETE | /v1/intent/audiences/{id}/runs/{runId} | x-api-key | Cancel a queued run |
GET | /v1/intent/audiences/{id}/runs/{runId}/results | x-api-key | Get paginated hydrated results |
GET | /v1/intent/audiences/{id}/runs/{runId}/stats | x-api-key | Get fill rates and score histogram |
GET | /v1/intent/audiences/{id}/runs/{runId}/export.csv | x-api-key | Download CSV directly |
POST | /v1/intent/audiences/{id}/runs/{runId}/exports | x-api-key | Create or reuse a stored CSV export |
GET | /v1/intent/audiences/{id}/runs/{runId}/exports | x-api-key | List stored exports |
GET | /v1/intent/audiences/{id}/runs/{runId}/exports/{exportId} | x-api-key | Get an export with a fresh signed URL |
Errors
| Status | Code | Meaning |
|---|
400 | VALIDATION_ERROR | Invalid request |
401 | AUTHENTICATION_ERROR | Missing or invalid credentials |
403 | DRAFT_AUDIENCE | Audience must be active before this operation |
403 | NO_INTENT_CREDITS | Plan does not include intent access |
403 | SLOTS_FULL | All audience slots are in use |
404 | NOT_FOUND | Audience, run, topic list, or export was not found |
409 | RUN_NOT_READY | Run is not completed yet |
429 | RATE_LIMITED | Rate limit exceeded |
500 | PROCESSING_ERROR | Query or run processing failed |
Rate limits
| Auth mode | Limit |
|---|
| Unauthenticated | 2 requests per minute on public topic endpoints |
| Authenticated via API key or Bearer | 200 requests per minute unless endpoint-specific limits apply |