API Reference
Complete reference for all API endpoints.
Base URL
https://app.neuroviz.ai/api/v1/api/v1/runSubmit a new image generation job. The job will be processed asynchronously and results will be sent to your webhook URL.
Request Headers
AuthorizationstringrequiredBearer token with your API keyContent-TypestringrequiredMust be application/jsonRequest Body
app_idstringrequiredThe unique identifier of the app to runparametersobjectrequiredApp-specific parameters (see Available Apps for each app's parameters)webhook_urlstringrequiredURL where results will be sent when processing completesExample Request
{
"app_id": "your-app-id",
"parameters": {
"image": "https://example.com/your-image.jpg",
"style": "natural"
},
"webhook_url": "https://your-server.com/webhook"
}Response
{
"run_id": "abc123-def456-ghi789"
}Retoucher output settingsThe jewelry retoucher apps (Rescue, Precision) accept an optional set of post-processing parameters in the parameters object of POST /run. All of them are optional — omit them and the model output is returned unchanged.
Background & Shadow
bg_modestringoptional"off" (default), "solid" or "transparent". "solid" removes the background and composites the item on bg_color; "transparent" removes it and saves a PNG with alpha. Either non-"off" mode adds +3 credits to the run.bg_colorstringoptionalHex color for the solid background (e.g. "#ffffff"). Only used when bg_mode = "solid".bg_shadowbooleanoptionalAdds a natural soft contact shadow under the item on the solid background. Only applies when bg_mode = "solid". Free — no extra credits.Shadow fine-tuning (optional)
API-key accounts can tune the shadow per run. When omitted, your saved User Settings shadow defaults apply. Out-of-range values are clamped, and the parameters are ignored unless bg_mode = "solid" with bg_shadow = true.
shadow_intensitynumberoptionalShadow darkness/opacity multiplier. Range 0.1–3, default 1.shadow_sizenumberoptionalShadow footprint size multiplier. Range 0.2–3, default 1.shadow_softnessnumberoptionalShadow edge blur multiplier. Range 0.2–3, default 1.shadow_distancenumberoptionalShadow offset from the item as a fraction of its size. Range 0–0.2, default 0.Framing / crop control
framing_enabledbooleanoptionalCrops the item precisely and re-frames it with per-side padding. The output keeps the selected aspect ratio and the item is never scaled. Free — no extra credits.framing_pad_topnumberoptionalTop padding as a percent of the item's longest side. Range 0–100, default 15.framing_pad_rightnumberoptionalRight padding, percent of the item's longest side. Range 0–100, default 15.framing_pad_bottomnumberoptionalBottom padding, percent of the item's longest side. Range 0–100, default 15.framing_pad_leftnumberoptionalLeft padding, percent of the item's longest side. Range 0–100, default 15.De-banding
debandingbooleanoptionalRemoves the subtle wave-like banding that can appear on polished metal and smooth gradients. Adds +1 credit. The run returns TWO outputs: the de-banded image on output_url and the untouched original in extra_outputs — see the run status endpoint below.debanding = true keeps the untouched original next to the de-banded result. Poll GET /runs/{run_id}: output_url is the de-banded image (primary_label = "De-Banded"), and extra_outputs lists the "Original" with its own presigned URL.Your Webhook URLWhen processing completes (success or failure), we send a POST request to your webhook URL with the results.
Webhook Payload
run_idstringoptionalThe ID of the run that was submittedstatusstringoptionalEither "SUCCESS" or "FAILURE"output_urlstringoptionalURL to download the generated image (only on success)thumbnailstringoptionalURL to a smaller thumbnail version (only on success)errorstringoptionalError message (only on failure)Success Example
{
"run_id": "abc123-def456-ghi789",
"status": "SUCCESS",
"output_url": "https://cdn.neuroviz.ai/outputs/result.png",
"thumbnail": "https://cdn.neuroviz.ai/outputs/result_thumb.png"
}Failure Example
{
"run_id": "abc123-def456-ghi789",
"status": "FAILURE",
"error": "Invalid image URL or image could not be downloaded"
}/api/v1/runs/{run_id}Get the status and output of a single run. Use this to poll for results as an alternative to webhooks, or to retrieve the output URL after your webhook receives a success notification.
Path Parameters
run_idstringrequiredThe run ID returned from POST /api/v1/runResponse Fields
run_idstringoptionalThe unique run identifierapp_idstringoptionalThe app that was runapp_titlestringoptionalHuman-readable app namestatusstringoptionalIN_QUEUE, IN_PROGRESS, SUCCESS, or FAILEDcreatedstringoptionalISO 8601 timestamp when the run was submittedcompletedstringoptionalISO 8601 timestamp when processing finished (only if completed)credits_chargedintegeroptionalNumber of credits charged for this runoutput_urlstringoptionalSigned URL to download the output (only if SUCCESS, expires in 15 minutes)errorstringoptionalError message (only if FAILED)is_videobooleanoptionalWhether the output is a video fileextra_outputsarrayoptionalSecondary stored outputs, present only when a SUCCESS run produced more than one file (e.g. the untouched original kept beside a de-banded retoucher output). Each entry carries label, slug, format and its own presigned url with the same 15-minute expiry as output_url.primary_labelstringoptionalWhat output_url contains when extra_outputs is present (e.g. "De-Banded").Success Example (completed run)
{
"run_id": "abc123-def456-ghi789",
"app_id": "your-app-id",
"app_title": "Virtual Try On Bracelet",
"status": "SUCCESS",
"created": "2026-04-04T19:20:00Z",
"completed": "2026-04-04T19:21:30Z",
"credits_charged": 20,
"output_url": "https://signed-s3-url...",
"is_video": false
}Two-Output Example (De-banding enabled)
Retoucher runs submitted with debanding = true keep the untouched original beside the de-banded primary — both downloadable via their own presigned URLs.
{
"run_id": "abc123-def456-ghi789",
"app_id": "your-app-id",
"app_title": "Jewelry Retoucher Rescue",
"status": "SUCCESS",
"created": "2026-08-06T19:20:00Z",
"completed": "2026-08-06T19:21:30Z",
"credits_charged": 6,
"output_url": "https://signed-s3-url...",
"is_video": false,
"primary_label": "De-Banded",
"extra_outputs": [
{
"label": "Original",
"slug": "original",
"format": "png",
"url": "https://signed-s3-url..."
}
]
}In Progress Example
{
"run_id": "abc123-def456-ghi789",
"app_id": "your-app-id",
"app_title": "Virtual Try On Bracelet",
"status": "IN_PROGRESS",
"created": "2026-04-04T19:20:00Z",
"credits_charged": 20,
"is_video": false
}/api/v1/runsList your recent runs with pagination. Useful for reviewing history and finding run IDs.
Query Parameters
pageintegeroptionalPage number, starting from 1 (default: 1)limitintegeroptionalResults per page, max 50 (default: 20)statusstringoptionalFilter by status: SUCCESS, FAILED, IN_QUEUE, IN_PROGRESS, or all (default: all)Response
{
"runs": [
{
"run_id": "abc123-def456-ghi789",
"app_id": "your-app-id",
"app_title": "Virtual Try On Bracelet",
"status": "SUCCESS",
"created": "2026-04-04T19:20:00Z",
"credits_charged": 20
}
],
"total": 142,
"page": 1,
"has_more": true
}/api/v1/balanceCheck your current credit balance. Use this to verify you have enough credits before submitting runs.
Response Fields
total_creditsintegeroptionalTotal available credits (subscription + other)subscription_creditsintegeroptionalCredits from your subscription planother_creditsintegeroptionalCredits from add-on purchasessubscriptionstringoptionalYour subscription tier namecredits_expirestringoptionalISO 8601 expiration date (null for Pro members)Example Response
{
"total_credits": 1234,
"subscription_credits": 1000,
"other_credits": 234,
"subscription": "Pro",
"credits_expire": "2027-04-04T00:00:00Z"
}/api/v1/runs/{run_id}/downloadGet a signed download URL for a completed run's output. The URL expires after 15 minutes.
Path Parameters
run_idstringrequiredThe run ID of a completed (SUCCESS) runResponse Fields
download_urlstringoptionalSigned URL to download the output filefilenamestringoptionalSuggested filename (e.g., neuroviz_output.png)expires_inintegeroptionalURL expiry time in seconds (900 = 15 minutes)Example Response
{
"download_url": "https://signed-s3-url...",
"filename": "neuroviz_output.png",
"expires_in": 900
}/api/v1/appsList all apps available for API access. This endpoint does not require authentication.
Response
Returns an array of app objects with their parameters. See Available Apps for details.