GetOutpulse API

REST API for integrating with Zapier, Make, or your own tools. All endpoints are under /api/v1/.

Authentication

Generate API keys in Settings → API Keys. Pass them as a Bearer token in every request:

Authorization: Bearer op_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

All endpoints return 401 if the key is missing or revoked, and 429 if rate-limited (60 req/min per key).

Endpoints

GET/api/v1/contacts

List contacts (id, email, domain, listId, contactName, company, role, phone, linkedinUrl, industry, status, emailVerified, createdAt). Query params: listId, limit (default 100, max 1000), offset. A key limited to one list only ever sees that list.

Response

{ contacts: Contact[], total: number, limit: number, offset: number }
POST/api/v1/contacts

Import up to 500 contacts per request. Emails are validated; a key limited to one list always writes into that list.

Request body

[{ email: string, listId?: number }]

Response

{ imported: number }
GET/api/v1/leads

Search leads via your Apollo key (uses your Apollo credits). Query params: keyword (required), location, limit (max 100).

Response

{ leads: Lead[], total: number }
GET/api/v1/stats

Account overview stats and usage for the current month.

Response

{ stats, usage }

Webhooks

Configure outbound webhooks in Settings → Integrations. Each event POST a JSON payload to your URL with an X-Webhook-Signature HMAC-SHA256 header for verification.

contact.sent

Fired after a contact email is sent successfully.

contact.replied

Fired when a reply is detected during inbox sync.

contact.bounced

Fired when Brevo reports a hard bounce.

contact.unsubscribed

Fired when a contact unsubscribes or marks as spam.

Example payload

{
  "event": "contact.replied",
  "payload": {
    "email": "[email protected]",
    "contactId": 42,
    "repliedAt": "2024-01-15T10:23:00.000Z",
    "classification": "interested"
  },
  "firedAt": "2024-01-15T10:23:01.000Z"
}

GetOutpulse · All API requests are logged and counted against your monthly usage quota.