Smile makeover
Photorealistic smile design on the patient’s face. Styles: Oval and Hollywood. Quality: standard or HD.
Server-to-server REST. Upload a face photo, request makeover, whitening, shade, align, or video — get a result asynchronously. No GPU fleet on your side. Full integration guide ships with your sandbox key.
Five operations partners use to build chairside tools, web lead funnels, and white-label experiences.
Photorealistic smile design on the patient’s face. Styles: Oval and Hollywood. Quality: standard or HD.
Brighten the patient’s own teeth — not a veneer redesign. Levels: moderate, strong, max.
After makeover, retarget tooth color. v1 shades: A1, A2, A3, B1, C3 (validated set — not full VITA Classical).
Orthodontic-style alignment visualization on a frontal smile photo — useful for consult and aligner journeys. Align takes no style/shade options.
Short reveal from a completed still (makeover, whitening, align, or shade) — not from a raw upload. Uses video credits (separate from the still-job pool).
Enterprise API v1 is API-only (server-to-server). There is no hosted or embeddable patient UI for operation / shade / style selection. You build that UI in your product and call the REST API from your backend.
A white-label / embeddable UI would be a separate product — not part of this integration.
Partners get parameters — not a single black-box “beautify” knob. Prefer the runtime options catalog (with your key) so enums stay current; you may hard-code the table below as a fallback.
| Control | Where | Values |
|---|---|---|
| Smile style | Makeover | oval · hollywood (same as product UI) |
| Output quality | Makeover | standard · hd |
| Whitening intensity | Whitening | moderate · strong · max |
| Tooth shade | Makeover options or shade refine | A1 · A2 · A3 · B1 · C3 — complete v1 set |
| Align | Alignment | No options |
| Runtime catalog | With your API key | Operations, styles, qualities, shades, whitening levels, video sources |
Often ~30–45 s; longer under load — stay async.
Short reveal clip for share / consult.
Makeover, whitening, align, or shade — not a raw upload.
Pass the completed still’s job id (with a result URL) or that still’s result URL. Video credits are separate from the still-job pool.
Same idea as clinical smile-simulators: good inputs produce reliable outputs.
Async by design. Your base URL and signed examples are delivered with the sandbox key — not published on this page.
Request a short-lived upload slot, PUT the image from your backend.
Choose operation + options. Receive a job id immediately (HTTP accepted).
Poll job status, or register an HTTPS webhook. Download the time-limited result URL when complete.
Polling alone is enough to ship an MVP. Webhooks are optional when you’re ready.
# 1. Upload photo UPLOAD=$(curl -sS -X POST "$BASE/uploads" \ -H "Authorization: Bearer $YOUR_KEY" \ -d '{"contentType":"image/jpeg"}') curl -X PUT "$(echo $UPLOAD | jq -r .uploadUrl)" --data-binary @patient.jpg # 2. Create job JOB=$(curl -sS -X POST "$BASE/jobs" \ -H "Authorization: Bearer $YOUR_KEY" \ -d '{"operation":"makeover","inputKey":"...","options":{"style":"oval"}}') # 3. Poll & download JOB_ID=$(echo $JOB | jq -r .jobId) while true; do STATUS=$(curl -sS -H "Authorization: Bearer $YOUR_KEY" "$BASE/jobs/$JOB_ID") [ "$(echo $STATUS | jq -r .status)" = "completed" ] && break sleep 3 done curl -L -o result.png "$(echo $STATUS | jq -r .resultUrl)" echo "Saved result.png | refineToken: $(echo $STATUS | jq -r .refineToken)"
When you’re ready for webhooks, we’ll provide your partner webhook secret. It is separate from the API key and only used to verify webhook POSTs from us (HMAC). Keep it server-side only.
You don’t need the secret while polling. Start with your sandbox key; ask when you want webhooks and we’ll send the secret.
Before makeover, whitening, or align run the heavy pipeline, we validate size, dimensions, and face presence. Content failures finish as a failed job with a stable error.code — so your product UI can show a clear “retake photo” message.
Shade and video skip raw-upload preflight (they continue from a completed still you already own).
Content failures do not return HTTP 400 on job create. The job is accepted, then ends as status: failed. Read error.code / error.message from job status (or the webhook).
HTTP 400 = bad request only (invalid JSON / fields / options). Branch your UX on the code; treat unknown codes like a generic processing failure.
| Code | Meaning | User hint |
|---|---|---|
| no_face_detected | No usable face | Retake a clear frontal photo |
| face_too_small | Face too small in frame | Move closer / crop less aggressively |
| face_not_frontal | Pose too angled | Face the camera straight-on |
| smile_not_visible | Closed mouth / no open smile | Show teeth with a natural smile |
| mouth_covered | Mouth obscured | Remove mask / hand / object |
| image_too_large | Over 12 MB | Compress and retry |
| image_dimensions_invalid | Outside size guidance | Short ≥ ~512 px; long ≤ ~4096 px |
| processing_failed | Pipeline could not finish | Retry or try another photo |
Re-fetch job status for a fresh link while the file still exists.
Then removed. Download promptly; keep long-term copies in your system.
Ids, status, error codes, timing — not an image archive.
No self-service delete in v1 yet. Deletion under agreement / BAA is available on request; a partner purge API is on the roadmap.
We process the face/smile photo (and generated stills/video) for simulation only — not clinical history or chart notes.
Guidance only — always wait for completed / failed (or the webhook).
| Operation | Typical | Notes |
|---|---|---|
| Whitening | ~3–10 s | Fast still path |
| Shade refine | ~2–3 s | After makeover |
| Makeover (standard) | ~15–40 s | |
| Makeover (HD) | ~25–35 s | Higher quality |
| Align | ~20–30 s | May vary with load |
| Video | ~30–45 s (~40 s typical) | MP4 ~4 s · ~720p · from completed still |
Sandbox can continue on test images while the BAA / order form are in review. Share expected monthly volume (makeover / align / whitening / shade / video) so we can recommend a plan.
We sign a BAA with every live partner before patient data flows through the system. Sandbox keys are for integration testing with de-identified images only. The BAA draft is available immediately for your counsel to review — ask us and we'll send it.
No. Uploaded photos and generated images are used only to fulfill the requested simulation. They are automatically deleted within 24 hours. We do not use partner patient images to train or fine-tune any model.
Integration typically takes 1–2 weeks for a backend developer. The BAA and order form run in parallel — often ~1 week if both sides move together. You can start integration with your sandbox key immediately, before the agreement is finalized.
Five operations: smile makeover (oval or Hollywood style, standard or HD), whitening (moderate / strong / max), shade refine (change tooth color after a makeover in seconds), alignment preview (orthodontic visualization), and smile video (short reveal clip from a completed still).
Monthly credit plans by contract — pricing depends on volume, geography, and use case. Still jobs (makeover, whitening, shade, align) draw from one credit pool; video uses a separate video-credit pool. Contact us with your expected monthly volume for a quote.
Not yet — v1 is a server-to-server REST API for teams that build their own patient UI. A no-code embeddable widget (WordPress plugin / shortcode) is on our roadmap. If that's your preferred integration path, mention it when you reach out — it helps us prioritize.
Yes — via our Claude MCP connector (custom connector today). Same Enterprise API keys and quotas. See the Claude connector docs for Connect steps, photo tips, and example prompts.
We’ll send a sandbox key, base URL, and the full partner integration guide. This public page stays high-level on purpose.
© SmileCraft AI · Alborz Solutions LLC · Home · Claude · smilecraft.app