YouTube Data API 10,000-unit pool: budget checks for a pipeline

Google gives a project 10,000 units a day shared by endpoints other than search.list and videos.insert. Poll Sume for job status instead of spending them.

5 min readSume
All posts

Google's quota page says endpoints other than search.list and videos.insert share a default of 10,000 units per day. Keep that pool for the calls only YouTube can answer, and learn about render completion from Sume instead: a signed job.completed webhook, or polls of GET /v1/jobs/{id}/status on api.sume.com, spend none of your YouTube units.

Which method costs what is on Google's page: it lists videos.insert at 1 quota point per call, with its own 100-call daily limit.

Where does each check belong?

Route each question to the system that can answer it cheaply.

Who answers which pipeline question (read 2026-10-05)
QuestionAskCost to your YouTube quota
Is the clip rendered?Sume webhook or status_urlNone
Did the upload start?YouTube response to videos.insertIts own 100-call bucket
Other YouTube readsShared 10,000-unit poolPer Google's cost table

How do I keep a tally?

Track the units you spend per day and stop at a margin. Look up each method's cost on Google's table. The sample keeps a counter.

class DailyBudget:
    def __init__(self, units: int = 10_000, reserve: int = 500):
        self.left = units - reserve

    def spend(self, cost: int) -> bool:
        if cost > self.left:
            return False
        self.left -= cost
        return True


if __name__ == "__main__":
    budget = DailyBudget()
    print(budget.spend(1), budget.left)

What about missed webhooks?

Webhooks can be missed, so keep a slow sweeper that reads Sume status, which is free of YouTube quota, and redeliver with POST /v1/jobs/{job_id}/webhook/redeliver when the job finished but your receiver never saw it. The post on a reconcile sweeper shows the loop.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume