Developer Docs

Funnelyn API Documentation

A RESTful API with JSON responses, Bearer token authentication, and SDKs for Python and Node.js. Search leads, enrich contacts, and manage campaigns programmatically.

Base URL: https://api.funnelyn.io/v1
Auth: Bearer token
Format: JSON

Authentication

All API requests must include a Bearer token in the Authorization header. Generate your API key from Settings → API Keys.

Authorization: Bearer YOUR_API_KEY

Quick Start

Get up and running in under 2 minutes with these cURL examples.

Endpoints

POST/api/v1/leads/search

Search leads by criteria including industry, title, company size, location, and intent signals.

Request

{
  "filters": {
    "industry": "SaaS",
    "title": "Head of Marketing",
    "company_size": "51-200",
    "country": "SG"
  },
  "limit": 25,
  "offset": 0
}

Response

{
  "total": 1847,
  "leads": [
    {
      "id": "lead_abc123",
      "first_name": "Sarah",
      "last_name": "Lim",
      "title": "Head of Marketing",
      "company": "TechCorp Pte Ltd",
      "email": "s.lim@techcorp.io",
      "verified": true,
      "score": 92
    }
  ]
}
GET/api/v1/leads/:id

Retrieve full details for a specific lead, including enriched firmographic and intent data.

Request

GET /api/v1/leads/lead_abc123

Response

{
  "id": "lead_abc123",
  "first_name": "Sarah",
  "last_name": "Lim",
  "email": "s.lim@techcorp.io",
  "phone": "+65 9123 4567",
  "title": "Head of Marketing",
  "company": "TechCorp Pte Ltd",
  "linkedin_url": "https://linkedin.com/in/sarahlim",
  "intent_signals": ["pricing page visit", "G2 comparison"],
  "verified": true,
  "last_updated": "2026-04-01T10:00:00Z"
}
POST/api/v1/leads/enrich

Enrich a contact record by providing an email address or LinkedIn URL. Returns verified data points.

Request

{
  "email": "s.lim@techcorp.io"
}

Response

{
  "match_confidence": 0.97,
  "first_name": "Sarah",
  "last_name": "Lim",
  "title": "Head of Marketing",
  "company": "TechCorp Pte Ltd",
  "company_size": "51-200",
  "industry": "B2B SaaS",
  "country": "SG",
  "email_verified": true
}
POST/api/v1/cpl/calculate

Calculate the estimated cost per lead for a given target audience and campaign parameters.

Request

{
  "industry": "FinTech",
  "title_level": "Director+",
  "country": ["SG", "MY"],
  "estimated_leads": 500
}

Response

{
  "estimated_cpl": 4.20,
  "audience_size": 12400,
  "match_rate": 0.82,
  "total_estimated_cost": 2100.00,
  "currency": "USD"
}
GET/api/v1/campaigns

List all campaigns in your account with status, performance metrics, and creation dates.

Request

GET /api/v1/campaigns?status=active&limit=10

Response

{
  "campaigns": [
    {
      "id": "camp_xyz789",
      "name": "Q2 SaaS Outreach",
      "status": "active",
      "leads_target": 500,
      "leads_delivered": 312,
      "cpl": 3.80,
      "created_at": "2026-03-15T08:00:00Z"
    }
  ],
  "total": 1
}
POST/api/v1/campaigns

Create a new campaign by specifying audience filters, budget, and delivery preferences.

Request

{
  "name": "Q3 APAC Enterprise Push",
  "filters": {
    "industry": ["FinTech", "SaaS"],
    "title": "CTO",
    "company_size": "201-1000",
    "country": ["SG", "ID", "MY"]
  },
  "budget": 5000,
  "leads_target": 1000
}

Response

{
  "id": "camp_new456",
  "name": "Q3 APAC Enterprise Push",
  "status": "pending",
  "estimated_cpl": 4.80,
  "created_at": "2026-04-10T12:00:00Z"
}

Rate Limits

Rate limits are enforced per API key. Exceeding limits returns a 429 Too Many Requests response.

PlanRate LimitDaily Limit
Starter100 req/min10,000 req/day
Growth500 req/min100,000 req/day
Professional2,000 req/minUnlimited

SDKs & Libraries

Official SDKs for popular languages. Community SDKs welcome via pull request.

Python

Available

Node.js

Available

Go

Coming Soon