There is no dominant B2B API for digital smile design. Every cosmetic dental platform, from Invisalign consultation tools to independent DSD software, builds their own simulation layer or skips it entirely. The result: patients leave consultations with a printed brochure instead of a photo of their own projected smile.
Smile makeover consultations have historically required a trained technician, Photoshop, and two hours to produce one simulation. A compositing pipeline running on a cloud GPU produces the same output in three seconds at $0.05 per image. Here is how to build it into any dental platform.
The digital smile design market
Digital smile design (DSD) is a clinical workflow introduced by dental consultant Christian Coachman in 2009 to map facial proportions onto a proposed dental treatment plan. The software-side of DSD, capturing photos, marking reference lines, rendering a projected smile, is dominated today by a handful of tools: DSD App, 3Shape Smile Design, and the Invisalign Smile View feature. None of these expose a public API.
3Shape Smile Design charges enterprise license fees. The "3 shape smile design" keyword carries a $32.05 CPC, the highest in this entire cluster, because the buyers are dental practices with real software budgets. That gap between enterprise tooling and zero accessible APIs is where a platform integration play exists.
What the pipeline does
A digital smile design simulation changes only the teeth in a portrait photo. Nothing else moves: not the face shape, not the lips, not the eyes. The challenge is surgical precision: you need a teeth mask that separates exactly the tooth surface from lip, gum, and skin.
The five-stage pipeline:

