The API, with the pricing written down
Every competitor in this category gates API pricing behind a sales call. Here is ours, including the batch endpoint none of them has.
API keys are issued on Pro, Studio and Agency plans.
Authentication
A bearer token per key. Keys are shown once at creation, stored only as a hash, and revocable from your account.
POST https://api.miradora.ai/v1/generate
Authorization: Bearer mk_live_…
Content-Type: application/json
{
"kind": "redesign",
"image_url": "https://…",
"style": "japandi",
"room_type": "living-room",
"structure_lock": true,
"creativity": 40,
"variations": 4,
"resolution": "2k",
"idempotency_key": "5f0c1c0e-2c1a-4f5e-9c3a-0d1b2e3f4a5b",
"webhook_url": "https://…"
}
202 Accepted
{ "job_id": "…", "credits_charged": 4, "eta_seconds": 18 }Endpoints
| HTTP | Endpoints | What it means |
|---|---|---|
| POST | /v1/generate | Enqueue a generation. Returns 202 with a job id, the credits charged and an ETA. |
| POST | /v1/batch | Enqueue many generations in one call. One idempotency key per item. |
| GET | /v1/jobs/{id} | Poll a job: status, progress, honest queue position and ETA. |
| POST | /v1/jobs/{id}/cancel | Cancel a job. Always a full credit refund. |
| GET | /v1/generations/{id} | The finished render, with the model, seed and prompt that produced it. |
| GET | /v1/generations/{id}/items | Detected objects in a render, for Shop the Look. |
| POST | /v1/segment | Point, box or text prompt to a mask. Costs 0 credits. |
| GET | /v1/catalog | Styles, room types and materials. Heavily cached. |
| GET | /v1/credits | Current balance, and the ledger behind it. |
Rate limits
Per key, measured over a rolling minute. Exceeding them returns 429 with a retry-after.
| Plan | Requests / minute | Batch items / request |
|---|---|---|
| Pro | 60 | 25 |
| Studio | 150 | 100 |
| Agency | 600 | 250 |
What a call costs
API calls spend the same credits as the app, from the same balance, at the same published costs. There is no separate API rate card.
Costs nothing, ever
- Design Advisor chat0
- Design Critique0
- Browsing and Discover0
- Style preview0
- Product search0
- Re-downloading anything you already made0
- Uploading and tagging a photo0
- Tapping an object to select it0
- Browsing the style and room catalog0
Browsing, the design chat, written critique, style previews, product search and re-downloading anything you already made are free forever. They are listed here so the promise is checkable.
Metered operations
| Operation | Credits | Per variation? |
|---|---|---|
| Cleanup — remove one object | 1 | No — one result regardless |
| Colours & Textures | 1 | Yes — 4 variations cost 4× |
| Empty the Room | 1 | No — one result regardless |
| Exterior Design | 1 | Yes — 4 variations cost 4× |
| Floor & Material Swap | 1 | Yes — 4 variations cost 4× |
| Furniture Creator | 1 | Yes — 4 variations cost 4× |
| Landscape & Garden | 1 | Yes — 4 variations cost 4× |
| Multi-angle render — per extra angle | 1 | Yes — 4 variations cost 4× |
| Paint Visualizer | 1 | Yes — 4 variations cost 4× |
| Redesign | 1 | Yes — 4 variations cost 4× |
| Room Composer | 1 | Yes — 4 variations cost 4× |
| Sketch to Render | 1 | Yes — 4 variations cost 4× |
| Sky & Weather | 1 | Yes — 4 variations cost 4× |
| Style Transfer | 1 | Yes — 4 variations cost 4× |
| Tap-to-Edit — one object | 1 | No — one result regardless |
| Text to Design | 1 | Yes — 4 variations cost 4× |
| Upscale / Enhance | 1 | No — one result regardless |
| Virtual Staging | 1 | Yes — 4 variations cost 4× |
| 2D → 3D floor plan | 2 | No — one result regardless |
| Magic Redesign — natural language plus reference photos | 2 | Yes — 4 variations cost 4× |
| Smart Room Composer — arrange your own furniture | 2 | Yes — 4 variations cost 4× |
| Image → 3D asset for AR | 3 | No — one result regardless |
| Walkthrough video | 3 | No — one result regardless |
| 4K output surcharge | +1 | No — one result regardless |
Variations multiply the cost of the modes marked “per variation”. Four variations of a Redesign cost four credits, and the exact total is shown before you press Generate.
A 4K render adds one credit. We generate variations at 1K and upscale only the one you pick — rendering four variations natively at 4K costs us 2.2× more for three images you were going to discard.
Errors
| Code | HTTP | What it means |
|---|---|---|
| insufficient_credits | 402 | You need {required} credits. You have {available}. |
| image_too_small | 400 | This photo is {width}×{height}. We need at least {min}px on the short side — try retaking it, or pick the full-size original rather than a screenshot. |
| unsupported_format | 400 | We can’t read {format} images. JPEG, PNG, HEIC and WebP all work. |
| room_not_found | 404 | That room no longer exists. |
| idempotency_key_required | 400 | Something went wrong on our side. Please try again. |
| content_policy | 422 | We couldn’t render this one: {policy}. If that looks wrong to you, appeal and a human will look. |
| rate_limited | 429 | Slow down a moment — try again in {retry_after}s. |
| vendor_unavailable | 503 | Our image service is having a moment. Your credits are safe — we’ve refunded this render. |
| job_timeout | 504 | This render took too long, so we stopped it and refunded your credits. |
Webhooks
Generation is asynchronous. Supply a webhook_url and we POST the terminal state to it, signed. Poll the job endpoint if you would rather not run a listener.
Who owns the output
You do. Output generated through your key is assigned to you, for commercial use, on Pro and above. We do not train on anything sent to the API.