Built for DSOs · aligner brands · dental platforms

Smile simulation API for products that need control

Server-to-server REST. Upload a face photo, request a simulation, and get the result asynchronously — full integration details ship with your sandbox key.

Privacy

No training on partner images

Compliance

BAA process for live keys

Control

Style · shade · whitening level

Scale

Async jobs · webhooks · quotas

Key facts

Product
A web application that turns a patient photo into a photorealistic smile simulation, for dental consultations and case presentations.
Operations
Smile makeover, whitening, shade refine, alignment preview and video.
Retention
Uploaded photos are removed approximately one day after upload. Result links expire within 1 hour.
Training
Images are never used to train AI models.
BAA
A Business Associate Agreement is available on request.

Capabilities

Five operations partners use to build chairside tools, web lead funnels and white-label experiences.

Smile makeover

Photorealistic smile design on the patient's face, with style and quality options.

Whitening

Brighten the patient's own teeth at the intensity level you choose.

Shade refine

After a makeover, retarget tooth colour to match the discussed shade.

Alignment preview

Orthodontic-style alignment visualisation on a frontal smile photo.

Smile video

A short reveal clip generated from a completed still — not from a raw upload.

Patient-facing UI

Enterprise API v1 is API-only (server-to-server). There is no hosted or embeddable patient UI for operation, shade or style selection — you build that UI in your product and call the REST API from your backend.

Options & shades

Partners get parameters, not a single black-box knob. Prefer the runtime options catalog (fetched with your key) so enums stay current.

ControlWhereValues
Smile styleMakeoveroval · hollywood
Output qualityMakeoverstandard · hd
Whitening intensityWhiteningmoderate · strong · max
Tooth shadeMakeover options or shade refineA1 · A2 · A3 · B1 · C3 — complete v1 set
AlignAlignmentNo options
Runtime catalogWith your API keyOperations, styles, qualities, shades, whitening levels, video sources
  • We only expose shades validated for consistent results. Among them, A1, A2 and B1 are most commonly requested. More shades can ship in a later revision once validated.
  • When options change, the catalog updates automatically. Major additions are noted in the partner guide and emailed to active partners.
  • Whitening levels and makeover shades are separate — do not merge them into one UI control.

Video

Time

~40 s typical

Often ~30–45 s; longer under load — stay async.

Output

MP4 · ~4 s · ~720p

Short reveal clip for share and consult.

Source

Completed still only

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.

Photo guidelines

Good inputs produce reliable outputs.

Do

  • Frontal face, centred, looking at camera
  • Natural open smile with teeth visible
  • Bright, even lighting
  • Face filling a large part of the frame

Avoid

  • Closed lips or no visible teeth
  • Mouth covered (mask, hand, napkin)
  • Extreme profile / chin-forward poses
  • Heavy crop to mouth-only or tiny faces
  • Dark, blurry or heavily filtered selfies

Technical limits: max 12 MB · short side ≥ ~512 px · long side ≤ ~4096 px · JPEG / PNG / WebP with matching contentType.

How integration works

Async by design. Your base URL and signed examples are delivered with the sandbox key — not published on this page.

  1. 1

    Upload

    Request a short-lived upload slot, then PUT the image from your backend.

  2. 2

    Create job

    Choose operation and options. Receive a job id immediately.

  3. 3

    Poll or webhook

    Poll job status, or register an HTTPS webhook. Download the time-limited result URL when complete.

makeover.sh — concept only · full script delivered with sandbox key
# 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)" \
  -H "Content-Type: image/jpeg" \
  --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)"

Polling alone is enough to ship an MVP. Webhooks are optional when you're ready.

Webhooks

When you're ready for webhooks, we provide your partner webhook secret. It is separate from the API key and used only to verify webhook POSTs from us (HMAC). Keep it server-side only.

You don't need the secret while polling. Ask when you want webhooks and we'll send it.

Input checks (face preflight)

Before the heavy pipeline runs, uploads are validated for size, dimensions and face presence. Content failures finish as a failed job with a stable error.code so your UI can show a clear retake message.

  • File size and pixel-dimension gates
  • Face detected and large enough in frame
  • Frontal-ish pose heuristics
  • Mouth visibility / smile-open checks when applicable

Error codes

Content failures do not return HTTP 400 on job create. The job is accepted, then ends as status: failed. Read error.code from job status or the webhook. HTTP 400 means bad request only (invalid JSON, fields or options).

CodeMeaningUser hint
no_face_detectedNo usable faceRetake a clear frontal photo
face_too_smallFace too small in frameMove closer / crop less aggressively
face_not_frontalPose too angledFace the camera straight-on
smile_not_visibleClosed mouth / no open smileShow teeth with a natural smile
mouth_coveredMouth obscuredRemove mask / hand / object
image_too_largeOver 12 MBCompress and retry
image_dimensions_invalidOutside size guidanceShort ≥ ~512 px; long ≤ ~4096 px
processing_failedPipeline could not finishRetry or try another photo

Results & retention

Download URL

~1 hour

Re-fetch job status for a fresh link while the file still exists.

Inputs & results

~1 day

Then removed. Download promptly; keep long-term copies in your system.

Job metadata

~7 days

Ids, status, error codes, timing — not an image archive.

We process the face photo and generated stills and video for simulation only — not clinical history or chart notes. Data-handling detail: see the privacy policy.

Typical timings

Guidance only — always wait for completed or failed status (or the webhook).

OperationTypicalNotes
Whitening~3–10 sFast still path
Shade refine~2–3 sAfter makeover
Makeover (standard)~15–40 s
Makeover (HD)~25–35 sHigher quality
Align~20–30 sMay vary with load
Video~30–45 s (~40 s typical)MP4 ~4 s · ~720p · from completed still

Sandbox, live & BAA

Sandbox

  • Free for integration — nothing else required to start
  • Same contract as live (paths don't change)
  • Starter credits included
  • Keys look like sc_sandbox_…
  • De-identified / test images only

Live / enterprise

  • Issued after commercial agreement + BAA + billing
  • A Business Associate Agreement is available upon request
  • Keys look like sc_live_…
  • Volume pricing by contract — contact for a quote

Common questions

Do you train on partner images?

No. Uploaded photos and generated images are used only to fulfil the requested simulation. They are automatically deleted approximately one day after upload. We do not use partner patient images to train or fine-tune any model.

What simulation types are supported?

Five operations: smile makeover (oval or Hollywood style, standard or HD), whitening (moderate / strong / max), shade refine, alignment preview, and smile video from a completed still.

How is pricing structured?

Monthly credit plans by contract — pricing depends on volume, geography and use case. Contact us with your expected monthly volume for a quote.

Is there a WordPress plugin or embeddable widget?

Not yet — v1 is a server-to-server REST API for teams that build their own patient UI. A no-code embeddable widget is on our roadmap; mention it when you reach out.

Can I use SmileCraft inside Claude?

Yes — via our Claude MCP connector. See the Claude connector docs for setup steps and example prompts.

Ready to integrate?

We'll send a sandbox key, base URL and the full partner integration guide. This public page stays high-level on purpose.

Start free Book a demo