Videos without captions
The one failure mode you should design for explicitly.
What happens
The job goes to failed with error no_captions and nothing is charged. There is no transcription fallback: we tried self-hosted speech-to-text and it was slower and no more accurate than the captions we already read, so it was removed rather than kept as a half-working option.
Detecting it early
If you are building a list of videos to process, treat caption availability as a filter at collection time rather than discovering it one job at a time. In a large batch, expect a small percentage to drop out this way and make your pipeline tolerant of the gap rather than treating it as an incident.
Charging
Never charged, and it shows separately on the usage screen so a run with many caption-less videos is visible rather than silently eating your allowance. Retrying the same video will not help unless the channel has since added captions.