Integrate Forge (AI detection bypass), Utilities, and Studio (image/video generation) into your own platform. Authenticate with an API key, submit jobs, and poll until results are ready.
Auth — API key Bearer token
Create a key under Settings → API Keys (shown once). Send Authorization: Bearer phg_… on every request. Keys are rate-limited (default 100 req/min).
Credits
Check balance with GET /api/v1/credits. Credits are deducted when a job is accepted and refunded if processing fails. Forge uses 1–3 credits per image; Studio image jobs cost 3 paid credits; Studio video cost depends on model/resolution/duration.
Forge vs Studio
Forge (/api/v1/process) takes an existing photo and stealth-processes it against AI detectors. Studio (/api/v1/studio/jobs) generates or edits images and videos from a prompt (and optional references). Utilities remain under /api/v1/utilities.
Submit, then poll
Every async endpoint returns a jobId with 202. Poll the matching GET …/jobs/:jobId every 2–5s until status is done or failed. Studio responses never include your prompt text.
BASE URL
https://phlegethon.icu/api/v1Default rate limit
100 requests/minute per API key. Exceeding returns 429 Too Many Requests.
Error format
All errors return JSON: { error: string, message: string }
Credits
Forge: 1 credit base (camera +1, double-pass +1). Studio image: 3 paid credits. Studio video: quoted by model/resolution/duration. Deducted on submit; refunded on failure.
Job polling
Poll every 2–5 seconds. Jobs typically complete in 5–20 seconds. Timed-out jobs are automatically restarted once.
Returns the current credit balance for the authenticated account.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/credits" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"credits": 14,
"refreshCredits": 2,
"totalProcessed": 47
}Submit an image for AI detection bypass processing. Accepts either a file upload or a URL. Returns a job ID — poll GET /api/v1/jobs/:jobId for the result.
REQUEST BODY (multipart/form-data or application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| image | File | No | Image file (JPEG, PNG, WebP, max 20MB). Use multipart/form-data. |
| imageUrl | string | No | URL of an image to process (alternative to file upload). |
| detector | string | No | Target detector: "truthscan" (default) or "sightengine". |
| intensity | string | No | Forge intensity: "light" (default, recommended), "normal", "aggressive", "max". Higher intensity = stronger bypass but more visible artifacts. |
| imageType | string | No | Image type: "realistic" (default). "anime" is coming soon — returns 400 if used. |
| cameraMode | boolean | No | Enable camera mode (+1 credit). Adds authentic EXIF camera sensor metadata. |
| doublePass | boolean | No | Run the pipeline twice for deeper stealth. Works best when intensity alone isn't enough (+1 credit). |
| deviceProfile | string | No | Device EXIF profile (requires cameraMode=true): "iphone15", "iphone14", "samsung_s24", "pixel8", "zflip6", "oneplus12". |
EXAMPLE
# File upload
curl -X POST "https://phlegethon.icu/api/v1/process" \
-H "Authorization: Bearer phg_your_api_key" \
-F "image=@/path/to/image.jpg" \
-F "detector=truthscan" \
-F "mode=standard"
# URL-based
curl -X POST "https://phlegethon.icu/api/v1/process" \
-H "Authorization: Bearer phg_your_api_key" \
-H "Content-Type: application/json" \
-d '{"imageUrl":"https://example.com/photo.jpg","detector":"truthscan"}'RESPONSE (200 OK)
{
"jobId": "abc123xyz",
"status": "queued",
"message": "Job submitted. Poll GET /api/v1/jobs/:jobId for status.",
"creditsUsed": 1
}Poll this endpoint after submitting a job. Status transitions: queued → running → done | failed.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/jobs/abc123xyz" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"jobId": "abc123xyz",
"status": "done",
"detector": "truthscan",
"mode": "standard",
"doublePass": false,
"creditsUsed": 1,
"processedUrl": "https://cdn.example.com/processed/abc123.jpg",
"errorMessage": null,
"createdAt": "2026-04-16T10:00:00.000Z",
"updatedAt": "2026-04-16T10:00:15.000Z"
}Returns a list of your most recent jobs, ordered by creation date.
QUERY PARAMETERS
| Param | Type | Description |
|---|---|---|
| limit | number | Max number of jobs to return (default: 20, max: 100) |
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/jobs?limit=10" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"jobs": [
{
"jobId": "abc123",
"status": "done",
"detector": "truthscan",
"creditsUsed": 1,
"processedUrl": "https://...",
"createdAt": "2026-04-16T10:00:00.000Z"
}
],
"count": 1
}Returns all API keys for your account (key values are never returned after creation).
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/keys" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"keys": [
{
"id": "key_abc",
"name": "Production",
"prefix": "phg_ab12",
"isActive": true,
"rateLimit": 100,
"createdAt": "2026-04-16T10:00:00.000Z",
"lastUsedAt": "2026-04-16T11:00:00.000Z"
}
]
}Creates a new API key. The full key is returned only once — store it securely.
REQUEST BODY (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Human-readable label (e.g., "Production", "Dev"). |
| rateLimit | number | No | Requests per minute (default: 100, max: 1000). |
| expiresAt | ISO date string | No | Optional expiration date. |
EXAMPLE
curl -X POST "https://phlegethon.icu/api/v1/keys" \
-H "Authorization: Bearer phg_your_api_key" \
-H "Content-Type: application/json" \
-d '{"name":"Production","rateLimit":100}'RESPONSE (200 OK)
{
"id": "key_abc",
"name": "Production",
"key": "phg_abc123...32chars",
"prefix": "phg_ab12",
"rateLimit": 100,
"message": "Save this key securely — it will not be shown again."
}Permanently deletes an API key. All requests using this key will immediately fail.
EXAMPLE
curl -X DELETE "https://phlegethon.icu/api/v1/keys/key_abc" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"success": true,
"message": "API key deleted"
}Returns API usage statistics for the current key over the last 24 hours.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/usage" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"apiKeyId": "key_abc",
"apiKeyName": "Production",
"last24Hours": {
"totalRequests": 142,
"totalCreditsUsed": 89,
"avgResponseTime": 3420,
"errorCount": 2
}
}Apply professional image tools to any photo — background removal, enhancement, colorization, and more. Each tool is an async job: submit, get a jobId, then poll for the result.
Returns the full catalog of available utility tools with credit costs and accepted parameters.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/utilities/tools" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"tools": [
{
"tool": "remove-background",
"name": "Background Removal",
"description": "Removes the background.",
"credits": 0.5,
"params": []
}
]
}Submit an image to a utility tool. Accepts a file upload (multipart/form-data) or an imageUrl. Returns a jobId — poll GET /api/v1/utilities/jobs/:jobId for the result.
REQUEST BODY (multipart/form-data or application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| tool | string | Yes | Tool slug from GET /utilities/tools. E.g. "remove-background", "enhance-photo", "colorize-photo". |
| image | File | No | Image file (JPEG, PNG, WebP, max 20MB). Use multipart/form-data. |
| imageUrl | string | No | URL of an image (alternative to file upload). |
| mode | string | No | For enhance-photo and id-photo: "standard" (default) or "advanced". |
| sceneType | string | No | For generate-background: "studio", "outdoor", "indoor", "nature", or "abstract". |
| bgColor | string | No | For id-photo: background hex color (e.g. "#ffffff"). |
| expandRatio | number | No | For expand-image: expansion ratio between 1.1 and 3.0 (default 1.5). |
EXAMPLE
curl -X POST "https://phlegethon.icu/api/v1/utilities/process" \
-H "Authorization: Bearer phg_your_api_key" \
-F "tool=remove-background" \
-F "image=@/path/to/photo.jpg"RESPONSE (200 OK)
{
"jobId": "util_abc123",
"status": "queued",
"tool": "remove-background",
"message": "Job submitted. Poll GET /api/v1/utilities/jobs/:jobId for status.",
"creditsUsed": 0.5
}Returns the current status of a utility job. Poll every 2–5 seconds until status is 'done' or 'failed'.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/utilities/jobs/util_abc123" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"jobId": "util_abc123",
"status": "done",
"tool": "remove-background",
"creditsUsed": 0.5,
"processedUrl": "https://cdn.example.com/result.png",
"errorMessage": null,
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:05Z"
}Returns the credit cost for a Studio video job without starting it. Alias: GET /api/v1/studio/quote?model=&resolution=&duration=. Uses the same pricing as job submit. Model is normalized to a canonical styx-* key in the response.
REQUEST BODY (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| model | string | Yes | styx-t2v | styx-i2v | styx-r2v | styx-prime-* | styx-light-* (same public keys as create job). |
| resolution | string | Yes | Styx / Prime: 480p | 720p | 1080p. Light: 768p | 2k. |
| duration | number | Yes | Clip length in seconds (or Smart −1 where supported). |
EXAMPLE
curl -X POST "https://phlegethon.icu/api/v1/studio/quote" -H "Authorization: Bearer phg_your_api_key" -H "Content-Type: application/json" -d '{"model":"styx-t2v","resolution":"720p","duration":10}'RESPONSE (200 OK)
{
"creditCost": 6.1,
"model": "styx-t2v",
"resolution": "720p",
"duration": 10
}Returns public Studio video families (Styx, Styx Prime, Styx Light) with labels, sizes, aspect ratios, duration caps, and audio mode. No provider internals.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/studio/video/catalog" -H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"families": [
{
"id": "styx",
"label": "Phlegethon Styx",
"modes": [
{
"mode": "t2v",
"sizes": [
"480p",
"720p",
"1080p"
],
"audioMode": "toggleable"
}
]
},
{
"id": "styx-prime",
"label": "Phlegethon Styx Prime",
"modes": [
{
"mode": "t2v",
"sizes": [
"480p",
"720p",
"1080p"
],
"audioMode": "toggleable"
}
]
},
{
"id": "styx-light",
"label": "Phlegethon Styx Light",
"modes": [
{
"mode": "t2v",
"sizes": [
"768p",
"2k"
],
"audioMode": "automatic"
}
]
}
]
}Generate or edit images and videos with the same Creative Studio pipeline used in the product UI. Submit a prompt (and optional references), receive a jobId, then poll for an outputUrl. Prompts are never returned in API responses. Video models are Styx, Styx Prime, and Styx Light. Quote credits with POST /api/v1/studio/quote. Styx Light always includes automatic audio.
Start an image generate/edit or video job. Alias: POST /api/v1/studio/generate. Image jobs cost 3 paid credits. For video, model + resolution + duration are required; cost matches POST /quote. Optional multipart field references uploads reference images for edit / i2v / r2v. Styx Light includes automatic audio.
REQUEST BODY (application/json or multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Generation prompt. Stored server-side only — never returned by GET endpoints. |
| modality | string | No | "image" (default) or "video". |
| size | string | No | Image size, e.g. "1024*1024". Larger sizes may require Inferno. |
| outputFormat | string | No | "jpeg" (default) or "png" (Inferno). |
| quality | string | No | "draft" (default) or "production" (Inferno). |
| referenceAssetIds | string[] | No | Existing Studio library asset IDs to use as references. |
| referenceUrls | string[] | No | Public image URLs to ingest as references (JPEG/PNG/WebP). |
| references | File[] | No | Multipart reference image uploads (max 10). |
| forgeAfterGeneration | boolean | No | Image only: queue Forge after generation when supported. |
| model | string | No | Required for video. Public keys: styx-t2v | styx-i2v | styx-r2v | styx-prime-t2v | styx-prime-i2v | styx-prime-r2v | styx-light-t2v | styx-light-i2v | styx-light-r2v. |
| resolution | string | No | Required for video. Styx / Styx Prime: 480p | 720p | 1080p. Styx Light: 768p | 2k. |
| duration | number | No | Required for video. Styx: 2–30s (Smart −1 ok). Prime: 4–30s (Smart on r2v). Light: 5–15s. |
| ratio | string | No | Video only: adaptive (default), 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 (availability varies by model). Light i2v omits aspect ratio. |
| audio | boolean | No | Video only. Styx / Prime: optional native audio (default true). Styx Light: automatic audio always on — omit or leave true. |
EXAMPLE
curl -X POST "https://phlegethon.icu/api/v1/studio/jobs" \
-H "Authorization: Bearer phg_your_api_key" \
-H "Content-Type: application/json" \
-d '{"prompt":"cinematic portrait, soft window light","modality":"image","size":"1024*1024","quality":"draft"}'RESPONSE (200 OK)
{
"jobId": "studio_abc123",
"status": "queued",
"kind": "generate",
"modality": "image",
"creditsUsed": 3,
"outputUrl": null,
"message": "Job submitted. Poll GET /api/v1/studio/jobs/:jobId for status."
}Returns status, safe settings, credits used, progress (when available), and outputUrl when ready. Prompt text is never included.
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/studio/jobs/studio_abc123" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"jobId": "studio_abc123",
"status": "done",
"kind": "generate",
"modality": "image",
"creditsUsed": 3,
"outputUrl": "https://cdn.example.com/studio-result.jpg",
"settings": {
"modality": "image",
"size": "1024*1024",
"quality": "draft"
},
"progress": null,
"errorMessage": null,
"createdAt": "2026-09-06T00:00:00Z",
"completedAt": "2026-09-06T00:00:18Z"
}Lists recent Studio jobs for the authenticated account (newest first). Prompts are omitted.
QUERY PARAMETERS
| Param | Type | Description |
|---|---|---|
| limit | number | Max jobs to return (default 20, max 100). |
EXAMPLE
curl -X GET "https://phlegethon.icu/api/v1/studio/jobs?limit=10" \
-H "Authorization: Bearer phg_your_api_key"RESPONSE (200 OK)
{
"jobs": [
{
"jobId": "studio_abc123",
"status": "done",
"modality": "image",
"creditsUsed": 3,
"outputUrl": "https://cdn.example.com/studio-result.jpg"
}
],
"count": 1
}FORGE INTENSITY
| Value | Credits | Description |
|---|---|---|
| lightRECOMMENDED | 1 | Enough for most images. Virtually no visible change to the human eye. |
| normal | 1 | Slightly stronger. Still very clean output. |
| aggressive | 1 | Noticeable artifacts on close inspection. Use when light/normal fail. |
| max | 1 | Maximum processing. Significant visible artifacts. Last resort only. |
TARGET DETECTORS
| Value | Status | Description |
|---|---|---|
| truthscan | Available | Bypasses TruthScan, ZeroGPT, Decopy AI, and more. Recommended. |
| sightengine | Coming Soon | Sightengine & Hive Moderation support — in development. |
FORGE OPTIONS
| Option | Extra Cost | Description |
|---|---|---|
| cameraMode=true | +1 credit | Injects authentic camera sensor EXIF data. Recommended for forensic-level detectors. |
| doublePass=true | +1 credit | Runs the pipeline twice for deeper stealth. Best when a single pass isn't enough. |
| deviceProfile | free | Sets a specific device EXIF profile (e.g. iphone15). Requires cameraMode=true. |