API Reference | BrandJet AI
BrandJet API Reference
v1.0.0
OAS 3.0.0
BrandJet AI API
BrandJet AI is a multi-channel outreach platform that lets you find leads, run campaigns across email, LinkedIn, Twitter, WhatsApp, and Instagram, and manage all replies in one inbox — all through a single, consistent REST API.
What you can do
- Campaigns — List, inspect, pull analytics, and page through the per-lead activity log of your outreach campaigns.
- Leads — Create and manage lead lists, import leads via CSV, and update lead data.
- Webhooks — Subscribe to 40+ event types and receive real-time notifications at your endpoint.
- Account & Brand — Validate your API key and retrieve account or brand details.
How it works
- Get an API key from your dashboard.
- Make requests to the API with your key in the
x-api-keyheader. - All responses are wrapped in a standard envelope with
dataandrequest_id.
Authentication
Pass your API key in the x-api-key header on every request:
x-api-key: bj_live_your_key_here
Rate Limits
Rate limits are plan-based. Every response includes these headers:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Requests allowed per minute |
X-RateLimit-Remaining |
Requests remaining this window |
X-RateLimit-Reset |
Seconds until the window resets |
X-RateLimit-Daily-Limit |
Requests allowed per day |
X-RateLimit-Daily-Remaining |
Requests remaining today |
Webhooks
Webhooks let you receive real-time HTTP callbacks whenever events occur in your BrandJet AI account. Instead of polling the API, configure an endpoint and we will POST event payloads to it automatically.
Payload format
Every delivery sends a JSON body with this structure:
{
"id": "a1b2c3d4-...",
"event": "lead.created",
"timestamp": "2026-04-10T14:30:00.000Z",
"data": { ... }
}
Verifying signatures
If you provide a secret when creating an endpoint, every delivery includes an X-Webhook-Signature header containing an HMAC-SHA256 digest of the raw request body:
X-Webhook-Signature: sha256=<hex-digest>
Verify it on your server like this (Node.js example):
const crypto = require('crypto');
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const valid = crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
Retries & back-off
Failed deliveries (non-2xx response or timeout) are retried with exponential back-off. You can configure max_retries (0–10, default 3) and timeout_ms (1–120 s, default 30 s) per endpoint.
Campaign activity
Subscribe to campaign.activity to receive one delivery per outreach event on a lead: sent, delivered, opened, clicked, replied, bounced, connection_request_sent, connection_accepted, profile_visited, reaction_sent, follow_request_sent, follow_request_accepted, plus skips and failures. The data object carries campaignId, campaignName, executionId, leadId, leadName, leadEmail, leadLinkedinUrl, eventType, channel, success, errorMessage, accountId, accountName and occurredAt. Filter on channel to keep only LinkedIn events. The same history is available on demand from GET /campaigns/{campaignId}/analytics/events.
Event categories
| Category | Example events |
|---|---|
| CRM / Leads | lead.created, lead.updated, lead.stage_changed, lead.enriched |
| Campaigns | campaign.launched, campaign.completed, campaign.reply_received, campaign.activity |
| Inbox | inbox.message_received, inbox.conversation_created |
| Brand Monitoring | mention.created, mention.updated |
| AI Agents | ai_agent.started, ai_agent.completed, ai_agent.approval_needed |
| LLM Monitoring | llm_monitor.brand_mentioned, llm_monitor.brand_missing |
| Email Infrastructure | email.domain_dns_verified, email.mailbox_provisioned |
| Billing & Credits | billing.payment_succeeded, credits.low, credits.depleted |
| Integrations | integration.connected, integration.disconnected |
| Team | team.member_invited, team.member_joined |
Use the GET /webhooks/event-types endpoint for the full, machine-readable list.
Server
Server:https://api.brandjet.ai
Authentication
Selected Auth Type: ApiKey
| Name : x-api-key Clear Value |
| Value : Show Password |
Me Operations
- get/api/v1/me
- get/api/v1/me/account
- get/api/v1/me/brand
Validate API key
Validates the API key and returns key metadata. Use this to verify a key is active and inspect its scopes.
Responses
- 200
API key is valid.
{
"valid": true,
"api_key_id": "550e8400-e29b-41d4-a716-446655440000",
"key_prefix": "bj_live_abc...",
"scopes": [
"campaigns:read",
"leads:read",
"leads:write"
],
"expires_at": "2027-01-01T00:00:00.000Z",
"brand_id": "550e8400-e29b-41d4-a716-446655440001",
"user_id": "550e8400-e29b-41d4-a716-446655440002"
}
Get account info
Returns the user account associated with this API key, including profile information.
Responses
- 200
Account info retrieved successfully.
{
"id": "550e8400-e29b-41d4-a716-446655440002",
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe",
"picture": "https://example.com/photo.jpg",
"company": "Acme Corp",
"position": "CEO",
"country": "US",
"created_at": "2026-01-15T10:30:00.000Z"
}
Get brand
Returns the brand this API key is bound to.
Responses
- 200
Brand retrieved successfully.
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Acme Corp",
"description": "Enterprise SaaS for project management",
"website": "https://acme.com",
"logo": "https://acme.com/logo.png",
"industry": "Technology",
"business_type": "B2B SaaS",
"target_audience": [
"SMBs",
"Enterprise"
],
"is_active": true,
"is_monitoring_active": false,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-03-28T06:00:00.000Z"
}