Axis API
REST API for campaign management, lead enrichment, and agent orchestration. All endpoints require an API key in the Authorization: Bearer header. See Authentication for key setup.
Campaigns
Create Campaign — POST /campaigns
Create a new outreach campaign with an ICP definition, target channels, messaging strategy, and agent configuration. Returns a campaign ID with draft status and an assigned agent squad.
Launch Campaign — POST /campaigns/:id/launch
Execute a campaign. Specify an optional test cohort size, budget limit, and daily send limit. Returns an execution ID, cost estimate breakdown, and projected target counts.
Get Campaign Status — GET /campaigns/:id
Returns full campaign metrics: leads targeted, emails sent, opens, replies, meetings booked, open rate, reply rate, booking rate, and current spend against budget.
Leads
Import Leads — POST /leads/import
Bulk import leads from a CSV file with optional deduplication. Returns an import job ID, row count, valid row count, and duplicate count. Processing is asynchronous.
Enrich Lead — POST /leads/:id/enrich
Trigger programmatic enrichment for a single lead. Returns enriched company information, person data, and buying intent signals including hiring activity, recent funding, and technology migration indicators.
Score Lead — POST /leads/:id/score
Calculate a lead quality score (0–100) with a fit/intent/engagement breakdown, tier classification, and outreach recommendation.
Agents
List Agents — GET /agents
Returns all available agents with status and performance metrics (total executions, success rate, average duration).
Execute Agent — POST /agents/:id/execute
Manually trigger a single agent against specific input. Returns the agent output and execution metadata.
Economics
Get Cost Breakdown — GET /economics/costs
Returns cost totals grouped by category (AI inference, data enrichment, channel costs) and optionally broken down by agent, campaign, or day. Supports from, to, and group_by query parameters.
Communications
Get Outbox Status — GET /communications/outbox
Returns message counts by status (pending, processing, sent, failed) and current throughput.
Send Communication — POST /communications
Queue a message for delivery. Supply an idempotency key to prevent duplicate sends. Returns a communication ID and scheduled send time.
Tracing
Get Distributed Trace — GET /traces/:id
Returns the complete execution trace for a campaign-lead interaction: all agent spans with start times, durations, and status. Use for debugging and performance analysis.
Events
Query Events — GET /events
Filter by event type, campaign ID, agent, and time range. Returns paginated event records.
Rate Limits
| Resource | Limit | |----------|-------| | Campaign operations | 100 / hour | | Lead operations | 1,000 / hour | | Agent executions | 5,000 / hour | | API queries | 10,000 / hour |
Webhook Events
campaign.created— New campaign createdcampaign.launched— Campaign execution startedlead.imported— Leads importedlead.enriched— Lead enrichment completedlead.scored— Lead scoring completedcommunication.sent— Message sentcommunication.opened— Email openedcommunication.replied— Reply receivedmeeting.booked— Meeting scheduledslo.violated— SLO threshold breached
All webhook payloads are signed with HMAC-SHA256. See Authentication for signature verification.