Lead Ingestion API

Documentation for Suppliers

v1.0

Send leads without writing code

Already using a CRM, form builder, or spreadsheet? Connect it to Routio in minutes using Zapier or Make — no API knowledge required. Pick your tool below and follow the guided setup.

Zapier

Zapier

Connect to 7,000+ apps

Use Zapier to automatically forward leads from your CRM, form tool, or any other app into Routio. Routio will appear as the destination action — just connect your account and map your fields.

Make

Make

Connect to 3,000+ apps

Use Make to build a visual automation that sends leads from any source directly into Routio. A pre-built scenario template gets you started in minutes.

or use the API directly
Quick Start
Submit leads to our platform in 3 simple steps
1

Get Your API Key

Your seller will provide you with an API key

2

Format Your Lead

Include required fields in JSON format

3

POST to Endpoint

Send your lead to our API

Authentication

All API requests must include your API key in the Authorization header using Bearer token format.

Authorization: Bearer YOUR_API_KEY

🔐 Keep your API key secure! Never expose it in client-side code or public repositories.

Endpoints
POST/api/leadsSubmit a new lead

Request Body

Send a JSON object with lead data. The seller field is required to specify which seller organization should receive the lead. Use the seller's seller code (recommended - 8-character stable identifier that never changes) or slug (human-readable but may change if seller renames). Required fields depend on the campaign category.

💡 Query Parameters Supported

You can also pass lead fields as URL query parameters. This is useful for form builders (Typeform, Jotform, etc.) and simple integrations.

POST /api/leads?seller=ACME1234&category=Solar&state=TX&firstName=John&phone=555-1234

Body fields take precedence over query parameters if the same field is in both.

{
  "seller": "ACME1234",
  "category": "Auto Insurance",
  "firstName": "John",
  "lastName": "Doe",
  "email": "john.doe@email.com",
  "phone": "555-123-4567",
  "state": "TX",
  "zip": "75001",
  "city": "Dallas"
}

Required Fields

FieldTypeDescription
sellerstring
Seller code (8 chars) - recommended
or slug (may change if seller renames)
categorystringMust match an active campaign
firstNamestringLead's first name
lastNamestringLead's last name
phonestringContact phone number
statestring2-letter state code (e.g., TX, CA)
Code Examples
Quick integration examples in popular languages
curl -X POST https://your-domain.com/api/leads \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "seller": "ACME1234",
    "category": "Auto Insurance",
    "firstName": "John",
    "lastName": "Doe",
    "phone": "555-123-4567",
    "email": "john@email.com",
    "state": "TX"
  }'
Responses

Success Response (200)

{
  "success": true,
  "lead_id": "abc123",
  "status": "sold",
  "price": 45.00,
  "buyer_ids": ["buyer-uuid-1"]
}

Pending Response (200)

Lead accepted but no buyer available yet

{
  "success": true,
  "lead_id": "abc123",
  "status": "pending"
}
Error Codes
CodeErrorDescription
401Invalid API KeyAPI key missing or invalid
400No matching campaignCategory doesn't match any active campaign
400Missing required fieldA required field is missing from request
429Rate limit exceededToo many requests, slow down
500Internal errorServer error, contact support
Rate Limits

API requests are rate limited to ensure fair usage and platform stability.

EndpointLimitWindow
POST /api/leads60 requestsper minute, per API key

Rate limit headers: Check X-RateLimit-Remaining and X-RateLimit-Reset in responses.

Need help? Contact your seller for support.