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)

Click any key to copy it. The Blog key is a credential — anyone with it can publish to your blog as source=api. Rotate from your account settings if it leaks.

Web / Guest key x-api-key

Use on read endpoints, /api/tool-run, /api/blog/list, etc.

pub-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g

Blog key X-Blog-Key

Use ONLY on POST /api/blog/post. Posts created with this key are tagged source=api.

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

The Blog key is write-capable and only visible on the admin docs page after sign-in.

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 http://www.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 http://www.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 http://www.convertfleet.online/api/auth/me \
  -H "x-api-key: pub-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g"

POST /api/auth/update

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

curl -X POST http://www.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 http://www.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 http://www.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 Blog API key (header X-Blog-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 http://www.convertfleet.online/api/blog/post \
  -H "X-Blog-Key: YOUR_BLOG_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 http://www.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 http://www.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

curl -X POST http://www.convertfleet.online/api/tool-run \
  -H "x-api-key: pub-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g" \
  -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 http://www.convertfleet.online/api/tool-run/JOB_ID/status \
  -H "x-api-key: pub-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g"

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

curl http://www.convertfleet.online/api/tool-run/JOB_ID/results \
  -H "x-api-key: pub-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g"

GET /api/health

Liveness probe. Always 200.

curl http://www.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-JdBtm97Wnq0w0W9CH5n6v4MzEFm5iP1BPlsD6g" \
  http://www.convertfleet.online/api/download/JOB_ID/csv