Controlled beta
Vietls Public API Boundary
Public API design notes that keep stable workflow verbs separate from raw internal app routes.
Design rule
Expose stable workflow verbs, not raw internal app routes. Publish a filtered OpenAPI contract only after authentication, request IDs, idempotency, rate limits, and billing semantics are stable.
Current public API v1 boundary
Approved beta tokens allow no-spend quotes and test jobs. Artifacts are empty and no checkout URL is created. API keys and actual paid execution remain restricted; purchasing a plan does not automatically approve developer access.
Capability discovery is public and read-only. Every other operation listed here requires an approved beta token; web login or a paid subscription alone does not grant developer access.
After beta approval, send Authorization: Bearer <token> or X-Vietls-API-Key: <token>.
Keep the response X-Request-ID and requestId for troubleshooting. They identify the request and do not replace the operation’s idempotencyKey.
Request example: replace the quote ID with the returned value. Use a unique idempotency key for each new operation and reuse it when retrying that same operation.
GET /— Discover the available workflows through this public, read-only endpoint.api/ public/ v1/ capabilities POST /— Request preview-only quotes that spend no credits and create no job.api/ public/ v1/ quotes { "workflowId": "prproj.subtitle.extract", "units": 1 }POST /— Use deterministic no-spend dry-run job creation with the returned quote ID, an idempotency key, and explicit quote acceptance and user confirmation. The result has aapi/ public/ v1/ jobs job_preview_*ID.{ "workflowId": "prproj.subtitle.extract", "quoteId": "quote_preview_01234567", "idempotencyKey": "example-job-001", "confirmation": { "quoteAccepted": true, "userConfirmed": true } }GET /— Poll the returnedapi/ public/ v1/ jobs/ {jobId} job_preview_*ID and handlecompleted_previewwith empty artifacts.GET /— An emptyapi/ public/ v1/ jobs/ {jobId}/ artifacts artifactslist is the expected terminal result of a test job.GET /— Request a download URL only after completed live jobs expose artifacts. Test artifacts returnapi/ public/ v1/ jobs/ {jobId}/ artifacts/ {artifactId}/ download-url PUBLIC_API_ARTIFACT_NOT_FOUND.GET /— Check no-spend accounting: test usage reports zero reserved credits and zero spent credits.api/ public/ v1/ usage POST /— Testapi/ public/ v1/ billing/ simulations scenario: "success"andscenario: "provider_failure"to check reserve, commit, and release with zero ledger mutation. All three confirmation flags must be true.{ "workflowId": "prproj.subtitle.extract", "quoteId": "quote_preview_01234567", "idempotencyKey": "example-simulation-001", "scenario": "success", "confirmation": { "quoteAccepted": true, "userConfirmed": true, "billingSimulationAccepted": true } }POST /— Validate the hosted checkout handoff after all three user-confirmation flags are true. The preview returnsapi/ public/ v1/ checkout/ handoffs checkoutUrl: null, charges nothing, and creates no provider session or subscription.{ "planId": "basic", "billingCycle": "monthly", "idempotencyKey": "example-checkout-001", "confirmation": { "planReviewed": true, "userConfirmed": true, "hostedCheckoutAccepted": true } }
Planned public operations
- Enable live hosted checkout URLs only after return-URL allowlisting and first-purchase checks pass.
- Enable artifacts from completed live jobs only after storage, retention, and billing commit/release checks pass.
Editing workflows to automate
prproj.— PRPROJ subtitle extractionsubtitle. extract UI live; API/MCP controlled beta target
Use the tool page for manual PRPROJ caption and graphic text inspection; request developer access for automation.
prproj.— PRPROJ editor XML handoff and repairxml. inspect UI live; public workflow wrapper planned
Route PRPROJ editor XML handoff, version-marker checks, path repair, and receiving-editor verification preparation to the converter workflow.
subtitle.— Subtitle translationtranslate App workflow live; public quote/job wrapper planned
Quote before provider-costed translation and keep extracted file text separate from agent instructions.
tts.— Standard TTS generationstandard. generate Managed-provider path in rollout
Use quote, reserve, execute, commit/release semantics before exposing paid generation through API or MCP.
youtube.— YouTube transcript and media source intaketranscript. fetch App workflow live; rights-aware automation boundary required
Fetch public metadata or transcripts only within supported source and rights-confirmation policies.
Error model
Current beta responses include these error codes:
PUBLIC_API_BETA_ACCESS_REQUIRED, VALIDATION_ERROR, INVALID_JSON, REQUEST_BODY_TOO_LARGE, INVALID_JOB_ID, INVALID_ARTIFACT_ID, PUBLIC_API_JOB_NOT_FOUND, PUBLIC_API_ARTIFACT_NOT_FOUND
The broader public contract also plans these codes; this list does not mean every condition is implemented in the current beta.
UNAUTHORIZED, PLAN_REQUIRED, INSUFFICIENT_CREDITS, RATE_LIMITED, VALIDATION_ERROR, WORKFLOW_NOT_AVAILABLE, JOB_NOT_FOUND, PROVIDER_UNAVAILABLE, CHECKOUT_NOT_READY