Business Plan Required

Build on top of FollowUpCard

Our REST API lets you integrate FollowUpCard with your internal tools, CRMs, and custom workflows. Access contacts, events, workflows, and AI features programmatically.

Authentication
API keys managed in your dashboard. Include in Authorization header.
Contacts API
Full CRUD operations on contacts. Filter, tag, and sync with your CRM.
Workflows API
Trigger workflows programmatically. Monitor execution status and steps.
Messages API
Compose AI messages and send emails/SMS through connected channels.

Authentication

All API requests require authentication via API key. Generate and manage keys in your FollowUpCard dashboard under Settings > API Keys.

Include your API key in the Authorization header of every request.

Rate Limits

  • 1,000 requests per day (Business plan)
  • 10,000 requests per day (Enterprise)
  • Rate limit headers included in all responses
Example Request
curl -X GET "https://api.followupcard.com/v1/contacts" \
  -H "Authorization: Bearer fuc_sk_live_xxxx" \
  -H "Content-Type: application/json"

Example Endpoints

A preview of available API endpoints

GET/api/v1/contacts
List all contacts with pagination, filtering, and sorting
{
  "data": [
    {
      "id": "cont_abc123",
      "first_name": "Sarah",
      "last_name": "Johnson",
      "email": "[email protected]",
      "company": "TechCorp",
      "title": "VP of Sales",
      "tags": ["vip", "sxsw-2024"],
      "event_id": "evt_xyz789",
      "created_at": "2024-03-15T10:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 20,
    "total": 142
  }
}

Use case: Sync contacts to your data warehouse or display in a custom dashboard.

POST/api/v1/contacts
Create a new contact with optional event and tag assignment
{
  "id": "cont_def456",
  "first_name": "Mike",
  "last_name": "Chen",
  "email": "[email protected]",
  "company": "StartupXYZ",
  "title": "CTO",
  "phone": "+1-555-123-4567",
  "event_id": "evt_xyz789",
  "tags": ["technical", "decision-maker"],
  "notes": "Met at AI panel discussion",
  "created_at": "2024-03-16T14:22:00Z"
}

Use case: Import contacts from your existing CRM or lead capture forms.

GET/api/v1/events
List all events with contact counts and date filtering
{
  "data": [
    {
      "id": "evt_xyz789",
      "name": "SXSW 2024",
      "location": "Austin, TX",
      "start_date": "2024-03-08",
      "end_date": "2024-03-16",
      "contact_count": 47,
      "default_workflow_id": "wf_abc123"
    }
  ]
}

Use case: Display event analytics or sync event data to your calendar.

POST/api/v1/workflows/run
Manually trigger a workflow for a specific contact
{
  "execution_id": "exec_ghi789",
  "workflow_id": "wf_abc123",
  "contact_id": "cont_def456",
  "status": "running",
  "started_at": "2024-03-16T14:30:00Z"
}

Use case: Trigger follow-up sequences from external systems or custom logic.

POST/api/v1/messages
Compose an AI message or send a prepared message
{
  "draft_id": "draft_jkl012",
  "contact_id": "cont_def456",
  "channel": "email",
  "subject": "Great meeting you at SXSW!",
  "body": "Hi Mike,\n\nIt was great connecting at the AI panel discussion at SXSW...",
  "status": "draft",
  "created_at": "2024-03-16T14:35:00Z"
}

Use case: Generate AI message drafts programmatically or integrate messaging into your workflow.

Webhooks

Receive real-time notifications when events occur in FollowUpCard

Configure webhook endpoints in your dashboard to receive POST requests when contacts are created, workflows execute, or messages are sent. All payloads are signed for verification.

contact.created
Fired when a new contact is added via any method (manual, scan, API)
{
  "event": "contact.created",
  "timestamp": "2024-03-16T14:22:00Z",
  "data": {
    "id": "cont_def456",
    "first_name": "Mike",
    "last_name": "Chen",
    "email": "[email protected]",
    "source": "qr_scan"
  }
}
contact.updated
Fired when contact details, tags, or notes are modified
{
  "event": "contact.updated",
  "timestamp": "2024-03-16T15:00:00Z",
  "data": {
    "id": "cont_def456",
    "changes": {
      "tags": {
        "added": ["vip"],
        "removed": []
      }
    }
  }
}
workflow.execution.started
Fired when a workflow begins executing for a contact
{
  "event": "workflow.execution.started",
  "timestamp": "2024-03-16T14:30:00Z",
  "data": {
    "execution_id": "exec_ghi789",
    "workflow_id": "wf_abc123",
    "contact_id": "cont_def456"
  }
}
workflow.execution.completed
Fired when all steps in a workflow have finished
{
  "event": "workflow.execution.completed",
  "timestamp": "2024-03-19T14:30:00Z",
  "data": {
    "execution_id": "exec_ghi789",
    "workflow_id": "wf_abc123",
    "contact_id": "cont_def456",
    "steps_completed": 3
  }
}
message.sent
Fired when an email or SMS is successfully sent
{
  "event": "message.sent",
  "timestamp": "2024-03-16T14:35:30Z",
  "data": {
    "message_id": "msg_mno345",
    "contact_id": "cont_def456",
    "channel": "email",
    "status": "delivered"
  }
}
message.bounced
Fired when an email bounces or SMS fails delivery
{
  "event": "message.bounced",
  "timestamp": "2024-03-16T14:36:00Z",
  "data": {
    "message_id": "msg_mno345",
    "contact_id": "cont_def456",
    "channel": "email",
    "bounce_type": "hard",
    "reason": "invalid_email"
  }
}

Ready to integrate?

Upgrade to the Business plan to get API access, webhooks, and full documentation.