| Stack | Infra /mo | AI team | Total cost | Revenue | Margin |
|---|---|---|---|---|---|
Runflow 10% volume discount applied | $1.1K | $0 | $1.1K | $10K | 89% |
Cloud API + manual QA similar pricing · no auto-QA · part-time engineer needed | $1.2K | ~$5K | $6.2K | $10K | 38% |
Self-hosted GPU raw compute · full-time AI engineer required | $400 | $12K | $12K | $10K | loss |
Runflow Sentinel — built-in quality control layer that automatically detects and discards failed or low-quality outputs before delivery. You only pay for images that pass QA. No engineer needed to babysit the pipeline.
Pricing based on Runflow published rates (June 2026) with automatic volume discounts. Revenue column is illustrative — actual client pricing varies by vertical and contract size. GPU self-hosted estimate uses $0.04/img raw compute cost.
1. LoadPhoto accepts a JPEG or PNG of the patient facing the camera. No special equipment required; a smartphone photo is enough at 1080p.
2. FaceDetect uses MediaPipe Face Mesh or a custom dental landmark model to locate the mouth region and extract 68 facial keypoints. This constrains the downstream mask to the dental zone.
3. TeethSeg runs a fine-tuned segmentation model (SAM or a U-Net variant trained on dental photos) to produce a pixel-accurate teeth mask. This is the step that determines quality.
4. ColorSim applies the target tooth color using the mask. For whitening, this is a LAB-space shift. For veneers, it is a full texture replacement from a material library.
5. SaveResult returns the composited image as a PNG alongside a structured report: shade selected, estimated treatment category, reference image URI.
Implementation: two approaches
Option A - Managed API (recommended for most platforms)
The fastest path to production. A managed API handles model hosting, scaling, and the teeth segmentation model: you send a photo and receive a simulation. Runflow, fal.ai, and Replicate all support custom ComfyUI workflows as hosted endpoints. Build the pipeline once, wrap it as an API, deploy.
import httpx
def simulate_smile(photo_path: str, treatment: str, shade: str) -> dict:
"""
treatment: "whitening" | "veneers" | "makeover"
shade: "natural" | "hollywood" | "a1" | "a2" | "b1"
"""
with open(photo_path, "rb") as f:
files = {"photo": f}
payload = {
"treatment": treatment,
"shade": shade,
"output_format": "png",
}
r = httpx.post(
"https://api.runflow.ai/v1/workflows/dental-smile-sim/run",
files=files,
data=payload,
headers={"Authorization": f"Bearer {RUNFLOW_API_KEY}"},
timeout=30,
)
r.raise_for_status()
return r.json()
# returns: { "result_url": "...", "shade_used": "...", "latency_ms": 2840 }
Option B - Self-hosted ComfyUI workflow
If you are already running ComfyUI in production, the teeth segmentation workflow is a custom node set. The key dependency is the ComfyUI-SAM2 node for the segmentation step. An A10G GPU at $0.60/hr handles approximately 720 simulations per hour, which is $0.0008 per simulation at full utilization, versus $0.05 on a managed API.
The break-even between self-hosted and managed is roughly 200 simulations per day. Below that, the managed API wins on total cost of ownership.
| Managed API | Self-hosted (A10G) | |
|---|---|---|
| Setup time | 2 days | 2-3 weeks |
| Infra cost (1K sims/day) | ~$50/day | ~$15/day |
| Engineering overhead | $0 | +$8-12K/mo |
| Scaling | Automatic | Manual |
| Break-even (sims/day) | N/A | ~200+ |
| Recommended for | Platforms < 5K sims/day | High-volume chains |
Integrating into a dental booking platform
The most common integration point is the consultation form. The patient uploads a selfie during booking; the platform runs the simulation before the appointment; the dentist opens the consultation with the projected smile already on screen.
import { useState } from "react"
export function SmileConsultationWidget() {
const [photo, setPhoto] = useState<File | null>(null)
const [preview, setPreview] = useState<string | null>(null)
const [result, setResult] = useState<string | null>(null)
const [loading, setLoading] = useState(false)
async function handleUpload(file: File) {
setPhoto(file)
setPreview(URL.createObjectURL(file))
setLoading(true)
const fd = new FormData()
fd.append("photo", file)
fd.append("treatment", "whitening")
fd.append("shade", "natural")
const res = await fetch("/api/smile-sim", { method: "POST", body: fd })
const data = await res.json()
setResult(data.result_url)
setLoading(false)
}
return (
<div className="smile-widget">
<input type="file" accept="image/*" onChange={e => e.target.files && handleUpload(e.target.files[0])} />
{preview && <img src={preview} alt="Your photo" />}
{loading && <p>Generating simulation...</p>}
{result && <img src={result} alt="Projected smile" />}
</div>
)
}
Shade mapping: the VITA standard
Dental practices communicate tooth color in VITA shade guides (A1-D4) or Bleachedguide 3D-MASTER levels. Your API parameters should accept these codes directly, not arbitrary CSS colors, so dentists can communicate results in clinical language.
VITA_SHADES = {
# Bleachedguide (whitening targets)
"0M1": {"l": 91, "a": -1.2, "b": 7.1},
"0M2": {"l": 88, "a": -1.0, "b": 9.4},
"1M1": {"l": 85, "a": -0.8, "b": 12.0},
"1M2": {"l": 83, "a": -0.5, "b": 14.5},
# Classic VITA (natural range)
"A1": {"l": 77, "a": 1.5, "b": 17.2},
"A2": {"l": 73, "a": 2.0, "b": 19.8},
"A3": {"l": 69, "a": 2.8, "b": 22.1},
"B1": {"l": 79, "a": 0.8, "b": 15.6},
}
def shade_to_lab(shade_code: str) -> dict:
shade_code = shade_code.upper().replace(" ", "")
if shade_code not in VITA_SHADES:
raise ValueError(f"Unknown VITA shade: {shade_code}")
return VITA_SHADES[shade_code]
Latency, cost and accuracy benchmarks
| Stage | Latency (p50) | Latency (p95) |
|---|---|---|
| FaceDetect (MediaPipe) | 120ms | 180ms |
| TeethSeg (SAM2 fine-tuned) | 1,400ms | 2,100ms |
| ColorSim (LAB shift) | 200ms | 350ms |
| ColorSim (texture veneer) | 800ms | 1,400ms |
| Total - whitening | ~1.8s | ~2.8s |
| Total - veneers | ~2.4s | ~3.9s |
| Photo condition | IoU (teeth mask) | Acceptable? |
|---|---|---|
| Studio quality, open smile | 0.94 | Yes |
| Smartphone, good lighting | 0.89 | Yes |
| Smartphone, low light | 0.74 | Borderline |
| Partially visible teeth | 0.61 | No: reject |
| Lips closed / teeth hidden | 0.11 | No: reject |
Reject photos where the model cannot detect an open-smile pose. Return a clear error: "smile_detected: false" with a prompt asking the patient to retake the photo showing teeth. Attempting to simulate on a closed-lip photo produces artifacts that erode trust in the tool.
Smile makeover consultation: the full DSD workflow
A full digital smile design workflow goes beyond whitening. DSD practitioners use facial reference points, including the midline, smile line, buccal corridor, and gingival contour, to design a proportional smile that fits the patient's face. The simulation is a communication tool between patient and dentist, not a diagnostic.
| Treatment | API param | Avg. latency | Typical patient cost |
|---|---|---|---|
| Teeth whitening | treatment=whitening | ~1.8s | $300-800 |
| Composite bonding | treatment=bonding | ~2.6s | $800-2,000 |
| Porcelain veneers | treatment=veneers | ~2.4s | $8,000-20,000 |
| Orthodontic alignment | treatment=ortho | ~3.1s | $3,000-8,000 |
| Full smile makeover | treatment=makeover | ~3.5s | $15,000-40,000 |
The "smile makeover consultation" keyword carries a $16.58 CPC. That is the dentist spending money to acquire a patient for a $15,000-40,000 procedure. A platform that presents a photorealistic simulation before that consultation converts at a measurably higher rate: every cosmetic dentistry SaaS knows this, which is why DSD licenses at enterprise prices.

