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. Optional query params: status, listId, limit (max 500), offset.

Response

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

Create a contact.

Request body

{ email: string, contactName?: string, company?: string, domain?: string, role?: string, listId?: number }

Response

{ id: number }
POST/api/v1/contacts/:id/enrich

Trigger AI enrichment for a single contact. Returns enriched contact fields.

Response

{ contact: Contact }
GET/api/v1/leads

Find leads. Query params: source (apollo|google_places|domain), keyword, location, domain, limit.

Response

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

Get account overview stats: total contacts, sent, replied, bounced, open rate.

Response

{ total, sent, replied, bounced, openRate }

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.