Miradora

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

HTTPEndpointsWhat it means
POST/v1/generateEnqueue a generation. Returns 202 with a job id, the credits charged and an ETA.
POST/v1/batchEnqueue 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}/cancelCancel 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}/itemsDetected objects in a render, for Shop the Look.
POST/v1/segmentPoint, box or text prompt to a mask. Costs 0 credits.
GET/v1/catalogStyles, room types and materials. Heavily cached.
GET/v1/creditsCurrent balance, and the ledger behind it.

Rate limits

Per key, measured over a rolling minute. Exceeding them returns 429 with a retry-after.

PlanRequests / minuteBatch items / request
Pro6025
Studio150100
Agency600250

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

Credit cost of every Miradora operation
OperationCreditsPer variation?
Cleanup — remove one object1No — one result regardless
Colours & Textures1Yes — 4 variations cost 4×
Empty the Room1No — one result regardless
Exterior Design1Yes — 4 variations cost 4×
Floor & Material Swap1Yes — 4 variations cost 4×
Furniture Creator1Yes — 4 variations cost 4×
Landscape & Garden1Yes — 4 variations cost 4×
Multi-angle render — per extra angle1Yes — 4 variations cost 4×
Paint Visualizer1Yes — 4 variations cost 4×
Redesign1Yes — 4 variations cost 4×
Room Composer1Yes — 4 variations cost 4×
Sketch to Render1Yes — 4 variations cost 4×
Sky & Weather1Yes — 4 variations cost 4×
Style Transfer1Yes — 4 variations cost 4×
Tap-to-Edit — one object1No — one result regardless
Text to Design1Yes — 4 variations cost 4×
Upscale / Enhance1No — one result regardless
Virtual Staging1Yes — 4 variations cost 4×
2D → 3D floor plan2No — one result regardless
Magic Redesign — natural language plus reference photos2Yes — 4 variations cost 4×
Smart Room Composer — arrange your own furniture2Yes — 4 variations cost 4×
Image → 3D asset for AR3No — one result regardless
Walkthrough video3No — one result regardless
4K output surcharge+1No — 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

CodeHTTPWhat it means
insufficient_credits402You need {required} credits. You have {available}.
image_too_small400This 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_format400We can’t read {format} images. JPEG, PNG, HEIC and WebP all work.
room_not_found404That room no longer exists.
idempotency_key_required400Something went wrong on our side. Please try again.
content_policy422We couldn’t render this one: {policy}. If that looks wrong to you, appeal and a human will look.
rate_limited429Slow down a moment — try again in {retry_after}s.
vendor_unavailable503Our image service is having a moment. Your credits are safe — we’ve refunded this render.
job_timeout504This 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.