Pre-launch beta — Pro plan free for the first 100 signups. 0 claimed 100 left Claim →

Authentication

Every endpoint authenticates via one of two headers. Both keys are pre-loaded for this environment — copy from the chips below. Get a personal API key from the dashboard after signing up; it replaces the public guest key and unlocks your tier's per-day quotas.

Tiers

TierPer runAPI calls / dayRetention
Guest2052h
Registered200506h
Pro1,00050024h

API keys (this environment)

The public site token below is safe to use in the browser. Write endpoints (including POST /api/blog/post) require the single admin master key, which is never exposed on this public page — copy it from the admin console.

Public site token x-api-key

Use on read endpoints, /api/tool-run, /api/blog/list, etc. Rate-limited, never admin.

pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ

Admin master key x-api-key

The single secret key for all write/admin endpoints, including POST /api/blog/post. Not shown here — reveal & copy it from the admin console.

••••••••••••••••

Code examples — every tool, every language

Every tool runs through the same flow: POST /api/tool-run returns a job_id, you poll /status, then read /results. Pick a tool and a language below — each sample is a complete, runnable client (start → poll → results). Replace YOUR_API_KEY with your personal key from the dashboard (a free Registered account works — tool runs require a signed-in key, not the public guest token).


Loading…

Languages: cURL · Python · Node.js · Java · Kotlin · Swift · Flutter/Dart. Swap the tool and params for any other tool key listed under POST /api/tool-run.

Errors

All errors follow this shape:

{"detail": "Human-readable error"}
HTTPMeaning
400Missing or malformed param
401Bad / missing api key
403Tier doesn't allow this action
404Resource not found
408Job didn't finish in window
429Rate-limited — see Retry-After
500Server error — retry
503Database / upstream model unavailable

Rate limits

Per-IP rate limit is 60 req / min. Pro plans get 600 req / min. Excess returns 429 with a Retry-After header.

POST /api/auth/signup

Creates a new registered user. The first 100 signups are flagged pro_eligible=true — they can claim a 30-day Pro trial via /api/auth/claim-pro.

curl -X POST https://convertfleet.online/api/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
    "email":    "you@example.com",
    "password": "your-strong-password",
    "name":     "Aisha"
  }'

Response

{
  "status": "success",
  "user": {
    "id": "uuid", "email": "...", "api_key": "sk-...",
    "tier": "registered", "pro_eligible": true, "pro_expires_at": null
  }
}

POST /api/auth/login

Verify password and return the user's api_key. Store it client-side and send as x-api-key on every subsequent request.

curl -X POST https://convertfleet.online/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"your-strong-password"}'

GET /api/auth/me

Returns the profile + usage counters for the api_key holder.

curl https://convertfleet.online/api/auth/me \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ"

POST /api/auth/update

Update name and/or password. Password change requires current_password.

curl -X POST https://convertfleet.online/api/auth/update \
  -H "x-api-key: YOUR_USER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Aisha P.",
    "current_password": "old-pw",
    "new_password":     "new-strong-pw"
  }'

POST /api/auth/regenerate-key

Rotate the personal API key. The old key is invalidated immediately.

curl -X POST https://convertfleet.online/api/auth/regenerate-key \
  -H "x-api-key: YOUR_USER_KEY"

POST /api/auth/claim-pro

One-shot — activates a 30-day Pro window for an eligible account.

curl -X POST https://convertfleet.online/api/auth/claim-pro \
  -H "x-api-key: YOUR_USER_KEY"

POST /api/blog/post

Publish a blog post from an external system. Authenticates with the admin master key (header x-api-key). Posts created here are tagged source=api.

Required fields

  • title — string
  • content — string (HTML or plain text)

Optional fields

  • slug — URL slug, auto-derived from title if omitted
  • excerpt — short card-preview summary
  • category — defaults to Lead Generation
  • status"draft" or "published"
  • is_featured — boolean, pins the post on the blog homepage
  • meta_description — SEO meta description
  • seo_keywords — comma-separated string or keywords as an array
  • featured_image — URL of the hero image (alias of image_url)
curl -X POST https://convertfleet.online/api/blog/post \
  -H "x-api-key: YOUR_ADMIN_MASTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Post",
    "slug": "my-post",
    "content": "<p>HTML or text</p>",
    "excerpt": "Short summary",
    "category": "Technology",
    "status": "draft",
    "is_featured": false,
    "meta_description": "SEO description",
    "seo_keywords": "key1, key2, key3",
    "featured_image": "https://example.com/cover.jpg"
  }'

POST /api/blog/generate

Generate and publish in one call. Uses any valid user API key (paid tiers recommended — image generation is slow). Returns the full article payload plus the inserted post id.

curl -X POST https://convertfleet.online/api/blog/generate \
  -H "x-api-key: YOUR_USER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"topic":"apollo vs clay email verification 2026"}'

GET /api/blog/list

Public read of all blog posts, newest first.

curl https://convertfleet.online/api/blog/list

POST /api/tool-run

Kick off any tool. Returns a job_id immediately — poll status or open the WebSocket.

Tool keys

mapsrev linkedin fb fbads reddit tiktok twitter yt yt_comp dl dl_yt dl_ig dl_tt dl_fb dl_sn email disposable webemail

curl -X POST https://convertfleet.online/api/tool-run \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "mapsrev",
    "params": {
      "place_url": "https://maps.google.com/...",
      "max_results": 200
    }
  }'

GET /api/tool-run/{job_id}/status

curl https://convertfleet.online/api/tool-run/JOB_ID/status \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ"

GET /api/tool-run/{job_id}/results

curl https://convertfleet.online/api/tool-run/JOB_ID/results \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ"

POST /api/website-email/find

Crawl a single website (same-site pages only) and return every email it finds, plus phones and social links. Prioritises contact / about / team pages, de-obfuscates "name [at] domain [dot] com", and tags each address personal or role.

Body fields

  • website — string, the site to crawl (a bare host like acme.com is fine)
  • max_pages — int, crawl budget. Clamped to your plan's per-run ceiling.
  • include_phones — boolean, default true
  • include_socials — boolean, default true
curl -X POST https://convertfleet.online/api/website-email/find \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ" \
  -H "Content-Type: application/json" \
  -d '{
    "website": "https://acme.com",
    "max_pages": 12,
    "include_phones": true,
    "include_socials": true
  }'

Response

{
  "website": "https://acme.com",
  "domain": "acme.com",
  "pages_scanned": 9,
  "emails": ["jane.doe@acme.com", "sales@acme.com"],
  "phones": ["+1 555-0100"],
  "socials": [{"platform": "linkedin", "url": "https://linkedin.com/company/acme", "host": "linkedin.com"}],
  "results": [
    {"email": "jane.doe@acme.com", "type": "personal", "domain": "acme.com", "source_page": "https://acme.com/team"},
    {"email": "sales@acme.com",    "type": "role",     "domain": "acme.com", "source_page": "https://acme.com/contact"}
  ],
  "count": 2
}

Also available via POST /api/tool-run with {"tool":"webemail","params":{...}} for tracked, pollable jobs with CSV / XLSX export.

GET /api/health

Liveness probe. Always 200.

curl https://convertfleet.online/api/health

GET /api/download/{job_id}/{fmt}

Direct file download for a finished job. fmt = csv or xlsx.

curl -L -o leads.csv \
  -H "x-api-key: pub-oIGLjM0L890K_YefOLhncjgQ6kvB6a1juPTxXQ" \
  https://convertfleet.online/api/download/JOB_ID/csv