Early accessRead the docs

outbound.dev

API reference

Every endpoint, what it does and what it costs. All paths are on api.outbound.dev.

Authentication

Send your key as a Bearer token in the Authorization header of every request: Authorization: Bearer ob_live_…. The API reads only this header. It ignores cookies, and a key never goes in a URL.

A key acts for its organization with its own scopes: full access, read-only, or a chosen set of products (search, enrichment, lists, campaigns and connections). A call outside the key's scopes gets 403 with insufficient_scope. A key can also expire after 30 or 90 days and carry a daily spending cap.

Charges

A paid call sets aside its highest possible price from your balance before any work starts, then charges only for what was found and releases the rest. Misses cost nothing, and a call is never charged twice.

If the balance cannot cover a call, it returns 402 with insufficient_balance and the amount to add, and no work starts. A key's daily cap works the same way, with key_daily_cap_reached. See errors and limits.

Search people

POST /v1/people/search

Find people with filters, a saved search or a plain-language query. Returns a page of matching profiles.

Price: $0.001 per record returned. Scope: search.

Request body
{ "query": "operations leads at freight companies in Portugal", "limit": 25 }

Save a search to a list

POST /v1/people/search/save-to-list

Runs the search and saves the people it finds to a new list, up to 10,000 per call. Returns 202 Accepted with a job to poll.

Price: $0.001 per record saved. Scope: search.

Request body
{
  "query": "operations leads at freight companies in Portugal",
  "limit": 20,
  "listName": "Portugal freight ops"
}

Enrichment

Enrich a person

POST /v1/people/enrich

A person's profile from their LinkedIn URL.

Price: charged only when a profile is found. Scope: enrichment.

Request body
{ "linkedinUrl": "https://www.linkedin.com/in/ana-ruiz" }

Find an email

POST /v1/emails/find

A person's work email from their name and their company's domain, through a waterfall across 20+ providers.

Price: $0.01 when an email is found. Scope: enrichment.

Request body
{ "name": "Ana Ruiz", "companyDomain": "haldenfreight.com" }
Response, 200 OK
{
  "status": "found",
  "email": {
    "value": "ana@haldenfreight.com",
    "status": "valid",
    "type": "work"
  },
  "usdCharged": 0.01,
  "balanceUsd": 38.19
}

Find a phone

POST /v1/phones/find

A person's phone number from their name and their company's domain.

Price: $0.10 when a phone is found. Scope: enrichment.

Request body
{ "name": "Ana Ruiz", "companyDomain": "haldenfreight.com" }

Verify an email

POST /v1/emails/verify

Valid, risky or invalid, with the reason.

Price: $0.01 per verdict. Scope: enrichment.

Request body
{ "email": "ana@haldenfreight.com" }

Lists

Create a list

POST /v1/lists

Price: free. Scope: lists.

Request body
{ "name": "Portugal freight ops" }

List your lists

GET /v1/lists

Price: free. Scope: lists.

Enrich a list

POST /v1/lists/{id}/enrich

Finds emails and phones for everyone on a list, through a waterfall across 20+ providers. Returns 202 Accepted with a job to poll.

Price: $0.01 per email and $0.10 per phone found. Misses are free. Scope: lists.

Request body
{ "fields": ["email", "phone"] }

Connected accounts

Connect an inbox

POST /v1/accounts/email

Any mailbox with SMTP and IMAP. Warmup included.

Price: $1 per 30 days while it is connected. Scope: connections.

Connect LinkedIn

POST /v1/accounts/linkedin/connect-links

A hosted sign-in link the account owner opens.

Price: $20 per 30 days, from when the account connects. Scope: connections.

Campaigns

Run a campaign

POST /v1/campaigns

Email and LinkedIn steps, sent from your accounts. A new campaign is a draft: nothing is sent until you approve it.

Price: free to send. Scope: campaigns.

Approve a campaign

POST /v1/campaigns/{id}/approve

Starts sending a drafted campaign.

Price: free. Scope: campaigns.

Read the replies

GET /v1/campaigns/{id}/leads

Who replied, what they said, and whether they are interested.

Price: free. Scope: campaigns.

Balance

Check the balance

GET /v1/wallet

Price: free, with any key.

Response, 200 OK
{ "balanceUsd": 10.00, "currency": "usd" }

OpenAPI spec

Every request and response schema is in the OpenAPI spec, for generating a client or handing to an agent.