API documentation
FatBaby API is a credit-based HTTP API for file, media, and developer utilities. Authenticate with an API key, follow the steps for each endpoint, and track usage from the dashboard.
Overview
| Base URL | https://thefatbaby.com/api |
|---|---|
| Auth | Authorization: Bearer fb_live_… or fb_test_… |
| Dashboard | /dashboard |
| Health | GET /health, /health/live, /health/ready |
Every response includes an X-Request-Id header (also returned as request_id in JSON bodies).
Official SDKs: JavaScript & Python · OpenAPI specs (download): tools · pdf · media · image · sheets · Try API playground
Authentication
- Create an account and open the dashboard.
- Create an API key (live or test). The full secret is shown once.
- Send it on every billable request:
Authorization: Bearer fb_live_YOUR_KEY
Dashboard login uses email/password with httpOnly session cookies. Public API products use API keys (fb_live_… / fb_test_…).
Credits & errors
- New accounts receive 100 free credits.
- Sync endpoints deduct credits after successful work.
- Async media jobs reserve credits on submit and capture them when the job completes.
- Failed validation before processing does not consume credits.
- Insufficient balance returns
402witherror: insufficient_credits.
Common error shape:
{
"error": "validation_error",
"message": "Request validation failed",
"request_id": "req_..."
}Billable responses also include X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining.
Images
Resize, compress, convert and clean images with Sharp. Multipart field name is always file.
All image routes accept multipart/form-data with a file field. Max upload size: 20 MB. Supported inputs: JPEG, PNG, WebP, AVIF, GIF.
/v1/image/info1 creditLiveRead format, dimensions, color space and size
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- No extra fields required — upload only.
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/info \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.jpg"
{
"format": "jpeg",
"width": 4032,
"height": 3024,
"space": "srgb",
"channels": 3,
"depth": "uchar",
"density": 72,
"has_alpha": false,
"orientation": 1,
"size_bytes": 2456789,
"request_id": "req_…",
"credits_used": 1,
"credits_remaining": 99
}/v1/image/resize2 creditsLiveResize with fit modes; optional output format
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- Set width and/or height (1–10000). Optional: fit (cover|contain|fill|inside|outside), format, quality, enlarge.
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/resize \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.jpg" \ -F "width=1024" \ -F "height=768" \ -F "fit=inside" \ -F "format=webp" \ -F "quality=82" \ --output resized.webp
HTTP 200
Content-Type: image/webp
Content-Disposition: inline; filename="resized.webp"
X-Request-Id: req_…
X-FatBaby-Credits-Used: …
X-FatBaby-Credits-Remaining: …
<body = binary image bytes>
# Dashboard logs store metadata only, e.g.:
{
"kind": "image",
"content_type": "image/webp",
"filename": "resized.webp",
"size_bytes": 184320,
"credits_used": 2,
"credits_remaining": 98,
"note": "Binary image output is not stored in logs; metadata only."
}/v1/image/compress2 creditsLiveRe-encode with quality controls
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- Optional: format, quality (1–100, default 80).
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/compress \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.jpg" \ -F "format=jpeg" \ -F "quality=80" \ --output compressed.jpg
HTTP 200
Content-Type: image/jpeg
Content-Disposition: inline; filename="compressed.jpg"
X-Request-Id: req_…
X-FatBaby-Credits-Used: …
X-FatBaby-Credits-Remaining: …
<body = binary image bytes>
# Dashboard logs store metadata only, e.g.:
{
"kind": "image",
"content_type": "image/jpeg",
"filename": "compressed.jpg",
"size_bytes": 184320,
"credits_used": 2,
"credits_remaining": 98,
"note": "Binary image output is not stored in logs; metadata only."
}/v1/image/convert2 creditsLiveConvert between JPEG, PNG, WebP, AVIF
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- Required: format (jpeg|png|webp|avif). Optional: quality.
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/convert \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.png" \ -F "format=webp" \ -F "quality=82" \ --output converted.webp
HTTP 200
Content-Type: image/webp
Content-Disposition: inline; filename="converted.webp"
X-Request-Id: req_…
X-FatBaby-Credits-Used: …
X-FatBaby-Credits-Remaining: …
<body = binary image bytes>
# Dashboard logs store metadata only, e.g.:
{
"kind": "image",
"content_type": "image/webp",
"filename": "converted.webp",
"size_bytes": 184320,
"credits_used": 2,
"credits_remaining": 98,
"note": "Binary image output is not stored in logs; metadata only."
}/v1/image/thumbnail2 creditsLiveAttention-cropped square/rect thumbnails
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- Optional: width/height (default 320), format (default webp), quality.
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/thumbnail \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.jpg" \ -F "width=320" \ -F "height=320" \ -F "format=webp" \ -F "quality=80" \ --output thumb.webp
HTTP 200
Content-Type: image/webp
Content-Disposition: inline; filename="thumbnail.webp"
X-Request-Id: req_…
X-FatBaby-Credits-Used: …
X-FatBaby-Credits-Remaining: …
<body = binary image bytes>
# Dashboard logs store metadata only, e.g.:
{
"kind": "image",
"content_type": "image/webp",
"filename": "thumbnail.webp",
"size_bytes": 184320,
"credits_used": 2,
"credits_remaining": 98,
"note": "Binary image output is not stored in logs; metadata only."
}/v1/image/strip-metadata1 creditLiveRemove EXIF/IPTC/XMP by re-encoding
- Create an API key in the dashboard and copy the fb_live_… (or fb_test_…) secret.
- Send Authorization: Bearer <key> on every request to https://thefatbaby.com/api.
- POST multipart/form-data with field name file (max 20 MB; JPEG/PNG/WebP/AVIF/GIF).
- No extra fields — upload only; response is a re-encoded image without metadata.
- For transform endpoints, save the binary response body (--output). Image info returns JSON.
- Read X-FatBaby-Credits-Used and X-FatBaby-Credits-Remaining (or JSON credit fields).
curl -X POST https://thefatbaby.com/api/v1/image/strip-metadata \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@photo.jpg" \ --output clean.jpg
HTTP 200
Content-Type: image/jpeg
Content-Disposition: inline; filename="clean.jpg"
X-Request-Id: req_…
X-FatBaby-Credits-Used: …
X-FatBaby-Credits-Remaining: …
<body = binary image bytes>
# Dashboard logs store metadata only, e.g.:
{
"kind": "image",
"content_type": "image/jpeg",
"filename": "clean.jpg",
"size_bytes": 184320,
"credits_used": 2,
"credits_remaining": 98,
"note": "Binary image output is not stored in logs; metadata only."
}Media Processing
Safe async FFmpeg ops via /v1/video, /v1/audio, /v1/gif and job polling under /v1/jobs. No raw commands or filters.
How to use video, audio & media jobs
Preferred path for /v1/video, /v1/audio, /v1/gif and related ops. Upload and start happen in one POST, then poll /v1/jobs.
- Get an API key from the dashboard. Every request needs Authorization: Bearer fb_live_… (or x-api-key).
- Optional first: POST /v1/media/inspect or /v1/media/validate with file=@clip.mp4 to check duration/codecs (sync, 1 credit).
- Submit work: POST an allowlisted route such as /v1/video/convert, /v1/video/compress, /v1/audio/extract, /v1/gif/from-video. Multipart field file is the input; add options as form fields (format, preset, start, …).
- Response returns job.id with status queued. Credits are reserved now; they are captured when the job completes.
- Poll GET /v1/jobs/:jobId until status is completed (also: failed, cancelled, expired). Progress is 0–100 while processing.
- Download: use job.output.downloads[].url or GET /v1/jobs/:jobId/download?filename=…. Auth required; only your jobs.
- Optional: pass webhook_url + webhook_ref on submit for HMAC callbacks. Cancel with POST /v1/jobs/:jobId/cancel.
- These routes never accept raw FFmpeg filters or shell commands — only allowlisted options.
# 0) Auth header used on every call
export API=https://thefatbaby.com/api
export KEY=fb_live_YOUR_KEY
# 1) (Optional) Inspect the file first — sync JSON
curl -X POST "$API/v1/media/inspect" \
-H "Authorization: Bearer $KEY" \
-F "file=@clip.mp4"
# 2) Create + upload + enqueue in ONE request (no separate job-create)
curl -X POST "$API/v1/video/convert" \
-H "Authorization: Bearer $KEY" \
-F "file=@clip.mp4" \
-F "format=mp4" \
-F "video_codec=libx264"
# → { "job": { "id": "JOB_ID", "status": "queued", ... } }
# 3) Poll until completed
curl "$API/v1/jobs/JOB_ID" -H "Authorization: Bearer $KEY"
# status: queued → downloading → processing → uploading → completed
# 4) Download the output
curl "$API/v1/jobs/JOB_ID/download?filename=converted.mp4" \
-H "Authorization: Bearer $KEY" \
--output converted.mp4
/v1/capabilities0 creditsLiveList supported media operations, limits, presets and credit rates
- Create an API key in the dashboard.
- GET /v1/capabilities with Authorization: Bearer <key> (no body).
- Use sync_operations / async_operations, presets, and credits maps to drive your client UI.
- This call is free (0 credits) and does not create a job.
curl https://thefatbaby.com/api/v1/capabilities \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"version": "1.0",
"sync_operations": ["media.inspect", "media.validate"],
"async_operations": ["video.convert", "video.compress", "…"],
"compress_presets": ["low", "medium", "high", "archive"],
"credits": { "video.convert": 5, "media.inspect": 1 }
}/v1/media/inspect1 creditLiveSync ffprobe summary (format, streams, duration, dimensions)
- Create an API key and confirm at least 1 credit.
- POST multipart file (or url) to /v1/media/inspect with Authorization: Bearer <key>.
- Read the JSON media summary (format, duration, streams). This is sync — no job polling.
- Credits are deducted immediately on success.
curl -X POST https://thefatbaby.com/api/v1/media/inspect \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4"
{
"success": true,
"media": {
"format": "mov,mp4,m4a,3gp,3g2,mj2",
"duration_sec": 12.4,
"width": 1920,
"height": 1080,
"video_streams": [{ "codec": "h264", "width": 1920, "height": 1080 }],
"audio_streams": [{ "codec": "aac", "channels": 2 }]
},
"request_id": "req_…",
"credits_used": 1
}/v1/media/validate1 creditLiveSync check against duration, dimension and size limits before processing
- Create an API key.
- POST multipart file (or url) to /v1/media/validate.
- Check valid and any errors[] against platform limits before submitting a heavy async job.
- Sync response — no job id. 1 credit on success.
curl -X POST https://thefatbaby.com/api/v1/media/validate \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4"
{
"success": true,
"valid": true,
"errors": [],
"media": { "duration_sec": 12.4, "width": 1920, "height": 1080 },
"request_id": "req_…",
"credits_used": 1
}/v1/video/convert5 creditsLiveAsync convert to allowlisted container/codec. Poll GET /v1/jobs/:id
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set format (e.g. mp4) and optional video_codec (e.g. libx264).
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/convert \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mov" \ -F "format=mp4" \ -F "video_codec=libx264"
{
"success": true,
"job": {
"id": "…",
"operation": "video.convert",
"status": "queued",
"progress": 0,
"credits_reserved": 5
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/compress5 creditsLiveAsync compress with presets: low | medium | high | archive
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set preset to low, medium, high, or archive.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/compress \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "preset=medium"
{
"success": true,
"job": {
"id": "…",
"operation": "video.compress",
"status": "queued",
"progress": 0,
"credits_reserved": 5
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/resize4 creditsLiveAsync scale video to target width/height
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set width and/or height. Optional fit/scale options per capabilities.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/resize \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "width=1280" \ -F "height=720"
{
"success": true,
"job": {
"id": "…",
"operation": "video.resize",
"status": "queued",
"progress": 0,
"credits_reserved": 4
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/crop4 creditsLiveAsync crop to a rectangular region
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Provide crop region fields (width, height, x, y) as documented in capabilities.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/crop \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "width=1080" \ -F "height=1080" \ -F "x=420" \ -F "y=0"
{
"success": true,
"job": {
"id": "…",
"operation": "video.crop",
"status": "queued",
"progress": 0,
"credits_reserved": 4
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/trim3 creditsLiveAsync trim by start + duration/end (seconds or HH:MM:SS)
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set start and duration (or end). Values may be seconds or HH:MM:SS.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/trim \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "start=00:00:05" \ -F "duration=10"
{
"success": true,
"job": {
"id": "…",
"operation": "video.trim",
"status": "queued",
"progress": 0,
"credits_reserved": 3
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/merge6 creditsLiveAsync concatenate multiple inputs into one file
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Upload multiple files via multipart field files (or repeated file uploads) in the desired order.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/merge \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "files=@part1.mp4" \ -F "files=@part2.mp4"
{
"success": true,
"job": {
"id": "…",
"operation": "video.merge",
"status": "queued",
"progress": 0,
"credits_reserved": 6
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/thumbnail2 creditsLiveAsync extract a still frame as an image
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Optional: time/timestamp for the frame, output format/size.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/thumbnail \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "time=00:00:02"
{
"success": true,
"job": {
"id": "…",
"operation": "video.thumbnail",
"status": "queued",
"progress": 0,
"credits_reserved": 2
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/watermark5 creditsLiveAsync overlay an image watermark on video
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Upload video as file and watermark image as a second multipart file (e.g. watermark). Optional position/opacity.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/watermark \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "watermark=@logo.png" \ -F "position=bottom-right"
{
"success": true,
"job": {
"id": "…",
"operation": "video.watermark",
"status": "queued",
"progress": 0,
"credits_reserved": 5
},
"request_id": "req_…",
"credits_used": 0
}/v1/jobs0 creditsLiveList your async media jobs with optional status filter
- Authenticate with Authorization: Bearer <key>.
- GET /v1/jobs?limit=20&offset=0 (optional status=queued|processing|completed|failed|cancelled).
- Iterate jobs[] to build a dashboard or resume polling for in-flight work.
- Free (0 credits).
curl "https://thefatbaby.com/api/v1/jobs?limit=20" \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"success": true,
"jobs": [
{ "id": "…", "operation": "video.convert", "status": "completed", "progress": 100 }
]
}/v1/jobs/:jobId0 creditsLivePoll async media job status, progress and signed download URLs
- After submitting an async op, note job.id from the create response.
- GET /v1/jobs/:jobId with your API key every few seconds while status is queued or processing.
- When status is completed, use job.output.downloads[].url or the download endpoint.
- Free (0 credits).
curl https://thefatbaby.com/api/v1/jobs/JOB_ID \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"success": true,
"job": {
"id": "JOB_ID",
"status": "completed",
"progress": 100,
"output": {
"primary": "converted.mp4",
"files": ["converted.mp4"],
"downloads": [{ "filename": "converted.mp4", "url": "https://…/v1/jobs/JOB_ID/download?…" }]
}
}
}/v1/jobs/:jobId/download0 creditsLiveDownload an output file (API key or signed token query)
- Ensure the job status is completed and note the output filename.
- GET /v1/jobs/:jobId/download?filename=out.mp4 with Authorization, or use the signed token URL from the job payload.
- Without filename, the API returns a JSON list of available files and URLs.
- Save the binary body with curl --output. Free (0 credits).
curl "https://thefatbaby.com/api/v1/jobs/JOB_ID/download?filename=converted.mp4" \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ --output converted.mp4
HTTP 200
Content-Type: video/mp4
Content-Disposition: attachment; filename="converted.mp4"
<body = binary file bytes>
# Or without filename:
{
"success": true,
"job_id": "JOB_ID",
"files": [{ "filename": "converted.mp4", "url": "https://…" }]
}/v1/jobs/:jobId/cancel0 creditsLiveCancel a queued or processing job and release reserved credits
- Identify a job that is still queued or processing.
- POST /v1/jobs/:jobId/cancel with Authorization: Bearer <key>.
- Confirm status becomes cancelled; reserved credits are released.
- Jobs already completed or failed are not cancellable (409).
curl -X POST https://thefatbaby.com/api/v1/jobs/JOB_ID/cancel \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"success": true,
"job": { "id": "JOB_ID", "status": "cancelled", "progress": 0 }
}/v1/audio/extract3 creditsLiveAsync extract audio track (mp3/aac/wav/flac/…)
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set format (e.g. mp3, aac, wav, flac).
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/audio/extract \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "format=mp3"
{
"success": true,
"job": {
"id": "…",
"operation": "audio.extract",
"status": "queued",
"progress": 0,
"credits_reserved": 3
},
"request_id": "req_…",
"credits_used": 0
}/v1/audio/normalize3 creditsLiveAsync loudness / level normalization
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Upload audio or video with an audio track; optional target loudness if supported.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/audio/normalize \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@track.wav"
{
"success": true,
"job": {
"id": "…",
"operation": "audio.normalize",
"status": "queued",
"progress": 0,
"credits_reserved": 3
},
"request_id": "req_…",
"credits_used": 0
}/v1/gif/from-video4 creditsLiveAsync palette GIF from a short clip window
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Set start, duration, and optional width for the GIF window.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/gif/from-video \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "start=0" \ -F "duration=3" \ -F "width=480"
{
"success": true,
"job": {
"id": "…",
"operation": "gif.from-video",
"status": "queued",
"progress": 0,
"credits_reserved": 4
},
"request_id": "req_…",
"credits_used": 0
}/v1/stream/hls8 creditsLiveAsync HLS packaging (alias of /v1/video/hls)
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Upload source video; wait for completed job then download the HLS package / playlist artifacts.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/stream/hls \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4"
{
"success": true,
"job": {
"id": "…",
"operation": "video.hls",
"status": "queued",
"progress": 0,
"credits_reserved": 8
},
"request_id": "req_…",
"credits_used": 0
}/v1/video/subtitles/burn5 creditsLiveAsync hard-burn SRT/VTT into the video picture
- Create an API key and confirm your credit balance covers the operation.
- POST multipart/form-data (file and options) with Authorization: Bearer <key>.
- Upload video as file and subtitle file (e.g. subtitles=@captions.srt). Alias also under /v1/subtitles/burn.
- Read job.id from the JSON response (status is usually queued). Credits are reserved, not yet captured.
- Poll GET /v1/jobs/:jobId until status is completed (or failed / cancelled).
- Download via signed URLs in job.output.downloads, or GET /v1/jobs/:jobId/download?filename=…
- On success, reserved credits are captured; cancel/fail releases per policy.
curl -X POST https://thefatbaby.com/api/v1/video/subtitles/burn \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4" \ -F "subtitles=@captions.srt"
{
"success": true,
"job": {
"id": "…",
"operation": "video.subtitles.burn",
"status": "queued",
"progress": 0,
"credits_reserved": 5
},
"request_id": "req_…",
"credits_used": 0
}Developer
Fast utilities for common backend and automation tasks.
/v1/json/validate1 creditLiveValidate and parse JSON payloads
- Create an API key in the dashboard.
- POST application/json with a json string field, or send a raw JSON object/array as the body.
- Read valid and parsed. Invalid JSON still returns HTTP 200 with valid: false and consumes 1 credit.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/json/validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"name\":\"FatBaby\",\"ok\":true}"}'{
"valid": true,
"parsed": {
"name": "FatBaby",
"ok": true
},
"request_id": "req_…",
"credits_used": 1,
"credits_remaining": 99
}Convert, manipulate, OCR, extract, and generate PDFs. Async jobs poll via /v1/jobs — same API key and credits.
/v1/pdf/metadata1 creditLiveRead page count and document info (sync)
- Create an API key and confirm credit balance.
- POST multipart file=@document.pdf — sync JSON response.
- Read credits headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/pdf/metadata \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"pages": 3,
"request_id": "req_…",
"credits_used": 1
}/v1/pdf/validate1 creditLiveValidate PDF structure (sync)
- Create an API key and confirm credit balance.
- POST multipart file=@document.pdf — sync JSON response.
- Read credits headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/pdf/validate \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"pages": 3,
"request_id": "req_…",
"credits_used": 1
}/v1/pdf/merge1 creditLiveMerge multiple PDFs into one
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/merge \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.merge" },
"credits_reserved": 1
}/v1/pdf/split1 creditLiveSplit PDF into per-page files (ZIP)
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/split \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.split" },
"credits_reserved": 1
}/v1/pdf/extract-pages1 creditLiveKeep selected pages (pages=1,3-5)
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/extract-pages \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.extract-pages" },
"credits_reserved": 1
}/v1/pdf/remove-pages1 creditLiveDelete selected pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/remove-pages \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.remove-pages" },
"credits_reserved": 1
}/v1/pdf/reorder-pages1 creditLiveReorder pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/reorder-pages \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.reorder-pages" },
"credits_reserved": 1
}/v1/pdf/rotate1 creditLiveRotate pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/rotate \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.rotate" },
"credits_reserved": 1
}/v1/pdf/crop1 creditLiveCrop page boxes
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/crop \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.crop" },
"credits_reserved": 1
}/v1/pdf/resize2 creditsLiveResize / fit pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/resize \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.resize" },
"credits_reserved": 2
}/v1/pdf/flatten1 creditLiveFlatten interactive content
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/flatten \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.flatten" },
"credits_reserved": 1
}/v1/pdf/repair1 creditLiveRepair damaged PDFs
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/repair \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.repair" },
"credits_reserved": 1
}/v1/pdf/compress2 creditsLiveCompress / optimize PDF size
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/compress \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.compress" },
"credits_reserved": 2
}/v1/pdf/optimize2 creditsLiveOptimize PDF structure
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/optimize \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.optimize" },
"credits_reserved": 2
}/v1/pdf/encrypt1 creditLivePassword-protect a PDF
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/encrypt \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.encrypt" },
"credits_reserved": 1
}/v1/pdf/decrypt1 creditLiveUnlock PDF with customer password
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/decrypt \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.decrypt" },
"credits_reserved": 1
}/v1/pdf/watermark1 creditLiveAdd text watermark
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/watermark \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.watermark" },
"credits_reserved": 1
}/v1/pdf/stamp1 creditLiveStamp text onto pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/stamp \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.stamp" },
"credits_reserved": 1
}/v1/pdf/remove-metadata1 creditLiveStrip document metadata
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/remove-metadata \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.remove-metadata" },
"credits_reserved": 1
}/v1/pdf/from-html2 creditsLiveHTML → PDF
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/from-html \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.from-html" },
"credits_reserved": 2
}/v1/pdf/from-url2 creditsLiveURL → PDF (SSRF-protected)
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/from-url \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "url=https://example.com/invoice"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.from-url" },
"credits_reserved": 2
}/v1/pdf/from-markdown2 creditsLiveMarkdown → PDF
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/from-markdown \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.from-markdown" },
"credits_reserved": 2
}/v1/pdf/from-office3 creditsLiveDOCX/XLSX/PPTX/ODT → PDF
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/from-office \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.from-office" },
"credits_reserved": 3
}/v1/pdf/from-images2 creditsLiveImages → PDF
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/from-images \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.from-images" },
"credits_reserved": 2
}/v1/pdf/to-images2 creditsLivePDF pages → image ZIP
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/to-images \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.to-images" },
"credits_reserved": 2
}/v1/pdf/ocr2 creditsLiveOCR scanned PDFs (eng/ara)
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/ocr \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.ocr" },
"credits_reserved": 2
}/v1/pdf/make-searchable2 creditsLiveAdd searchable text layer
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/make-searchable \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.make-searchable" },
"credits_reserved": 2
}/v1/pdf/deskew2 creditsLiveDeskew scanned pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/deskew \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.deskew" },
"credits_reserved": 2
}/v1/pdf/clean-scan2 creditsLiveClean scanned pages
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/clean-scan \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.clean-scan" },
"credits_reserved": 2
}/v1/pdf/to-pdfa2 creditsLiveProduce PDF/A
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/to-pdfa \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.to-pdfa" },
"credits_reserved": 2
}/v1/pdf/extract-text2 creditsLiveExtract plain text
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/extract-text \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.extract-text" },
"credits_reserved": 2
}/v1/pdf/extract-tables3 creditsLiveExtract tables as JSON
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/extract-tables \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.extract-tables" },
"credits_reserved": 3
}/v1/pdf/extract-images2 creditsLiveExtract embedded images metadata
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/extract-images \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.extract-images" },
"credits_reserved": 2
}/v1/pdf/to-markdown2 creditsLivePDF → Markdown
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/to-markdown \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.to-markdown" },
"credits_reserved": 2
}/v1/pdf/to-html2 creditsLivePDF → HTML
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/to-html \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.to-html" },
"credits_reserved": 2
}/v1/pdf/to-json2 creditsLiveStructured document JSON
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/to-json \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.to-json" },
"credits_reserved": 2
}/v1/pdf/generate2 creditsLiveGenerate PDF from JSON template
- Create an API key and confirm credit balance.
- POST multipart (and options) — response includes job.id (queued).
- Poll GET /v1/jobs/:jobId until completed, then download.
curl -X POST https://thefatbaby.com/api/v1/pdf/generate \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@document.pdf"
{
"success": true,
"job": { "id": "…", "status": "queued", "operation": "pdf.generate" },
"credits_reserved": 2
}Spreadsheets
Sync Excel/CSV/JSON conversions with exceljs: inspect, convert, merge, split, and validate workbooks under /v1/sheets.
/v1/sheets/xlsx-info1 creditLiveInspect workbook sheets, row counts, and size
- Create an API key and confirm credit balance.
- POST multipart file=@workbook.xlsx — sync JSON or binary response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/xlsx-info \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@workbook.xlsx"
{
"sheets": [{ "name": "Sheet1", "rows": 12, "columns": 4 }],
"sheet_count": 1,
"size_bytes": 8420,
"request_id": "req_…",
"credits_used": 1
}/v1/sheets/xlsx-to-csv1 creditLiveConvert a worksheet to CSV text
- Create an API key and confirm credit balance.
- POST multipart file=@workbook.xlsx — sync JSON or binary response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/xlsx-to-csv \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@workbook.xlsx" \ -F "sheet=Sheet1"
{
"csv": "name,qty\nAlpha,1\nBeta,2",
"request_id": "req_…",
"credits_used": 1
}/v1/sheets/csv-to-xlsx1 creditLiveConvert CSV text or file to an XLSX workbook
- Create an API key and confirm credit balance.
- POST JSON body (or multipart for csv-to-xlsx file) — sync response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/csv-to-xlsx \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"name,qty\nAlpha,1"}'HTTP 200 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Disposition: attachment; filename="converted.xlsx" X-Request-Id: req_… X-FatBaby-Credits-Used: 1 <body = binary xlsx bytes>
/v1/sheets/xlsx-to-json1 creditLiveConvert a worksheet to header + row objects
- Create an API key and confirm credit balance.
- POST multipart file=@workbook.xlsx — sync JSON or binary response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/xlsx-to-json \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@workbook.xlsx"
{
"sheet": "Sheet1",
"headers": ["name", "qty"],
"rows": [{ "name": "Alpha", "qty": "1" }],
"request_id": "req_…",
"credits_used": 1
}/v1/sheets/json-to-xlsx1 creditLiveBuild an XLSX workbook from row objects or multi-sheet input
- Create an API key and confirm credit balance.
- POST JSON body (or multipart for csv-to-xlsx file) — sync response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/json-to-xlsx \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"rows":[{"sku":"A1","price":"9.99"}]}'HTTP 200 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Disposition: attachment; filename="converted.xlsx" X-Request-Id: req_… X-FatBaby-Credits-Used: 1 <body = binary xlsx bytes>
/v1/sheets/merge-sheets2 creditsLiveCombine worksheets from multiple XLSX files into one workbook
- Create an API key and confirm credit balance.
- POST multipart files=@a.xlsx files=@b.xlsx — sync binary XLSX.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/merge-sheets \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "files=@a.xlsx" -F "files=@b.xlsx"
HTTP 200 Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Content-Disposition: attachment; filename="merged.xlsx" X-Request-Id: req_… X-FatBaby-Credits-Used: 2 <body = binary xlsx bytes>
/v1/sheets/split-sheets2 creditsLiveSplit each worksheet into its own XLSX (base64 JSON map)
- Create an API key and confirm credit balance.
- POST multipart file=@workbook.xlsx — sync JSON or binary response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/split-sheets \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@workbook.xlsx"
{
"sheets": [{
"name": "Sheet1",
"filename": "Sheet1.xlsx",
"content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"size_bytes": 5120,
"base64": "UEsDB…"
}],
"sheet_count": 1,
"request_id": "req_…",
"credits_used": 2
}/v1/sheets/validate1 creditLiveValidate XLSX structure against size/sheet/row limits
- Create an API key and confirm credit balance.
- POST multipart file=@workbook.xlsx — sync JSON or binary response.
- Read X-FatBaby-Credits-* headers / JSON credit fields.
curl -X POST https://thefatbaby.com/api/v1/sheets/validate \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@workbook.xlsx"
{
"valid": true,
"size_bytes": 8420,
"sheet_count": 1,
"sheets": [{ "name": "Sheet1", "rows": 12 }],
"limits": { "max_upload_bytes": 10485760, "max_sheets": 50, "max_rows": 100000 },
"request_id": "req_…",
"credits_used": 1
}Video & audio (FFmpeg)
Legacy async FFmpeg jobs: create a job, upload inputs, run a command, poll status, download outputs.
How to use legacy FFmpeg render
Use when you need a validated raw ffmpeg command against job folders. Prefer Media Processing for normal transforms.
- Create job: POST /v1/render/job (alias /v1/render/jobs). Returns job_id plus server input/output/temp paths. Cost: 1 credit.
- Upload input(s): POST /v1/render/upload/:jobId with multipart field file=@clip.mp4 (alias /v1/render/jobs/:jobId/files). Repeat for more files. Cost: 2 credits per upload.
- Start FFmpeg: POST /v1/render/render with JSON { "job_id": "…", "command": "ffmpeg -y -i …/input/clip.mp4 …/output/out.mp4" }. Paths must stay inside that job’s folders. Cost: 5 credits when accepted.
- Poll: GET /v1/render/status/:renderJobId until status is completed or failed.
- Download: GET /v1/render/download/:jobId/:filename (e.g. out.mp4) with your API key. Free.
- Only the API-key owner can access the job. Commands are validated — arbitrary shell is rejected.
# Legacy render pipeline — create → upload → render → poll → download
export API=https://thefatbaby.com/api
export KEY=fb_live_YOUR_KEY
# 1) Create a job (folders on the server)
curl -X POST "$API/v1/render/job" -H "Authorization: Bearer $KEY"
# → { "job_id": "JOB_ID", "input_path": "/data/renders/jobs/JOB_ID/input", ... }
# 2) Upload your media into the job input folder
curl -X POST "$API/v1/render/upload/JOB_ID" \
-H "Authorization: Bearer $KEY" \
-F "file=@clip.mp4"
# → { "filename": "clip.mp4", "path": ".../input/clip.mp4" }
# 3) Start FFmpeg (paths must use this job's input/ and output/)
curl -X POST "$API/v1/render/render" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"job_id": "JOB_ID",
"command": "ffmpeg -y -i /data/renders/jobs/JOB_ID/input/clip.mp4 /data/renders/jobs/JOB_ID/output/out.mp4"
}'
# → { "render_job_id": "RENDER_ID", "status": "processing" }
# 4) Poll render status
curl "$API/v1/render/status/RENDER_ID" -H "Authorization: Bearer $KEY"
# 5) Download the output file
curl "$API/v1/render/download/JOB_ID/out.mp4" \
-H "Authorization: Bearer $KEY" \
--output out.mp4
/v1/render/job1 creditLiveCreate job folders (input/output/temp). Alias: POST /v1/render/jobs
- This is step 1 of the legacy pipeline (create → upload → render → poll → download).
- POST /v1/render/job with Authorization: Bearer <key> (no body required). Alias: POST /v1/render/jobs.
- Save job_id and the returned input/output/temp paths for later upload and render steps.
- Next: upload with POST /v1/render/upload/:jobId. Costs 1 credit to create the job workspace.
curl -X POST https://thefatbaby.com/api/v1/render/job \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"success": true,
"job_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"input_path": "/data/renders/jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890/input",
"output_path": "/data/renders/jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890/output",
"temp_path": "/data/renders/jobs/a1b2c3d4-e5f6-7890-abcd-ef1234567890/temp",
"status": "created",
"request_id": "req_…",
"credits_used": 1,
"credits_remaining": 99
}/v1/render/upload/:jobId2 creditsLiveMultipart field file into job input/. Alias: POST /v1/render/jobs/:jobId/files
- Step 2 of the legacy pipeline — you already created a job and have job_id.
- POST multipart file to /v1/render/upload/:jobId (field name file). Alias: /v1/render/jobs/:jobId/files.
- Confirm the returned path under the job input/ folder. Repeat for extra inputs if needed.
- Next: POST /v1/render/render. Costs 2 credits per upload.
curl -X POST https://thefatbaby.com/api/v1/render/upload/JOB_ID \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -F "file=@clip.mp4"
{
"success": true,
"job_id": "JOB_ID",
"filename": "clip.mp4",
"path": "/data/renders/jobs/JOB_ID/input/clip.mp4",
"request_id": "req_…",
"credits_used": 2,
"credits_remaining": 97
}/v1/render/render5 creditsLiveAsync ffmpeg via validated command; returns render_job_id
- Build a validated ffmpeg command that only reads/writes under the job input/output/temp paths.
- POST JSON { job_id, command } to /v1/render/render.
- Save render_job_id and poll status until completed.
- Costs 5 credits when the render starts.
curl -X POST https://thefatbaby.com/api/v1/render/render \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"job_id":"JOB_ID","command":"ffmpeg -y -i /data/renders/jobs/JOB_ID/input/clip.mp4 /data/renders/jobs/JOB_ID/output/out.mp4"}'{
"success": true,
"render_job_id": "r9f8e7d6-c5b4-3210-aaaa-bbbbccccdddd",
"parent_job_id": "JOB_ID",
"status": "processing",
"output_path": null,
"request_id": "req_…",
"credits_used": 5,
"credits_remaining": 92
}/v1/render/status/:renderJobId0 creditsLivePoll async render task. Also: /render/:id/status and /status/:id/logs
- After starting a render, poll GET /v1/render/status/:renderJobId.
- Wait until status is completed (or inspect error / stderr on failure).
- Then download files from the parent job output/ folder.
- Free (0 credits).
curl https://thefatbaby.com/api/v1/render/status/RENDER_JOB_ID \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"success": true,
"render_job_id": "RENDER_JOB_ID",
"parent_job_id": "JOB_ID",
"status": "completed",
"command": "ffmpeg -y -i …/input/clip.mp4 …/output/out.mp4",
"output_path": null,
"started_at": "2026-09-07T12:00:00.000Z",
"completed_at": "2026-09-07T12:00:18.000Z",
"error": null,
"stdout": "",
"stderr": "…ffmpeg progress…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 92
}/v1/render/download/:jobId/:filename0 creditsLiveDownload a file from job output/. Alias: /jobs/:jobId/download/:filename
- When render status is completed, note the output filename under the parent job.
- GET /v1/render/download/:jobId/:filename with Authorization.
- Save the binary response. Free (0 credits).
curl https://thefatbaby.com/api/v1/render/download/JOB_ID/out.mp4 \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ --output out.mp4
HTTP 200 Content-Type: video/mp4 Content-Disposition: attachment; filename="out.mp4" X-Request-Id: req_… X-FatBaby-Credits-Used: 0 X-FatBaby-Credits-Remaining: 92 <body = binary file bytes>
More developer tools
JSON, encoding, generators, text, dates, web, email, API helpers, and webhook inboxes — same API key and credit wallet.
/v1/tools/json-format-minify0 creditsLivePretty-print or minify JSON
- Create an API key in the dashboard.
- POST /v1/tools/json-format-minify with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-format-minify \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}","minify":false}'{
"result": "{\n \"a\": 1\n}",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-validate0 creditsLiveValidate JSON with structured errors
- Create an API key in the dashboard.
- POST /v1/tools/json-validate with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"ok\":true}"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-repair0 creditsLiveBest-effort repair of common JSON issues
- Create an API key in the dashboard.
- POST /v1/tools/json-repair with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-repair \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{a:1,}"}'{
"repaired": "{\n \"a\": 1\n}",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-diff0 creditsLiveCompare two JSON documents with path + line diff
- Create an API key in the dashboard.
- POST /v1/tools/json-diff with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-diff \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"left":"{\"a\":1}","right":"{\"a\":2}"}'{
"equal": false,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-schema-validate0 creditsLiveValidate data against a JSON Schema
- Create an API key in the dashboard.
- POST /v1/tools/json-schema-validate with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-schema-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"data":"{\"n\":1}","schema":"{\"type\":\"object\"}"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/jsonpath0 creditsLiveQuery JSON with JSONPath
- Create an API key in the dashboard.
- POST /v1/tools/jsonpath with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/jsonpath \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"items\":[1]}","path":"$.items[*]"}'{
"result": [1],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/csv-json0 creditsLiveConvert CSV to JSON or JSON to CSV
- Create an API key in the dashboard.
- POST /v1/tools/csv-json with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/csv-json \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"a,b\n1,2","direction":"csv_to_json"}'{
"headers": ["a","b"],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-csv0 creditsLiveConvert JSON array of objects to CSV
- Create an API key in the dashboard.
- POST /v1/tools/json-csv with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-csv \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"[{\"a\":1}]"}'{
"csv": "a\n1",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-xml1 creditLiveConvert between JSON and XML
- Create an API key in the dashboard.
- POST /v1/tools/json-xml with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-xml \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"root\":{\"a\":1}}","direction":"json_to_xml"}'{
"xml": "<root>…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/json-yaml0 creditsLiveConvert between JSON and YAML
- Create an API key in the dashboard.
- POST /v1/tools/json-yaml with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/json-yaml \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}","direction":"json_to_yaml"}'{
"yaml": "a: 1\n",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/csv-clean0 creditsLiveRemove empty rows; formula-injection safe cells
- Create an API key in the dashboard.
- POST /v1/tools/csv-clean with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/csv-clean \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"a\n1\n\n"}'{
"removed_empty_rows": 1,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/csv-sql0 creditsLiveGenerate INSERT SQL (never executed)
- Create an API key in the dashboard.
- POST /v1/tools/csv-sql with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/csv-sql \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"id,name\n1,Ada","table":"people"}'{
"note": "Generated SQL is not executed…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/xml-validate0 creditsLiveValidate XML with XXE protections
- Create an API key in the dashboard.
- POST /v1/tools/xml-validate with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/xml-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"xml":"<root/>"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/base640 creditsLiveEncode/decode Base64 (not encryption)
- Create an API key in the dashboard.
- POST /v1/tools/base64 with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/base64 \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello","action":"encode"}'{
"note": "Base64 is encoding, not encryption…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/url-encode0 creditsLiveEncode or decode URI components
- Create an API key in the dashboard.
- POST /v1/tools/url-encode with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/url-encode \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"a b","action":"encode"}'{
"result": "a%20b",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/html-entities0 creditsLiveEncode or decode HTML entities
- Create an API key in the dashboard.
- POST /v1/tools/html-entities with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/html-entities \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"<b>","action":"encode"}'{
"result": "<b>",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/hex0 creditsLiveEncode or decode hex
- Create an API key in the dashboard.
- POST /v1/tools/hex with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/hex \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hi","action":"encode"}'{
"result": "6869",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/gzip0 creditsLiveCompress/decompress gzip (base64)
- Create an API key in the dashboard.
- POST /v1/tools/gzip with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/gzip \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello","action":"compress"}'{
"result": "H4sI…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/brotli0 creditsLiveCompress/decompress brotli (base64)
- Create an API key in the dashboard.
- POST /v1/tools/brotli with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/brotli \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello","action":"compress"}'{
"result": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/hashing0 creditsLiveSHA-256/384/512 (legacy MD5/SHA-1 labeled insecure)
- Create an API key in the dashboard.
- POST /v1/tools/hashing with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/hashing \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello","algorithm":"sha256"}'{
"hex": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/hmac0 creditsLiveHMAC-SHA256/384/512
- Create an API key in the dashboard.
- POST /v1/tools/hmac with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/hmac \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"body","secret":"…","algorithm":"sha256"}'{
"hex": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/jwt-decode0 creditsLiveDecode JWT without verifying authenticity
- Create an API key in the dashboard.
- POST /v1/tools/jwt-decode with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/jwt-decode \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"eyJ…"}'{
"note": "Decoding does NOT verify…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/jwt-verify0 creditsLiveVerify JWT with secret, public key, or JWKS
- Create an API key in the dashboard.
- POST /v1/tools/jwt-verify with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/jwt-verify \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"token":"eyJ…","secret":"…"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/password-strength0 creditsLiveScore password strength (password not logged)
- Create an API key in the dashboard.
- POST /v1/tools/password-strength with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/password-strength \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"password":"…"}'{
"score": 3,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/checksum0 creditsLiveChecksum hash helper
- Create an API key in the dashboard.
- POST /v1/tools/checksum with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/checksum \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"file-bytes","algorithm":"sha256"}'{
"hex": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/uuid0 creditsLiveGenerate UUID v4
- Create an API key in the dashboard.
- POST /v1/tools/uuid with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/uuid \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"uuid": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/ulid0 creditsLiveGenerate ULID
- Create an API key in the dashboard.
- POST /v1/tools/ulid with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/ulid \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{}'{
"ulid": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/nanoid0 creditsLiveGenerate NanoID
- Create an API key in the dashboard.
- POST /v1/tools/nanoid with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/nanoid \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"size":21}'{
"nanoid": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/random-token0 creditsLiveCSPRNG token (hex/base64url)
- Create an API key in the dashboard.
- POST /v1/tools/random-token with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/random-token \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"bytes":32}'{
"token": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/password-generator0 creditsLiveCSPRNG password generator
- Create an API key in the dashboard.
- POST /v1/tools/password-generator with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/password-generator \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"length":20,"symbols":true}'{
"password": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/qr-codes1 creditLiveGenerate QR PNG (URL/text/email/wifi/vCard…)
- Create an API key in the dashboard.
- POST /v1/tools/qr-codes with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/qr-codes \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"format":"url","data":{"url":"https://example.com"}}'PNG binary
/v1/tools/qr-read1 creditLiveDecode QR from image (file or image_base64)
- Create an API key in the dashboard.
- POST /v1/tools/qr-read with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/qr-read \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"image_base64":"…"}'{
"text": "…", "format": "qrcode",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/barcodes1 creditLiveGenerate Code128/39/EAN/UPC/QR PNG
- Create an API key in the dashboard.
- POST /v1/tools/barcodes with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/barcodes \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"123456789012","format":"ean13"}'PNG binary
/v1/tools/barcode-read1 creditLiveDecode barcode from image (file or image_base64)
- Create an API key in the dashboard.
- POST /v1/tools/barcode-read with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/barcode-read \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"image_base64":"…"}'{
"text": "…", "format": "CODE_128",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/lorem0 creditsLiveGenerate placeholder text
- Create an API key in the dashboard.
- POST /v1/tools/lorem with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/lorem \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"paragraphs":2}'{
"text": "Lorem…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/fake-data1 creditLiveSynthetic test records (not real identities)
- Create an API key in the dashboard.
- POST /v1/tools/fake-data with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/fake-data \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"count":2}'{
"note": "Synthetic test data only…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/color-palette0 creditsLiveGenerate a color palette
- Create an API key in the dashboard.
- POST /v1/tools/color-palette with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/color-palette \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"count":5}'{
"colors": ["#…"],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/text-case0 creditsLivecamel/Pascal/snake/kebab/title/…
- Create an API key in the dashboard.
- POST /v1/tools/text-case with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/text-case \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello world","case":"camel"}'{
"result": "helloWorld",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/slug0 creditsLiveURL-safe slug
- Create an API key in the dashboard.
- POST /v1/tools/slug with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/slug \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"Hello World!"}'{
"result": "hello-world",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/text-diff0 creditsLiveLine or character diff
- Create an API key in the dashboard.
- POST /v1/tools/text-diff with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/text-diff \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"one","b":"two"}'{
"changes": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/text-count0 creditsLiveCharacters, words, lines
- Create an API key in the dashboard.
- POST /v1/tools/text-count with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/text-count \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"hello world"}'{
"words": 2,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/remove-duplicates0 creditsLiveDeduplicate lines/tokens
- Create an API key in the dashboard.
- POST /v1/tools/remove-duplicates with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/remove-duplicates \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"a\na\nb"}'{
"removed": 1,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/find-replace0 creditsLiveString find/replace
- Create an API key in the dashboard.
- POST /v1/tools/find-replace with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/find-replace \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"aa","find":"a","replace":"b"}'{
"replacements": 2,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/regex-test0 creditsLiveRegex match with ReDoS limits
- Create an API key in the dashboard.
- POST /v1/tools/regex-test with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/regex-test \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"abc","pattern":"[a-z]+"}'{
"matches": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/markdown-html0 creditsLiveConvert markdown; HTML sanitized
- Create an API key in the dashboard.
- POST /v1/tools/markdown-html with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/markdown-html \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"markdown":"# Hi"}'{
"sanitized": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/html-sanitize0 creditsLiveSanitize HTML (no script execution)
- Create an API key in the dashboard.
- POST /v1/tools/html-sanitize with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/html-sanitize \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"html":"<script>x</script><b>ok</b>"}'{
"html": "<b>ok</b>",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/code-minify0 creditsLiveJSON/CSS/JS whitespace minify (no JS exec)
- Create an API key in the dashboard.
- POST /v1/tools/code-minify with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/code-minify \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"code":"{\"a\": 1}","language":"json"}'{
"result": "{\"a\":1}",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/unicode-normalize0 creditsLiveNFC/NFD/NFKC/NFKD
- Create an API key in the dashboard.
- POST /v1/tools/unicode-normalize with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/unicode-normalize \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"é","form":"NFC"}'{
"result": "é",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/string-similarity0 creditsLiveLevenshtein similarity ratio
- Create an API key in the dashboard.
- POST /v1/tools/string-similarity with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/string-similarity \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"a":"kitten","b":"sitting"}'{
"ratio": 0.57,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/timestamp0 creditsLiveConvert unix ↔ ISO
- Create an API key in the dashboard.
- POST /v1/tools/timestamp with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/timestamp \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"input":1710000000}'{
"iso": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/timezone0 creditsLiveIANA timezone conversion (DST-aware)
- Create an API key in the dashboard.
- POST /v1/tools/timezone with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/timezone \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"datetime":"2026-01-01T12:00:00Z","from":"UTC","to":"America/New_York"}'{
"to_local": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/date-difference0 creditsLiveDifference between two dates
- Create an API key in the dashboard.
- POST /v1/tools/date-difference with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/date-difference \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-01-01","end":"2026-01-02"}'{
"days": 1,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/cron-parse0 creditsLiveValidate cron + next runs
- Create an API key in the dashboard.
- POST /v1/tools/cron-parse with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/cron-parse \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"expression":"0 * * * *","timezone":"UTC"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/cron-next0 creditsLiveNext N cron executions
- Create an API key in the dashboard.
- POST /v1/tools/cron-next with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/cron-next \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"expression":"0 0 * * *","count":5}'{
"next_runs": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/file-size0 creditsLiveConvert B/KB/MB/GB/TB
- Create an API key in the dashboard.
- POST /v1/tools/file-size with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/file-size \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"value":1,"from":"mb","to":"kb"}'{
"value": 1024,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/number-base0 creditsLiveConvert bases 2/8/10/16
- Create an API key in the dashboard.
- POST /v1/tools/number-base with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/number-base \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"ff","from_base":16,"to_base":10}'{
"result": "255",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/percentage0 creditsLivepart/whole or percent of
- Create an API key in the dashboard.
- POST /v1/tools/percentage with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/percentage \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"part":25,"whole":100}'{
"percent": 25,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/url-metadata1 creditLiveFetch title/description (SSRF-safe)
- Create an API key in the dashboard.
- POST /v1/web/url-metadata with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/url-metadata \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"title": "Example Domain",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/link-preview1 creditLiveOG / Twitter card metadata
- Create an API key in the dashboard.
- POST /v1/web/link-preview with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/link-preview \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"site_name":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/scrape3 creditsLiveStatic HTML text/links/images
- Create an API key in the dashboard.
- POST /v1/web/scrape with Authorization: Bearer <key>.
- Successful calls consume 3 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/scrape \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"text":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/screenshot5 creditsLiveURL screenshot via Gotenberg
- Create an API key in the dashboard.
- POST /v1/web/screenshot with Authorization: Bearer <key>.
- Successful calls consume 5 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/screenshot \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'PNG binary
/v1/web/to-pdf5 creditsLiveURL to PDF via Gotenberg
- Create an API key in the dashboard.
- POST /v1/web/to-pdf with Authorization: Bearer <key>.
- Successful calls consume 5 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/to-pdf \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'PDF binary
/v1/web/status1 creditLiveCheck URL status + latency
- Create an API key in the dashboard.
- POST /v1/web/status with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/status \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"status": 200,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/redirects1 creditLiveFollow redirects with revalidation
- Create an API key in the dashboard.
- POST /v1/web/redirects with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/redirects \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"redirect_chain": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/broken-links8 creditsLiveCheck links on one page (strict limits)
- Create an API key in the dashboard.
- POST /v1/web/broken-links with Authorization: Bearer <key>.
- Successful calls consume 8 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/broken-links \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"broken": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/ssl1 creditLiveRead TLS certificate metadata
- Create an API key in the dashboard.
- POST /v1/web/ssl with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/ssl \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"host":"example.com"}'{
"valid_to": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/dns1 creditLiveA/AAAA/MX/TXT/CNAME
- Create an API key in the dashboard.
- POST /v1/web/dns with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/dns \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"host":"example.com"}'{
"a": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/domain-info1 creditLiveDNS-based domain records
- Create an API key in the dashboard.
- POST /v1/web/domain-info with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/domain-info \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"host":"example.com"}'{
"records": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/network/ip1 creditLiveLookup public IP geo
- Create an API key in the dashboard.
- POST /v1/tools/network/ip with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/network/ip \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"8.8.8.8"}'{
"country_code":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/network/domain2 creditsLiveRDAP registration lookup
- Create an API key in the dashboard.
- POST /v1/tools/network/domain with Authorization: Bearer <key>.
- Successful calls consume 2 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/network/domain \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com"}'{
"nameservers":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/network/ip/risk2 creditsLiveVPN/proxy/TOR heuristic risk
- Create an API key in the dashboard.
- POST /v1/tools/network/ip/risk with Authorization: Bearer <key>.
- Successful calls consume 2 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/network/ip/risk \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"ip":"8.8.8.8"}'{
"risk":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/favicon1 creditLiveResolve favicon URL
- Create an API key in the dashboard.
- POST /v1/web/favicon with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/favicon \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"favicon_url": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/robots1 creditLiveFetch robots.txt
- Create an API key in the dashboard.
- POST /v1/web/robots with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/robots \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"robots": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/sitemap2 creditsLiveParse sitemap URLs (capped)
- Create an API key in the dashboard.
- POST /v1/web/sitemap with Authorization: Bearer <key>.
- Successful calls consume 2 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/sitemap \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"urls": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/technology-detect3 creditsLiveHeuristic stack detection
- Create an API key in the dashboard.
- POST /v1/web/technology-detect with Authorization: Bearer <key>.
- Successful calls consume 3 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/technology-detect \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"technologies": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/web/performance5 creditsLiveLightweight fetch timing
- Create an API key in the dashboard.
- POST /v1/web/performance with Authorization: Bearer <key>.
- Successful calls consume 5 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/web/performance \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"ttfb_estimate_ms": 120,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/verify/phone0 creditsLivelibphonenumber format check
- Create an API key in the dashboard.
- POST /v1/tools/verify/phone with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/verify/phone \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"phone":"+14155552671","default_country":"US"}'{
"valid":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/utility/short-url1 creditLiveCreate short redirect link
- Create an API key in the dashboard.
- POST /v1/tools/utility/short-url with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/utility/short-url \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'{
"short_url":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/tools/ocr3 creditsLiveTesseract OCR on images
- Create an API key in the dashboard.
- POST /v1/tools/ocr with Authorization: Bearer <key>.
- Successful calls consume 3 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/ocr \ -H "Authorization: Bearer fb_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '(multipart file)'
{
"text":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/document/extract5 creditsLiveInvoice/receipt field heuristics
- Create an API key in the dashboard.
- POST /v1/tools/document/extract with Authorization: Bearer <key>.
- Successful calls consume 5 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/tools/document/extract \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Invoice #1\nTotal: $10","schema":"invoice"}'{
"fields":
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/validate0 creditsLiveSyntax, MX, disposable, role (no SMTP probe)
- Create an API key in the dashboard.
- POST /v1/email/validate with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'{
"note": "Does not prove the mailbox exists…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/domain-check0 creditsLiveMX + SPF-like TXT
- Create an API key in the dashboard.
- POST /v1/email/domain-check with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/domain-check \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"domain":"example.com"}'{
"mx": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/disposable-check0 creditsLiveDisposable domain detection
- Create an API key in the dashboard.
- POST /v1/email/disposable-check with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/disposable-check \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"a@mailinator.com"}'{
"disposable": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/role-check0 creditsLiveRole-based local-part detection
- Create an API key in the dashboard.
- POST /v1/email/role-check with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/role-check \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com"}'{
"role_based": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/normalize0 creditsLiveNormalize email address
- Create an API key in the dashboard.
- POST /v1/email/normalize with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/normalize \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"User@Example.com"}'{
"normalized": "user@example.com",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/gravatar0 creditsLiveGravatar URL from email hash
- Create an API key in the dashboard.
- POST /v1/email/gravatar with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/gravatar \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"user@example.com"}'{
"url": "https://www.gravatar.com/…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/email/batch-validate2 creditsLiveValidate up to 100 emails
- Create an API key in the dashboard.
- POST /v1/email/batch-validate with Authorization: Bearer <key>.
- Successful calls consume 2 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/email/batch-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"emails":["a@example.com"]}'{
"count": 1,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/openapi-validate1 creditLiveStructural OpenAPI checks
- Create an API key in the dashboard.
- POST /v1/dev/openapi-validate with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/openapi-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"spec":"{\"openapi\":\"3.0.3\",\"info\":{},\"paths\":{}}"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/openapi-convert1 creditLiveBest-effort OpenAPI 3 stamp
- Create an API key in the dashboard.
- POST /v1/dev/openapi-convert with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/openapi-convert \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"spec":"{…}"}'{
"note": "Best-effort…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/json-to-typescript1 creditLiveInfer TS interface from JSON
- Create an API key in the dashboard.
- POST /v1/dev/json-to-typescript with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/json-to-typescript \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}","name":"Root"}'{
"code": "export interface Root…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/json-to-model1 creditLiveGenerate model stubs for many languages
- Create an API key in the dashboard.
- POST /v1/dev/json-to-model with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/json-to-model \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"json":"{\"a\":1}","language":"python"}'{
"code": "class Root…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/http-request2 creditsLiveSSRF-safe HTTP tester
- Create an API key in the dashboard.
- POST /v1/dev/http-request with Authorization: Bearer <key>.
- Successful calls consume 2 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/http-request \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","method":"GET"}'{
"status": 200,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/response-validate1 creditLiveValidate status + JSON body
- Create an API key in the dashboard.
- POST /v1/dev/response-validate with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/response-validate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"body":"{}","status":200,"expect_status":200}'{
"json_ok": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/mock-response1 creditLiveBuild a mock HTTP response object
- Create an API key in the dashboard.
- POST /v1/dev/mock-response with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/mock-response \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"status":200,"body":{"ok":true}}'{
"status": 200,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/sql-format0 creditsLiveFormat SQL (never executed)
- Create an API key in the dashboard.
- POST /v1/dev/sql-format with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/sql-format \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"sql":"select * from t"}'{
"note": "Formatting only…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/graphql-format0 creditsLiveFormat GraphQL (never executed)
- Create an API key in the dashboard.
- POST /v1/dev/graphql-format with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/graphql-format \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"{ hero { name } }"}'{
"result": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/curl-generate0 creditsLiveGenerate a cURL command
- Create an API key in the dashboard.
- POST /v1/dev/curl-generate with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/curl-generate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","method":"GET"}'{
"curl": "curl …",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/dev/curl-to-code1 creditLiveBest-effort cURL to JS/Python
- Create an API key in the dashboard.
- POST /v1/dev/curl-to-code with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/dev/curl-to-code \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"curl":"curl https://example.com","language":"javascript"}'{
"code": "const res = await fetch…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/webhooks/endpoints1 creditLiveCreate a unique capture inbox URL
- Create an API key in the dashboard.
- POST /v1/webhooks/endpoints with Authorization: Bearer <key>.
- Successful calls consume 1 credit(s).
- Use request_id and credit fields for logging.
curl -X POST https://thefatbaby.com/api/v1/webhooks/endpoints \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"My inbox"}'{
"endpoint": { "inbox_url": "…" },
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/webhooks/endpoints0 creditsLiveList your webhook inboxes
- Create an API key in the dashboard.
- POST /v1/webhooks/endpoints with Authorization: Bearer <key>.
- This tool is free (0 credits) but still rate-limited.
- Use request_id and credit fields for logging.
curl https://thefatbaby.com/api/v1/webhooks/endpoints \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"endpoints": [],
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/webhooks/sign0 creditsLiveHMAC-SHA256 sign a payload
- POST /v1/webhooks/sign with payload + secret. Secrets are not logged.
curl -X POST https://thefatbaby.com/api/v1/webhooks/sign \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":"{}","secret":"…"}'{
"signature": "…",
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}/v1/webhooks/verify0 creditsLiveVerify HMAC-SHA256 signature
- POST /v1/webhooks/verify with payload, secret, signature.
curl -X POST https://thefatbaby.com/api/v1/webhooks/verify \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"payload":"{}","secret":"…","signature":"…"}'{
"valid": true,
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 99
}AI / LLM (Ollama)
Self-hosted Ollama chat and generate via FatBaby — 50K free tokens/month then 1 credit / 1K tokens. Models are allowlisted on the VPS.
/v1/ollama/chat1 / 1K tokens · 50K free/moLiveChat completion via self-hosted Ollama (non-streaming). Optional model must be allowlisted. Billed by tokens: 1 credit / 1K tokens (prompt+completion) after a shared 50K free tokens/month pool with generate and help.chat.
- Create an API key in the dashboard.
- POST application/json with messages: [{ role, content }] to /v1/ollama/chat.
- Optional: model (allowlisted only), temperature, max_tokens / num_predict. Do not set stream: true yet.
- Read message.content plus usage (tokens, free_tokens_applied, credits_charged) and credits_used.
curl -X POST https://thefatbaby.com/api/v1/ollama/chat \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Say hello in one short sentence."}]}'{
"ok": true,
"provider": "ollama",
"model": "llama3.2:1b",
"message": { "role": "assistant", "content": "Hello!" },
"choices": [{ "index": 0, "message": { "role": "assistant", "content": "Hello!" }, "finish_reason": "stop" }],
"done": true,
"streaming": false,
"usage": {
"prompt_tokens": 12,
"completion_tokens": 4,
"total_tokens": 16,
"free_tokens_applied": 16,
"billable_tokens": 0,
"credits_charged": 0,
"free_tokens_remaining": 49984,
"pricing": "1 credit / 1K tokens (prompt+completion). 50K tokens free / month."
},
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 100
}/v1/ollama/generate1 / 1K tokens · 50K free/moLiveSingle-prompt text generation via self-hosted Ollama (non-streaming). Same token meter + shared 50K free/month pool as chat.
- POST { "prompt": "…" } with your API key.
- Optional system, model (allowlisted), temperature, max_tokens.
- Response includes response string, usage block, and credit fields.
curl -X POST https://thefatbaby.com/api/v1/ollama/generate \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt":"Write a one-line tagline for an API platform."}'{
"ok": true,
"provider": "ollama",
"model": "llama3.2:1b",
"response": "…",
"done": true,
"streaming": false,
"usage": {
"total_tokens": 40,
"free_tokens_applied": 40,
"billable_tokens": 0,
"credits_charged": 0,
"free_tokens_remaining": 49960,
"pricing": "1 credit / 1K tokens (prompt+completion). 50K tokens free / month."
},
"request_id": "req_…",
"credits_used": 0,
"credits_remaining": 100
}/v1/ollama/models0 creditsLiveList allowlisted models installed on the self-hosted Ollama container (free).
- GET /v1/ollama/models with Authorization: Bearer <key>.
- Use only names in allowed_models / models for chat and generate.
curl https://thefatbaby.com/api/v1/ollama/models \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"ok": true,
"provider": "ollama",
"default_model": "llama3.2:1b",
"allowed_models": ["llama3.2:1b"],
"models": [{ "name": "llama3.2:1b", "size": 1330000000 }],
"credits_used": 0,
"request_id": "req_…"
}/v1/ollama/health0 creditsLiveAPI-key probe for self-hosted Ollama readiness (also public GET /health/ollama).
- GET /v1/ollama/health with your API key, or GET /health/ollama without a key for a basic probe.
curl https://thefatbaby.com/api/v1/ollama/health \ -H "Authorization: Bearer fb_live_YOUR_KEY"
{
"ok": true,
"provider": "ollama",
"model": "llama3.2:1b",
"streaming": false,
"credits_used": 0,
"request_id": "req_…"
}/v1/help/chat1 / 1K tokens · 50K free/moLiveThin wrapper over Ollama with a FatBaby help system prompt. Shares the Ollama 50K free tokens/month pool; then 1 credit / 1K tokens. Dashboard Help UI still deferred.
- POST { "message": "How do credits work?" } with your API key.
- For general LLM use prefer /v1/ollama/chat.
curl -X POST https://thefatbaby.com/api/v1/help/chat \
-H "Authorization: Bearer fb_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"How do FatBaby API credits work?"}'{
"ok": true,
"provider": "ollama",
"model": "llama3.2:1b",
"reply": "…",
"usage": {
"credits_charged": 0,
"free_tokens_remaining": 49900,
"pricing": "1 credit / 1K tokens (prompt+completion). 50K tokens free / month."
},
"credits_used": 0,
"request_id": "req_…"
}Limits
- Image upload size: 20 MB per request
- Image dimension cap: 10,000 px per side (configurable server-side)
- Image pixel budget: 40,000,000 pixels
- Media duration, resolution and upload caps apply — check
GET /v1/capabilities - IP and per-API-key rate limits apply
Roadmap
Same authentication and credits. Paths below are reserved so you can plan integrations.
