# Grade Diretório de transmissões públicas (fonte iptv-org) e galeria pessoal com URL estável por pasta. Não hospeda vídeo. O player e o VLC falam com o host do canal. Docs: https://gradetv.pages.dev/api/ · https://gradetv.pages.dev/openapi.json ## Descoberta - GET https://gradetv.pages.dev/api/ - GET https://gradetv.pages.dev/llms.txt - GET https://gradetv.pages.dev/openapi.json ## Endpoints principais - `GET /api/channels` — Busca paginada do catálogo (q, country, category, language, playable, nsfw). (auth: none) - `GET /api/channels/:id` — Canal + streams + URLs absolutas. (auth: none) - `GET /api/countries` — Facetas de país. (auth: none) - `GET /api/categories` — Facetas de categoria iptv-org. (auth: none) - `GET /api/languages` — Facetas de idioma. (auth: none) - `POST /api/guest` — Cria guest `ipt_…`. (auth: none) - `POST /api/keys` — Mint API key `iptk_…` (texto 1×). (auth: guest) - `GET /api/keys` — Lista chaves mascaradas do dono. (auth: guest) - `DELETE /api/keys/:id` — Revoga uma key. (auth: guest) - `GET /api/library` — Árvore categoria → sub-aba → canais + URLs de feed. (auth: guest) - `POST /api/categories` — Cria tab principal. (auth: guest) - `PATCH /api/categories/:id` — Renomeia categoria. (auth: guest) - `DELETE /api/categories/:id` — Apaga categoria e o que tem dentro. (auth: guest) - `POST /api/groups` — Cria sub-aba. (auth: guest) - `DELETE /api/groups/:id` — Apaga sub-aba. (auth: guest) - `POST /api/items` — Põe um canal na sub-aba. (auth: guest) - `DELETE /api/items/:id` — Remove canal da sub-aba. (auth: guest) - `POST /api/items/:id/play` — Marca último canal tocado da sub-aba. (auth: guest) - `GET /api/billing` — Preço do contato e tetos da galeria. (auth: none) - `POST /api/contact` — Contato: Turnstile (humano) ou x402 $0.10 (agente). (auth: none)