| Stack | Infra /mo | AI team | Total cost | Revenue | Margin |
|---|---|---|---|---|---|
Runflow 10% volume discount applied | $1.1K | $0 | $1.1K | $10K | 89% |
Cloud API + manual QA similar pricing · no auto-QA · part-time engineer needed | $1.2K | ~$5K | $6.2K | $10K | 38% |
Self-hosted GPU raw compute · full-time AI engineer required | $400 | $12K | $12K | $10K | loss |
Runflow Sentinel — built-in quality control layer that automatically detects and discards failed or low-quality outputs before delivery. You only pay for images that pass QA. No engineer needed to babysit the pipeline.
Pricing based on Runflow published rates (June 2026) with automatic volume discounts. Revenue column is illustrative — actual client pricing varies by vertical and contract size. GPU self-hosted estimate uses $0.04/img raw compute cost.
Who builds this and who buys it
The B2B buyers for a dental smile simulation API are not individual dentists: they are the platforms that serve dentists.
| Buyer type | Platform examples | Integration point | Volume |
|---|---|---|---|
| Dental practice management | Dentrix, Eaglesoft, Carestream | Pre-consultation form | High |
| Cosmetic dentistry chains | Aspen Dental, Smile Brands | Patient portal | High |
| Orthodontic SaaS | OrthoFi, Dolphin Management | Treatment planner | Medium |
| Dental booking platforms | Zocdoc dental, NexHealth | Appointment booking flow | Medium |
| DSD software vendors | DSD App, SmileDesigner Pro | Core product feature | Low: direct |
The highest-volume opportunity is dental practice management software. A single mid-size dental chain running 50 consultations per day generates 18,000 simulations per month. At $0.05 per simulation, that is $900/mo in API revenue per customer at near-zero marginal cost.
Pricing and packaging
| Tier | Price | Volume | Best for |
|---|---|---|---|
| Pay-as-you-go | $0.08/sim | Any | Individual clinics testing |
| Starter | $99/mo | 1,500 sims/mo | Small practices |
| Growth | $299/mo | 5,000 sims/mo | Multi-location practices |
| Enterprise | Custom | Unlimited | Dental chains, SaaS vendors |
Include a DSD report add-on at $0.03/sim: structured JSON output with shade code, estimated treatment category, and a reference image URI for the dental record. Practices will pay for anything that goes directly into the patient chart.
Limitations and what to tell customers
Be explicit in your API documentation:
| Limitation | Why | Mitigation |
|---|---|---|
| Not a clinical diagnosis | No regulatory approval | Add disclaimer in every response payload |
| Requires open smile photo | Segmentation fails on closed lips | Validate pose before processing |
| Works best with frontal photos | Profile or 3/4 view loses accuracy | Return error for non-frontal input |
| Simulates appearance only | Cannot predict bone structure or gum changes | Label as "appearance preview" |
| Not suitable for implants | Implant simulation requires CBCT data | Out of scope: document clearly |
Platforms that hide these limits face patient complaints and potential regulatory exposure. Platforms that document them clearly use the simulation as a low-risk conversion tool, which is exactly what it is.
Conclusion
Digital smile design has a $16+ CPC on consultation keywords and a $32 CPC on software keywords. The incumbent tools charge enterprise license fees and expose no APIs. A dental platform that adds smile simulation to its consultation flow acquires patients cheaper and converts them at a higher rate.
The pipeline, FaceDetect to TeethSeg to ColorSim, runs in under three seconds on a cloud GPU. The total build time for a managed API integration is two days. The self-hosted path takes two to three weeks but reduces per-simulation cost to under $0.001 at scale.