Skip to content

Known limitations

Protoface is at v0. The entire platform — API, session lifecycle, transports, scheduler, limits, SDKs, and docs — is built and stable. What’s placeholder is the rendered face: the production avatar model is still being finalized, so v0 runs against a deterministic mock runtime. This page lists exactly what that means so there are no surprises.

  • The mock runtime renders a deterministic audio-amplitude visualization (think amplitude bars driven by the input audio), not a photoreal face.
  • It runs on CPU and is fully deterministic — great for wiring up and testing your integration end to end.
  • The API contract does not change when the real model ships. The same POST /v1/sessions payload will render a real face; typically only quality changes from mock to standard. Build against the contract now and you won’t rewrite anything.

Quality tiers don’t affect rendering yet

Section titled “Quality tiers don’t affect rendering yet”

quality accepts mock | lite | standard | pro, but in v0 every tier renders the mock visualization. The field is wired through the contract (and influences billing semantics later); it does not select a model or instance type at v0.

Custom avatars aren’t generally available

Section titled “Custom avatars aren’t generally available”
  • GET /v1/avatars returns only platform demo avatars (e.g. av_demo).
  • The POST /v1/avatars upload endpoint and the processing avatar status exist to keep the contract forward-compatible, but the avatar creation / fitting pipeline ships in a later milestone. Use the demo avatars for now.
  • livekit (BYO) is the only customer-facing transport today.
  • websocket and pipecat are reserved in the enum and contract but not implemented — sending them returns 400 invalid_request with code transport.unsupported.
  • fake is internal-only (tests/demos) and not a customer transport.

See Transports.

The webhook event taxonomy and the per-session event log exist in v0 and are final, but webhook delivery (signing, retries, replay) is not yet shipped. When delivery lands, no event renames are needed — your handlers written against the taxonomy today will keep working.

New accounts get a free credit grant at signup (see Limits & quotas). Full paid billing (subscriptions, credit packs, auto-top-up) is part of pre-launch hardening and not active at v0.

Protoface launches in a single AWS region. Multi-region routing and worker placement are deferred. The region field is baked into the worker registry for later expansion but isn’t a customer-facing knob.

Despite the above, the public contract is stable. Per the additive-only policy, once an endpoint, field, header, error code, enum value, or event type ships, we don’t rename or remove it — we only add alongside. Track changes in the changelog.