Build with nocensor.ai
REST API for image generation, video, face swap, enhance, and multi-stage pipelines. Scoped API key auth, async job polling, webhooks — same credit system as the UI.
API key auth
Bearer token with per-key rate limits. Max 5 keys per account.
Async jobs
202 Accepted + polling. No blocking requests. Signed URLs when complete.
Same credit system
Credits deducted on submission. Failed jobs auto-refunded by cron.
Prompt safety
Same content filter as the UI. CSAM blocked at all tiers.
Authentication
All endpoints (except /api/v1/health) require a Bearer token:
Authorization: Bearer nc_live_<your_key>
API keys are generated in Settings → API Keys. Keys are shown once at creation — store them securely.
Each key carries one or more scopes. Using a key on an endpoint outside its scope returns 403 INSUFFICIENT_SCOPE.
| Scope | Grants access to |
|---|---|
| generation | POST /generate, /video, /face-swap, /enhance, /pipelines |
| mgmt | GET /jobs, /account, /credits, /payments, /models, /characters |
| webhooks | All /webhooks/* endpoints |
API Reference
Full OpenAPI 3.1 spec available at /openapi.yaml.
Generation
/api/v1/generateGenerate an image
Submit a prompt (and optional source image for img2img) to generate an SDXL image.
/api/v1/videoGenerate a video (txt2video or img2video)
/api/v1/undressUndress an image (requires biometric consent)
/api/v1/face-swapFace-swap an image (requires biometric consent)
/api/v1/enhanceEnhance an image
Run a single enhancement op (upscale, face-restore, bg-replace, attach-object).
Pipelines
/api/v1/pipelinesRun a multi-stage pipeline
/api/v1/pipelines/{id}Get pipeline status
Jobs
/api/v1/jobsList recent jobs
/api/v1/jobs/{id}Get a job by ID
/api/v1/jobs/{id}Cancel a job
Webhooks
/api/v1/webhooksList webhooks
/api/v1/webhooksCreate a webhook
/api/v1/webhooks/{id}Get a webhook
/api/v1/webhooks/{id}Update a webhook
/api/v1/webhooks/{id}Delete a webhook
/api/v1/webhooks/{id}/deliveriesList webhook deliveries
/api/v1/webhooks/{id}/testSend a test event to a webhook
Account
/api/v1/accountGet current account
/api/v1/creditsGet remaining credits
/api/v1/charactersList available characters
Returns unlockable character LoRAs with unlock status and progress for the authenticated user.
/api/v1/paymentsList recent payments
System
/api/v1/healthHealth check
/api/v1/modelsList available models
Quick start
Submit an image generation job and poll for the result:
1. Submit a job (202 Accepted)
curl -X POST https://nocensor.ai/api/v1/generate \
-H "Authorization: Bearer nc_live_<your_key>" \
-H "Content-Type: application/json" \
-d '{"prompt": "beautiful woman, photorealistic", "model": "realistic"}'
# 202 Accepted
# {
# "data": { "id": "job_...", "status": "pending" },
# "meta": { "poll_url": "/api/v1/jobs/job_...", "credits_remaining": 490 }
# }2. Poll until complete
curl https://nocensor.ai/api/v1/jobs/<job_id> \
-H "Authorization: Bearer nc_live_<your_key>"
# 200 OK — when done:
# {
# "data": {
# "id": "job_...", "status": "completed",
# "outputs": [{ "url": "https://...", "media_type": "image", "expires_at": "..." }]
# }
# }Rate limits
| Limit | Value | Scope |
|---|---|---|
| Generation | 10 rpm | POST /generate, /video, /face-swap, /enhance, /pipelines |
| Management | 60 rpm | GET /jobs, /account, /credits, /payments, /models, /characters |
| Webhooks | 10 rpm | All /webhooks/* endpoints |
| Active keys | 5 max | Per account |
All responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. Rate-limited responses include a Retry-After header.
Error codes
| Code | HTTP | Trigger |
|---|---|---|
| UNAUTHORIZED | 401 | Missing, invalid, or revoked API key |
| FORBIDDEN | 403 | Account suspended or key missing required scope |
| INSUFFICIENT_CREDITS | 402 | Not enough credits for the workflow |
| RATE_LIMITED | 429 | Per-key or per-user rate limit exceeded |
| VALIDATION_ERROR | 422 | Malformed request body |
| PROMPT_BLOCKED | 400 | Content policy filter triggered |
| CONSENT_REQUIRED | 400 | Face swap submitted without biometricConsent: true |
| PAYLOAD_TOO_LARGE | 413 | Image exceeds 3.4MB |
| GPU_UNAVAILABLE | 503 | All GPU workers throttled — retry shortly |
| NOT_FOUND | 404 | Job does not exist or not owned by caller |
| INSUFFICIENT_SCOPE | 403 | API key lacks the required scope for this endpoint |
| CHARACTER_LOCKED | 403 | Character has not been unlocked by this account |
Ready to build?
Create an account, get your API key, and start generating.
Get started free