Conversation
…d API Registry entry (API-key provider, Bearer header, free GET /me probe), a neutral lettermark, the two test-list additions, regenerated SKILL.md copies (provider count), and a core catalog file with 8 endpoints: video / audio / trimmed-clip downloads (async job protocol with descriptors) and their poll routes, title+duration and audio-track lookups, and the account/balances read. Scoped deliberately to downloads and video info; the API's channel-listing route is left to the dedicated YouTube data providers. Live self-verified 2026-09-10 against production; no verified: stamps or example responses (left for the maintainers' independent run). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SoRYeRXZeWQWWjdmFzBdhM
pkpio
force-pushed
the
feat/vidkraken-listing
branch
from
September 10, 2026 16:08
3a14667 to
d1c38ed
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Adds Vid Kraken (https://vidkraken.com) as a self-serve API-key provider and catalogs its 8 core operations: server-side YouTube video / audio / trimmed-clip downloads delivered as a CDN file URL (async job protocol, wired with
async:descriptors), the video title/duration and audio-track (dubbed language) lookups that pre-flight a download, and the free account/balances read that serves as the probe. The listing is deliberately scoped to downloads and video info.Files: registry entry (
src/treg/oauth_providers.py),src/treg/catalog/vidkraken.yaml, neutral lettermarksrc/treg/web/logos/vidkraken.svg, the two test-list additions, and the five generatedSKILL.mdcopies regenerated byscripts/build_plugin.py(provider count 70 → 71;test_the_plugin_skill_is_not_stalefails otherwise). Noverified:stamps, no example responses, no credential values anywhere in the diff.Contact: hello@vidkraken.com
Please reach us there to arrange the test credential for live verification. We will hand over a dedicated key with a bandwidth grant large enough for repeated sweeps (a stock free-plan key is capped at 10 lifetime downloads / 50 info lookups / 10 GB).
Eligibility and integration facts
https://vidkraken.com/api/v2(the two legacy hostnames in the spec'sserverslist are aliases of it).Authorization: Bearer <key>header.GET /me— free, no call limit, returns plan + live balances.docs_url).GET /mereturns balances, not prices.Pricing and billing model
Downloads are billed in bandwidth only: the delivered file size, with a 20 MB minimum per download, drawn from the plan's monthly allowance. There is no per-download fee and failures are never charged. The USD figure in the cost blocks is the plan's effective per-GB rate; the catalog lists the Starter rate as the documented price:
POST /info(both rows) draws 1 "info request" from a per-plan quota (2× the download quota, e.g. 200,000/month on Starter; 50 lifetime on Free). It is a quota counter that is never priced in USD and has no overage, so it is recorded as1 credit per callwith a note.settlesemantics: charged on success only.GET /me: free.Bogus-key probe — observed from the wire, 2026-09-10 15:12:47 UTC
Also observed (15:08 UTC): no
Authorizationheader →401 {"error":"Missing API key. Provide it as 'Bearer YOUR_API_KEY'"}; the same bogus key onPOST /info→401 {"error":"Invalid API key"}. A valid key onGET /me→200withplanandbalances. I did not run treg'sPOST /connections/tokenflow locally; the registry entry relies on the default "any ≥400 rejects" rule, which this behavior satisfies.Vendor self-verification ledger — 2026-09-10 (15:12 UTC sweep)
Every
test_requestwas run live against production on our own Scale-plan account, readingGET /mebalances immediately after each call. The meter isbalances.bandwidth_mb.used(bandwidth, THE billed meter),balances.info.used(info quota) andbalances.download_count.used.vidkraken.youtube.video.downloadCOMPLETEDin 5 sjNQXAC9IVRw("Me at the zoo", 19 s), format 360fileSize475,958 B billed at the 20 MB floor; bandwidth_mb.used 1,123,936 → 1,123,956vidkraken.youtube.audio.downloadCOMPLETEDin 5 sfileSize252,182 B; 1,123,956 → 1,123,976vidkraken.youtube.video.clipCOMPLETEDin 5 sfileSize220,975 B; 1,123,976 → 1,123,996vidkraken.youtube.download.job.statusvidkraken.youtube.video.detailsuccessin 0 sjNQXAC9IVRwvidkraken.youtube.video.audio_trackssuccessin 6 somW5PrTMz-c(has dubbed tracks),includeAudioTracks: truevidkraken.youtube.info.job.statusvidkraken.account.usageReconciliation of the sweep: bandwidth_mb.used 1,123,936 → 1,123,996 = 60 MB = 3 × 20 MB floor ✓; download_count 5,966 → 5,969 = 3 ✓; info 11,339 → 11,341 = 2 ✓ (the sweep also called
POST /list-channelonce, moving channel_list.used 1,180 → 1,181; that route was subsequently dropped from the listing). The account'sclient_downloadmeter moved during the run (281,870 → 281,886) from unrelated concurrent traffic on this production account; no listed route touches that meter.Notes on price observation: all three download test targets are tiny on purpose (sub-MB files) and therefore settle at the 20 MB floor — the floor is the observed charge. A download larger than 20 MB was not run in this sweep; the "actual file size" half of the rule is documented (OpenAPI
info.description, pricing page), not observed here. There are no deliberate-miss targets. Expired/foreign job ids answer404 {"error":"Download job not found"}and404 {"error":"Job not found or expired"}respectively (observed 15:12:46 UTC).Second sweep, 15:15 UTC, via
scripts/catalog_verify.py vidkraken: PASS on every row (http 200; the run predates dropping the channel row, so it covered 9 rows of which the listed 8 are a subset). Its account-level deltas are not reported as meter evidence because the same account was serving unrelated traffic at the time (download_count moved by 5 where the sweep submitted 3).Validation:
Full documented surface map
The source of truth is the 6-path OpenAPI 3.1 document at https://vidkraken.com/openapi.yaml (plus one outbound webhook).
POST /downloadyoutube.video.download(360p–1080p MP4),youtube.audio.download(formataudio: the API default and the cheapest tier),youtube.video.clip(startTime/endTimetrim). Thelanguage(dubbed audio track) andwebhookUrloptions are inputs on those rows rather than separate rows.GET /download/{jobId}kind: utilitypoll target of the file-levelasyncdescriptor.POST /infoyoutube.video.detail(title + duration, the free-of-bandwidth pre-flight) andyoutube.video.audio_tracks(includeAudioTracks: true).GET /info/{jobId}kind: utilitypoll target of the /infoasyncoverride.POST /list-channelyoutube.channel.videos.GET /meaccount.usage, the probe.download.finishedwebhookUrlinput.POST /client-download(named in the spec's billing table; no published path)Capability mapping
youtube.video.detail(POST /info — note it returns title + duration only, no stats; the row's summary and note say so. If reviewers would rather keep that id for stat-bearing providers, a narrower proposed id such asyoutube.video.preflightis fine by us) andaccount.usage.youtubeplatform yields the media file today):youtube.video.download,youtube.audio.download,youtube.video.clip,youtube.video.audio_tracks, plus the two utility idsyoutube.download.job.status/youtube.info.job.status.How it was tested
Live sweep with our own key as above;
scripts/catalog_verify.py vidkrakenPASS on every row;scripts/catalog_validate.pyexit 0 over the whole catalog; full pytest suite (result above).Checklist
uv run --with pytest-xdist pytest -n auto -qpasses locallytest_every_provider_is_registeredand the key-provider offerable loop)docs/context/fragment — data-only vendor listing; left to the maintainer half perdocs/VENDORS.md.envvalues)🤖 Generated with Claude Code
https://claude.ai/code/session_01SoRYeRXZeWQWWjdmFzBdhM