Agent API · Pro

Drive it from your own code.

A small JSON API for scripts and AI agents: start searches, read results, send to a list and check your contacts. Every key has its own scopes and daily limits.

Authentication

API keys are issued by our team to Pro accounts. Email team@outreachpilotpro.com with the scopes you need: status, search, send, contacts. Send the key as a bearer token on every request.

# Base URL
https://outreachpilotpro.com/agent/v1

# Check the key and see its scopes and limits
curl https://outreachpilotpro.com/agent/v1/status \
  -H "Authorization: Bearer $OPP_KEY"
POST/agent/v1/searchscope: search

Starts a search and returns a job_id. Body: query (required), location, industry, limit (up to 50, default 20).

GET/agent/v1/search/poll/<job_id>

Returns the job's status and, once finished, its results. Poll every few seconds.

curl -X POST https://outreachpilotpro.com/agent/v1/search \
  -H "Authorization: Bearer $OPP_KEY" -H "Content-Type: application/json" \
  -d '{"query": "roofing contractors", "location": "Minneapolis, MN", "limit": 25}'

Send

Sending uses the email account connected in your Settings, so connect one there first.

POST/agent/v1/test-sendscope: send

Sends one message to check your setup. Body: email, subject, body.

POST/agent/v1/sendscope: send

Sends to a list. Body: subject, body, recipients (objects with email, and optionally name and company), and personalize (default true, fills merge fields from each recipient).

curl -X POST https://outreachpilotpro.com/agent/v1/send \
  -H "Authorization: Bearer $OPP_KEY" -H "Content-Type: application/json" \
  -d '{"subject": "Quick question, {{company}}",
       "body": "Hi {{first_name}}, ...",
       "recipients": [{"email": "jo@northsideroof.com", "name": "Jo Park", "company": "Northside Roofing"}]}'

Contacts & logs

GET/agent/v1/contactsscope: contacts

Lists your contacts. Query: search, stage, limit (up to 100), offset.

GET/agent/v1/logs

Recent API activity for this key. Query: limit (up to 50).

GET/agent/v1/autopilotscope: status

Your Auto Pilot configuration and whether it's running.

Limits & errors

Each key has a daily search limit, a daily send limit and a maximum batch size, set when the key is issued. Responses are JSON.

StatusMeaning
400A required field is missing, the batch is too large, or no email account is connected.
401The key is missing, invalid or revoked.
403The key doesn't have the scope this endpoint needs.
429The key's daily limit is reached. The response includes limit_reached: true.

Need different limits or another endpoint? Tell us what you're building.