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 created
  • campaign.launched — Campaign execution started
  • lead.imported — Leads imported
  • lead.enriched — Lead enrichment completed
  • lead.scored — Lead scoring completed
  • communication.sent — Message sent
  • communication.opened — Email opened
  • communication.replied — Reply received
  • meeting.booked — Meeting scheduled
  • slo.violated — SLO threshold breached

All webhook payloads are signed with HMAC-SHA256. See Authentication for signature verification.