Portrait in
Digi out
One API
WayShot's self-trained digi model turns portrait uploads into realistic camera-style outputs through one async API call. Built for apps that need personal image generation, not generic model results.
$5.00 free credit · 1K $0.10 · 2K $0.15 · failed jobs cost $0
curl -X POST https://api.wayshot.ai/v1/jobs \ -H "Authorization: Bearer $WAYSHOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "capability": "digi", "image": "https://your.cdn/portrait.jpg", "params": { "resolution": "1K" } }'
See the difference
Real portrait in, digicam output out.
Drag the handle to compare. Same photo, run through the digi model — sharper light, film-like color, the digicam look people screenshot.


What you can build
One capability, clearly bounded for v1.
Portrait input to digicam output.
- Input
- portrait image URL
- Output
- 1K or 2K image
- Runtime
- async job
- Billing
- success only
Made for apps that need a reliable portrait-editing capability, not a broad marketplace of unfinished models.
$0.10+Dead-simple integration
Copy one prompt. Hand it to your AI. Ship the call.
You don't have to read everything. In the AI era, the fastest way to integrate is to copy the prompt below, paste it into your AI coding tool, and let it write the integration for you.
- 1Get your API key
$5.00 free credit, no card needed.
- 2Copy the AI prompt
One click. Full API context included.
- 3Paste into your AI
Cursor, Claude, Copilot — anything.
- 4Run the call
Portrait in, digi out.
I want to integrate the WayShot digi API into my app. digi turns a portrait photo into a realistic digicam-style image. Please write the integration code for me.API reference:- Base URL: https://api.wayshot.ai- Auth: send the header Authorization: Bearer <WAYSHOT_API_KEY>- Create a job: POST /v1/jobs JSON body: { "capability": "digi", "image": "<public URL of the input portrait>", "params": { "resolution": "1K" }, // "1K" or "2K" "webhook_url": "<optional: your endpoint for the result>" } Optional header: Idempotency-Key: <unique key> — retries with the same key return the original job instead of creating a duplicate. Keys are deduplicated indefinitely — always generate a fresh key for each new job. Response: { "job_id": "...", "status": "queued" }- Get the result: GET /v1/jobs/{job_id} Response: { "status": "queued|processing|succeeded|failed|rejected", "input": { "url": "...", "expires_at": "..." }, "output": { "url": "<image URL when succeeded>" }, "billed": true }- Async: the output is usually ready in about 30 seconds. Poll with backoff (2s -> 5s -> 10s) plus random jitter when polling several jobs, or use the webhook. Reads and writes are rate-limited separately; on 429/503 wait for Retry-After.- Billing: you are charged only when status = succeeded. failed / rejected cost $0.- Errors: 401 invalid_api_key, 402 insufficient_balance, 422 image_unavailable, 422 content_rejected, 429 rate_limited (respect Retry-After), 503 model_unavailable.Task: write <LANGUAGE> code that takes a portrait image URL, creates a digi job at 1K, polls until it finishes, returns the output image URL, and handles the errors above. Read the API key from the WAYSHOT_API_KEY environment variable.