{"openapi":"3.1.0","info":{"title":"Zaption API","description":"Burned-in captions for videos. See https://zaption.com/llms.txt.","version":"0.1.0"},"paths":{"/v1/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health V1 Health Get"}}}}}}},"/v1/web-config":{"get":{"tags":["meta"],"summary":"Web Config","operationId":"web_config_v1_web_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebConfigOut"}}}}}}},"/v1/styles":{"get":{"tags":["meta"],"summary":"List Styles","description":"Every style, with what it looks like. Pass an id as ``style`` and change fields\nwith ``style_overrides``.","operationId":"list_styles_v1_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Styles V1 Styles Get"}}}}}}},"/v1/pricing":{"get":{"tags":["meta"],"summary":"Pricing","operationId":"pricing_v1_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Pricing V1 Pricing Get"}}}}}}},"/v1/estimate":{"post":{"tags":["meta"],"summary":"Estimate","description":"What a caption of this length would cost. API keys pay ``price_usd`` in credits.\nWeb captions use plan minutes first.","operationId":"estimate_v1_estimate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstimateOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/login-link":{"post":{"tags":["auth"],"summary":"Send Login Link","description":"Email a one-time sign-in link. The answer is the same whether or not the address\nhas an account. The web app sends a Turnstile token with it.","operationId":"send_login_link_v1_auth_login_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginLinkIn"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Send Login Link V1 Auth Login Link Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/verify":{"post":{"tags":["auth"],"summary":"Verify","description":"Trade a sign-in link's token for a session cookie.","operationId":"verify_v1_auth_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedInOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_v1_auth_logout_post","responses":{"204":{"description":"Successful Response"}}}},"/v1/me":{"get":{"tags":["account"],"summary":"Me","operationId":"me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}}}}},"/v1/balance":{"get":{"tags":["account"],"summary":"Balance","description":"The plan, the minutes left this period, and the credit balance. API keys spend\ncredits only.","operationId":"balance_v1_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Balance V1 Balance Get"}}}}}}},"/v1/webhook-secret":{"get":{"tags":["account"],"summary":"Webhook Secret","operationId":"webhook_secret_v1_webhook_secret_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecretOut"}}}}}}},"/v1/webhook-secret/rotate":{"post":{"tags":["account"],"summary":"Rotate Webhook Secret","description":"A new secret. Deliveries still waiting get signed with it.","operationId":"rotate_webhook_secret_v1_webhook_secret_rotate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecretOut"}}}}}}},"/v1/keys":{"get":{"tags":["keys"],"summary":"List Keys","operationId":"list_keys_v1_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyList"}}}}}},"post":{"tags":["keys"],"summary":"Create Key","operationId":"create_key_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyCreatedOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/keys/{key_id}":{"delete":{"tags":["keys"],"summary":"Revoke Key","description":"Revoke a key now. Revoking it again changes nothing.","operationId":"revoke_key_v1_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/uploads":{"post":{"tags":["uploads"],"summary":"Create Upload","description":"A link to PUT one video to. It works for an hour. Then pass ``id`` as\n``upload_id`` to POST /v1/captions.","operationId":"create_upload_v1_uploads_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/captions":{"post":{"tags":["captions"],"summary":"Create Caption","description":"Start a caption from an upload or a public video URL. Poll GET /v1/captions/{id}\nor pass ``webhook_url``. The price is charged once the video's length is known.","operationId":"create_caption_v1_captions_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["captions"],"summary":"List Captions","operationId":"list_captions_v1_captions_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/captions/{caption_id}":{"get":{"tags":["captions"],"summary":"Get Caption","description":"``?include=transcript`` adds the words.","operationId":"get_caption_v1_captions__caption_id__get","parameters":[{"name":"caption_id","in":"path","required":true,"schema":{"type":"string","title":"Caption Id"}},{"name":"include","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Include"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["captions"],"summary":"Edit Caption","description":"Fix words and times, or change the style. Then POST .../render for new files.","operationId":"edit_caption_v1_captions__caption_id__patch","parameters":[{"name":"caption_id","in":"path","required":true,"schema":{"type":"string","title":"Caption Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["captions"],"summary":"Delete Caption","description":"Delete the video, the transcript, and the files now. A running job stops.","operationId":"delete_caption_v1_captions__caption_id__delete","parameters":[{"name":"caption_id","in":"path","required":true,"schema":{"type":"string","title":"Caption Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/captions/{caption_id}/render":{"post":{"tags":["captions"],"summary":"Render Caption","description":"Make the files again with the current transcript and style. Web captions get\n5 renders. API keys pay the render price for each one.","operationId":"render_caption_v1_captions__caption_id__render_post","parameters":[{"name":"caption_id","in":"path","required":true,"schema":{"type":"string","title":"Caption Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderIn"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saved-styles":{"get":{"tags":["styles"],"summary":"List Saved","operationId":"list_saved_v1_saved_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStyleList"}}}}}},"post":{"tags":["styles"],"summary":"Save Style","operationId":"save_style_v1_saved_styles_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStyleIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStyleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saved-styles/{saved_id}":{"patch":{"tags":["styles"],"summary":"Edit Saved","description":"Renaming works on any plan. Changing the look needs a paid one.","operationId":"edit_saved_v1_saved_styles__saved_id__patch","parameters":[{"name":"saved_id","in":"path","required":true,"schema":{"type":"string","title":"Saved Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStylePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStyleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["styles"],"summary":"Delete Saved","description":"Delete it for good. Captions made with it keep their look.","operationId":"delete_saved_v1_saved_styles__saved_id__delete","parameters":[{"name":"saved_id","in":"path","required":true,"schema":{"type":"string","title":"Saved Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedStyleOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/checkout":{"post":{"tags":["billing"],"summary":"Checkout","description":"A Stripe Checkout link for a plan (``plan``) or for credits (``topup_usd``).","operationId":"checkout_v1_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/portal":{"post":{"tags":["billing"],"summary":"Portal","description":"Stripe's customer portal: change or cancel the plan, cards, and invoices.","operationId":"portal_v1_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlOut"}}}}}}}},"components":{"schemas":{"CaptionIn":{"properties":{"upload_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Upload Id","description":"From POST /v1/uploads."},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url","description":"A public https link to the video. Give this or upload_id."},"style":{"type":"string","title":"Style","description":"A style id from GET /v1/styles.","default":"bolt"},"style_overrides":{"additionalProperties":true,"type":"object","title":"Style Overrides","description":"Change parts of the style, like {\"position\": \"middle\"}. GET /v1/styles lists the fields."},"outputs":{"anyOf":[{"items":{"type":"string","enum":["mp4","srt","vtt","json","ass"]},"type":"array"},{"type":"null"}],"title":"Outputs","description":"Files to make. Default for API keys: mp4, srt, vtt, json. Without mp4 there's no render, and it costs the subtitles-only price."},"language":{"anyOf":[{"type":"string","maxLength":16,"minLength":2},{"type":"null"}],"title":"Language","description":"Like en or es. Default: detect it."},"keyterms":{"items":{"type":"string","maxLength":50,"minLength":1},"type":"array","maxItems":100,"title":"Keyterms","description":"Names and words to spell right."},"max_resolution":{"type":"integer","enum":[720,1080,1440,2160],"title":"Max Resolution","description":"The short side of the output, at most. Above 1080 costs 2x to render.","default":1080},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"We POST caption.completed or caption.failed here."}},"additionalProperties":false,"type":"object","title":"CaptionIn"},"CaptionList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CaptionOut"},"type":"array","title":"Data"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","next_cursor"],"title":"CaptionList"},"CaptionOut":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"caption","title":"Object","default":"caption"},"status":{"type":"string","enum":["queued","transcribing","transcribed","rendering","done","failed","deleted"],"title":"Status"},"progress":{"type":"number","title":"Progress","description":"0 to 1."},"mode":{"type":"string","enum":["live","test"],"title":"Mode"},"filename":{"type":"string","title":"Filename"},"style":{"type":"string","title":"Style"},"style_overrides":{"additionalProperties":true,"type":"object","title":"Style Overrides"},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language"},"keyterms":{"items":{"type":"string"},"type":"array","title":"Keyterms"},"outputs":{"items":{"type":"string"},"type":"array","title":"Outputs","description":"The files asked for."},"max_resolution":{"type":"integer","title":"Max Resolution"},"video":{"anyOf":[{"$ref":"#/components/schemas/VideoOut"},{"type":"null"}]},"files":{"additionalProperties":{"$ref":"#/components/schemas/FileOut"},"type":"object","title":"Files","description":"Download links, once the files exist."},"source":{"anyOf":[{"$ref":"#/components/schemas/FileOut"},{"type":"null"}],"description":"The uploaded video, for previews."},"transcript":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Transcript","description":"Words with times in ms. Only with ?include=transcript."},"renders":{"type":"integer","title":"Renders"},"renders_left":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Renders Left","description":"Web captions only. API captions pay for each render, so this is null."},"seconds_billed":{"type":"integer","title":"Seconds Billed"},"paid_with":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paid With","description":"plan, free, credits, or test."},"price_usd":{"type":"string","title":"Price Usd"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorOut"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Finished At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","status","progress","mode","filename","style","style_overrides","language","keyterms","outputs","max_resolution","video","files","source","transcript","renders","renders_left","seconds_billed","paid_with","price_usd","error","created_at","updated_at","finished_at","expires_at"],"title":"CaptionOut"},"CaptionPatch":{"properties":{"transcript":{"anyOf":[{"$ref":"#/components/schemas/TranscriptIn"},{"type":"null"}]},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style"},"style_overrides":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Style Overrides"},"max_resolution":{"anyOf":[{"type":"integer","enum":[720,1080,1440,2160]},{"type":"null"}],"title":"Max Resolution"}},"additionalProperties":false,"type":"object","title":"CaptionPatch"},"CheckoutIn":{"properties":{"plan":{"anyOf":[{"type":"string","enum":["bolt","volt","storm"]},{"type":"null"}],"title":"Plan"},"topup_usd":{"anyOf":[{"type":"integer","maximum":500.0,"minimum":10.0},{"type":"null"}],"title":"Topup Usd"}},"additionalProperties":false,"type":"object","title":"CheckoutIn"},"ErrorOut":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","message"],"title":"ErrorOut"},"EstimateIn":{"properties":{"duration_s":{"type":"number","maximum":21600.0,"exclusiveMinimum":0.0,"title":"Duration S"},"outputs":{"items":{"type":"string","enum":["mp4","srt","vtt","json","ass"]},"type":"array","title":"Outputs"},"max_resolution":{"type":"integer","enum":[720,1080,1440,2160],"title":"Max Resolution","default":1080}},"additionalProperties":false,"type":"object","required":["duration_s"],"title":"EstimateIn"},"EstimateOut":{"properties":{"seconds":{"type":"integer","title":"Seconds"},"price_usd":{"type":"string","title":"Price Usd","description":"What an API key pays, in credits."},"plan_minutes":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plan Minutes","description":"For a signed-in web caller: the plan minutes it would use."},"minutes_left":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minutes Left"},"balance_usd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Balance Usd"}},"type":"object","required":["seconds","price_usd","plan_minutes","minutes_left","balance_usd"],"title":"EstimateOut"},"FileOut":{"properties":{"url":{"type":"string","title":"Url"},"filename":{"type":"string","title":"Filename"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["url","filename","expires_at"],"title":"FileOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyCreatedOut":{"properties":{"key":{"$ref":"#/components/schemas/KeyOut"},"secret":{"type":"string","title":"Secret","description":"The full key. It's shown once. Store it now."}},"type":"object","required":["key","secret"],"title":"KeyCreatedOut"},"KeyIn":{"properties":{"label":{"type":"string","maxLength":100,"minLength":1,"title":"Label"},"mode":{"type":"string","enum":["live","test"],"title":"Mode","description":"live keys spend credits. test keys are free and use a fake transcriber."}},"additionalProperties":false,"type":"object","required":["label","mode"],"title":"KeyIn"},"KeyList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/KeyOut"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"KeyList"},"KeyOut":{"properties":{"id":{"type":"string","title":"Id"},"label":{"type":"string","title":"Label"},"mode":{"type":"string","enum":["live","test"],"title":"Mode"},"prefix":{"type":"string","title":"Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","label","mode","prefix","created_at","last_used_at","revoked_at"],"title":"KeyOut"},"LoginIn":{"properties":{"token":{"type":"string","maxLength":200,"minLength":1,"title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"LoginIn"},"LoginLinkIn":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"source":{"anyOf":[{"$ref":"#/components/schemas/SourceIn"},{"type":"null"}],"description":"The utm_source, utm_medium, and utm_campaign of the link that brought them to the site. Saved if this makes a new account."}},"additionalProperties":false,"type":"object","required":["email"],"title":"LoginLinkIn"},"MeOut":{"properties":{"user":{"anyOf":[{"$ref":"#/components/schemas/UserOut"},{"type":"null"}]},"org":{"$ref":"#/components/schemas/OrgOut"},"auth":{"type":"string","enum":["session","key"],"title":"Auth"},"mode":{"type":"string","enum":["live","test"],"title":"Mode"},"suspended":{"type":"boolean","title":"Suspended"}},"type":"object","required":["user","org","auth","mode","suspended"],"title":"MeOut"},"OrgOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"OrgOut"},"RenderIn":{"properties":{"outputs":{"items":{"type":"string","enum":["mp4","srt","vtt","json","ass"]},"type":"array","maxItems":5,"minItems":1,"title":"Outputs"}},"additionalProperties":false,"type":"object","title":"RenderIn"},"SavedStyleIn":{"properties":{"name":{"type":"string","maxLength":40,"minLength":1,"title":"Name"},"style":{"type":"string","title":"Style","description":"The style it starts from. An id from GET /v1/styles."},"style_overrides":{"additionalProperties":true,"type":"object","title":"Style Overrides","description":"The changes to that style, as in POST /v1/captions."}},"additionalProperties":false,"type":"object","required":["name","style"],"title":"SavedStyleIn"},"SavedStyleList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SavedStyleOut"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"SavedStyleList"},"SavedStyleOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"style":{"type":"string","title":"Style","description":"Send this as style in POST /v1/captions."},"style_overrides":{"additionalProperties":true,"type":"object","title":"Style Overrides","description":"Send this as style_overrides."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","style","style_overrides","created_at","updated_at"],"title":"SavedStyleOut"},"SavedStylePatch":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":40,"minLength":1},{"type":"null"}],"title":"Name"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style"},"style_overrides":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Style Overrides"}},"additionalProperties":false,"type":"object","title":"SavedStylePatch"},"SignedInOut":{"properties":{"user":{"$ref":"#/components/schemas/UserOut"},"org":{"$ref":"#/components/schemas/OrgOut"},"csrf_token":{"type":"string","title":"Csrf Token"}},"type":"object","required":["user","org","csrf_token"],"title":"SignedInOut"},"SourceIn":{"properties":{"source":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Source"},"medium":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Medium"},"campaign":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Campaign"}},"additionalProperties":false,"type":"object","title":"SourceIn","description":"Tags that aren't lowercase letters, digits, - or _ are dropped, not refused."},"TranscriptIn":{"properties":{"language":{"type":"string","maxLength":16,"minLength":2,"title":"Language"},"words":{"items":{"$ref":"#/components/schemas/WordIn"},"type":"array","maxItems":20000,"title":"Words"}},"additionalProperties":false,"type":"object","required":["language","words"],"title":"TranscriptIn"},"UploadIn":{"properties":{"filename":{"type":"string","maxLength":200,"minLength":1,"title":"Filename"},"content_type":{"type":"string","title":"Content Type","description":"One of video/mp4, video/quicktime, video/webm, video/x-matroska, video/x-m4v."},"size_bytes":{"type":"integer","maximum":2147483648.0,"exclusiveMinimum":0.0,"title":"Size Bytes"}},"additionalProperties":false,"type":"object","required":["filename","content_type","size_bytes"],"title":"UploadIn"},"UploadOut":{"properties":{"id":{"type":"string","title":"Id","description":"Pass this as upload_id to POST /v1/captions."},"upload_url":{"type":"string","title":"Upload Url","description":"PUT the file's bytes here."},"method":{"type":"string","const":"PUT","title":"Method","default":"PUT"},"headers":{"additionalProperties":{"type":"string"},"type":"object","title":"Headers","description":"Send these headers with the PUT."},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","upload_url","headers","expires_at"],"title":"UploadOut"},"UrlOut":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"UrlOut"},"UserOut":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"}},"type":"object","required":["id","email"],"title":"UserOut"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoOut":{"properties":{"duration_s":{"type":"number","title":"Duration S"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"fps":{"type":"number","title":"Fps"},"hdr":{"type":"boolean","title":"Hdr"}},"type":"object","required":["duration_s","width","height","fps","hdr"],"title":"VideoOut"},"WebConfigOut":{"properties":{"turnstile_site_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Site Key","description":"Turnstile's site key, or null."},"billing":{"type":"boolean","title":"Billing","description":"Whether plans and credits can be bought."},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"}},"type":"object","required":["turnstile_site_key","billing","contact_email"],"title":"WebConfigOut"},"WebhookSecretOut":{"properties":{"secret":{"type":"string","title":"Secret","description":"Check the Zaption-Signature header with this."}},"type":"object","required":["secret"],"title":"WebhookSecretOut"},"WordIn":{"properties":{"text":{"type":"string","maxLength":64,"minLength":1,"title":"Text"},"start_ms":{"type":"integer","minimum":0.0,"title":"Start Ms"},"end_ms":{"type":"integer","minimum":0.0,"title":"End Ms"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence","description":"Ignored. Kept so a GET's words can be sent back as is."}},"additionalProperties":false,"type":"object","required":["text","start_ms","end_ms"],"title":"WordIn"}}}}