API Overview

The Magnetite API allows you to add leads to your campaigns for automated outreach and meeting booking.

Base URL

https://magnetite.ai/api

Authentication

All API requests require authentication using a Bearer token. Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Getting Your API Key

  1. Log in to your Magnetite dashboard
  2. Navigate to Settings → API Keys
  3. Click Create API Key
  4. Give your key a descriptive name (e.g., "Zapier Integration", "Production API")
  5. Copy your API key immediately - you won't be able to see it again

Important: Your API key is shown only once when created. Store it securely - if you lose it, you'll need to create a new one.

Available Endpoints

POST
/campaigns/:campaignId/leads
Add a new lead to a campaign

Adds a lead to your campaign queue for automated research, scoring, and outreach. The lead will be processed through your campaign's ICP scoring and email sequence.

Webhooks

Configure webhook URLs in your campaign settings to receive notifications when important events occur.

WEBHOOK
meeting_booked
Triggered when a meeting is booked from campaign outreach

Receive a notification with meeting details when a prospect books a meeting through your campaign's calendar link.

Quick Start

Here's a simple example of adding a lead to your campaign:

curl -X POST https://magnetite.ai/api/campaigns/YOUR_CAMPAIGN_ID/leads \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "companyName": "Acme Corp",
    "domain": "acme.com",
    "contactName": "John Smith",
    "email": "john@acme.com",
    "title": "VP of Sales"
  }'

The lead will be automatically scored against your campaign's ICP criteria and added to the outreach queue.

Request Fields

The Add Lead endpoint accepts the following fields. Required fields must be provided; optional fields enhance lead scoring and email personalization.

Required Fields

FieldTypeDescription
companyNamestringCompany name
contactNamestringContact's full name
emailstringContact's email address

Optional Basic Fields

FieldTypeDescription
domainstringCompany domain (auto-extracted from email if not provided)
titlestringContact's job title
phonestringContact's phone number
linkedInUrlstringContact's LinkedIn profile URL
companyLinkedInUrlstringCompany's LinkedIn page URL
notesstringInternal notes about the lead (available in research)
extraContextobjectFreeform JSON for extra context passed to research agent

Company Enrichment

Pass pre-enriched company data to skip enrichment and improve scoring accuracy.

{
  "company": {
    "description": "Enterprise software company...",
    "website": "https://acme.com",
    "linkedinUrl": "https://linkedin.com/company/acme",
    "industry": "Software",
    "subIndustry": "Enterprise SaaS",
    "employeeCount": 250,
    "employeeRange": "201-500",
    "revenue": 50000000,
    "revenueRange": "$10M-$50M",
    "foundedYear": 2015,
    "fundingStage": "Series B",
    "headquarters": "San Francisco, CA",
    "country": "United States",
    "region": "North America",
    "companyType": "Private",
    "technologies": ["Salesforce", "HubSpot", "AWS"],
    "techCategories": ["CRM", "Marketing Automation", "Cloud"],
    "signals": {
      "recentFunding": { "amount": 50000000, "date": "2024-06", "round": "Series B" },
      "hiringSignals": { "isHiring": true, "openRoles": 15, "departments": ["Engineering", "Sales"] },
      "newsSignals": { "recentNews": ["Launched new product", "Expanded to Europe"] },
      "leadershipChanges": { "newCeo": false, "newCro": true },
      "growthIndicators": { "employeeGrowth": 0.35, "revenueGrowth": 0.50 }
    }
  }
}

Contact Enrichment

Pass pre-enriched contact data for better personalization.

{
  "contact": {
    "bio": "20+ years in enterprise sales...",
    "photoUrl": "https://example.com/photo.jpg",
    "seniority": "VP",
    "department": "Sales",
    "city": "San Francisco",
    "state": "California",
    "country": "United States",
    "timezone": "America/Los_Angeles"
  }
}

Research Data

Pass custom research data for email personalization. This is freeform JSON that will be available in your email templates for deep personalization.

{
  "researchData": {
    "recentPodcastAppearance": "Sales Leadership Podcast, Jan 2026",
    "linkedInPosts": ["Excited about Q4 results...", "Hiring for our team..."],
    "mutualConnections": ["Jane Doe", "Bob Wilson"],
    "companyNewsHook": "Congratulations on the Series B!",
    "personalizedOpener": "Saw your post about scaling sales teams..."
  }
}

Extra Context

Pass extra context as freeform JSON to be used by the research agent. This is useful when you have additional information about the lead that should inform the research process.

{
  "extraContext": {
    "meetingNotes": "Met at SaaStr 2026, interested in sales automation",
    "referralSource": "Jane Doe introduced us",
    "specificPainPoints": ["Manual data entry", "Low email response rates"],
    "competitorsUsing": ["Competitor A", "Competitor B"],
    "budgetRange": "$50k-$100k"
  }
}

Custom Data

Pass any additional custom data as freeform JSON. This data will be stored with the lead and can be used for filtering or reporting.

{
  "customData": {
    "leadSource": "Conference 2026",
    "boothVisit": true,
    "interestLevel": "high",
    "followUpDate": "2026-01-20",
    "tags": ["enterprise", "priority", "q1-target"]
  }
}

Full Example with Enrichment

Here's a complete example with all enrichment fields:

curl -X POST https://magnetite.ai/api/campaigns/YOUR_CAMPAIGN_ID/leads \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "companyName": "Acme Corp",
    "domain": "acme.com",
    "contactName": "John Smith",
    "email": "john@acme.com",
    "title": "VP of Sales",
    "phone": "+1-555-123-4567",
    "linkedInUrl": "https://linkedin.com/in/johnsmith",
    "companyLinkedInUrl": "https://linkedin.com/company/acme",
    "notes": "Met at SaaStr conference, very interested",
    "company": {
      "industry": "Software",
      "employeeCount": 250,
      "fundingStage": "Series B",
      "technologies": ["Salesforce", "HubSpot"]
    },
    "contact": {
      "seniority": "VP",
      "department": "Sales"
    },
    "researchData": {
      "personalizedOpener": "Saw your recent post about scaling sales teams"
    },
    "extraContext": {
      "referralSource": "Jane Doe introduced us",
      "painPoints": ["Manual outreach", "Low response rates"]
    },
    "customData": {
      "leadSource": "Conference 2026"
    }
  }'

Response Format

All API responses are JSON formatted:

{
  "success": true,
  "prospectId": "abc123...",
  "status": "queued",
  "message": "Lead added to campaign and queued for outreach"
}

Rate Limits

API requests are rate limited to ensure fair usage. Current limits are included in response headers. Contact support if you need higher limits.