# Grade Diretório de transmissões públicas e galeria pessoal com URL estável por pasta. Não armazena nem retransmite vídeo. O M3U e a API apontam para GET https://m3m8.gradetv.net/api/s/:id. Links antigos em gradetv.net/api/s/ ainda 302 para o mesmo path. Playlists principais e internas são servidas pela Grade com headers; segmentos e chaves vêm da origem. O player conta o play uma vez por pessoa, canal e dia, sem o refresh HLS. Falha na obtenção de uma playlist pode retornar 422 ou 502. 401/403 da origem oferece abrir o site oficial do canal e copiar a playlist original para outro player. Mídia HTTP oferece player legado HTTP isolado, sem conta (GET /api/legacy/:id). CORS e recusa do provedor ainda podem impedir reprodução. Produtores: https://staging.gradetv.net/produtores e GET https://staging.gradetv.net/api/producers — transmissão autorizada sob consulta. Informações e contato, sem ativação. Envie o projeto para contato@gradetv.net ou POST /api/contact (Turnstile humano; x402/crédito para agente). Páginas HTML (sem JS): https://staging.gradetv.net/brasil · https://staging.gradetv.net/como-usar · https://staging.gradetv.net/sobre. Mesmas páginas em en/es/fr/de: https://staging.gradetv.net/en · https://staging.gradetv.net/en/brazil · https://staging.gradetv.net/en/how-to · https://staging.gradetv.net/en/about. Consulte a programação do dia em GET /api/channels/:id/guia e a saúde na ficha do canal. Catálogo em dados: https://staging.gradetv.net/api/channels?country=BR&language=por&playable=1 (filtros: q, category, network, quality; facets.categories[{id,name,count,icon}] + total). Sitemap: https://staging.gradetv.net/sitemap.xml (home, guias, produtores e descoberta). Catálogo comunitário: cada canal carrega `social` {plays, fails, favorites, comments, health, your_geo_ok, your_latency_ms} e https://staging.gradetv.net/api/channels/:id/health abre a saúde por ambiente (navegador, sistema, país) e por PAÍS: regions[] + geo (geo-restrito vs. fora do ar, com países), latency[] (velocidade de abertura medida no hop /api/s/:id) e pra_voce — o veredito para o país de quem chama. É assim que se sabe se o canal está fora do ar, geo-bloqueado ou só lento para você. Relate o que aconteceu no seu player em POST /api/play-report; sem relato o catálogo não aprende. Comentário e chat por canal: GET/POST /api/channels/:id/comments e GET/POST /api/chat/:channel_id/mensagens (o WebSocket em /ws é o caminho ao vivo). Sem conta, o convidado ipt_… (POST /api/guest) é a identidade. Com a sessão da conta, a pessoa é a conta: POST /api/auth/claim (a página chama logo depois de entrar) move para ela o que o convidado deste aparelho guardou, e de outro aparelho a biblioteca já vem da conta. Chaves iptk_… saíram (410); agente usa o convidado. Docs: https://staging.gradetv.net/api/ · https://staging.gradetv.net/openapi.json · https://staging.gradetv.net/llms-full.txt (referência completa) - GET https://staging.gradetv.net/developers — integração para agentes; use os contratos da API/MCP em vez de interpretar a UI humana - GET https://staging.gradetv.net/api/ - GET https://staging.gradetv.net/llms.txt - GET https://staging.gradetv.net/openapi.json (`operationId` = nome da tool MCP) - POST https://staging.gradetv.net/mcp — servidor MCP por HTTP; pluga direto, sem instalar - GET https://staging.gradetv.net/llms-full.txt — referência completa: params, corpo, resposta campo a campo, erros **Parceria, patrocínio e anúncio** Espaços do produto sob consulta, com preço sugerido em USD por 30 dias, os números públicos ao lado e uma proposta que chega direto a quem responde. - `GET https://staging.gradetv.net/api/partners` — espaços, preço sugerido, carteira e os campos da proposta. - [Enviar proposta](https://staging.gradetv.net/parceria) — a mesma oferta para gente, com o formulário. - `GET https://staging.gradetv.net/okf/parceria.md` — a oferta em markdown, para ler sem parsear JSON. **Acervos públicos de dados** Explore endereços e compras por lugar e abra os registros de que precisa. Até 20 itens por página, em formatos prontos para pessoas e agentes. Confira a cobertura e a data de referência antes de usar um resultado. Cada produto informa suas opções de acesso. - [CEPs e endereços](https://api.pontofato.com/enderecos/index.json): Encontre endereços por lugar, com coordenadas e referência de 2022. Não certifica CEP vigente. UF → município → bairro/localidade → rua → endereços. [HTML](https://api.pontofato.com/enderecos/) · [llms.txt](https://api.pontofato.com/enderecos/llms.txt) · [OKF](https://api.pontofato.com/enderecos/okf/index.md) - [Editais e compras públicas](https://api.editalmd.com/licitacoes/index.json): Encontre compras públicas por lugar e período. Consulte documentos e opções de leitura no EditalMD. Modalidade → UF → ano → mês → dia → município → compras. [HTML](https://api.editalmd.com/licitacoes/) · [llms.txt](https://api.editalmd.com/licitacoes/llms.txt) · [OKF](https://api.editalmd.com/licitacoes/okf/index.md) **Cota** - Grátis: catálogo, busca e facets (`GET /api/channels`) — sem cota. - Grátis: galeria pessoal, pastas e feeds M3U/JSON/XSPF — sem cota por convidado. - Grátis: ler chat, comentários e saúde de canal — sem cota. - Pago: escrever no chat (30 dias) — **$0.10** USDC via x402. - Pago: contato de agente — **$0.10** USDC via x402. Rota paga responde **402** com `accepts[]` (x402, USDC na Base). Pague e repita a mesma chamada com `X-PAYMENT`. Números em vigor: https://staging.gradetv.net/api/billing **MCP** - **Endpoint:** `POST https://staging.gradetv.net/mcp` — Streamable HTTP, JSON-RPC 2.0. Não precisa instalar nada. - Confira com `GET https://staging.gradetv.net/mcp` (cartão do servidor) ou `tools/list`. - Cada tool é uma chamada nesta mesma API — o MCP não tem backend próprio. - Credencial (`X-Guest-Token`, `Authorization`, `X-PAYMENT`) vai no header e é repassada. **Skill** - `.agents/skills/iptv/SKILL.md` — paridade com esta superfície. - **Paridade:** mexeu na UI/API → apidocs + skill + este arquivo no mesmo PR. ## Convenções - Rota de leitura aceita `GET` e também `POST`, `PUT` ou `PATCH` com os mesmos parâmetros em JSON ou formulário. - JSON é o padrão; `Accept: text/html` devolve a mesma resposta em HTML. - `/skill.md` é a skill pronta para agente; `/.well-known/api-catalog` (ou `/discovery/resources`) lista as superfícies; `/mcp` também atende em `/mcp/v1`. ## Endpoints principais - [`GET /okf/:arquivo`](/llms-full.txt?prefix=%2Fokf%2F%3Aarquivo): Bundle OKF (Open Knowledge Format v0.1): markdown com frontmatter para o agente ler o produto inteiro sem parsear HTML. (auth: none) - [`GET /.well-known/:arquivo`](/llms-full.txt?prefix=%2F.well-known%2F%3Aarquivo): Descoberta de máquina antes da home: `api-catalog` (RFC 9727, linkset com a API e o MCP), `security.txt` (RFC 9116), `x402` (manifesto de pagamento: rede, carteira e rotas que cobram), `agent-card.json` (identidade do agente: ferramentas MCP e portas de descoberta; também em `/agent.json`) e `mcp-registry-auth` (chave do registro oficial de MCP). (auth: none) - [`GET /apis.json`](/llms-full.txt?prefix=%2Fapis.json): APIs.json (apisjson.org, 0.19): o índice que o APIs.io colhe — a API, o MCP, OpenAPI, guia e bundle OKF num arquivo só. Também em `/.well-known/apis.json`. (auth: none) - [`GET /agent.json`](/llms-full.txt?prefix=%2Fagent.json): Cartão do agente: identidade, quem opera, documentação, o endpoint MCP e as ferramentas que ele serve. Mesmo documento de `/.well-known/agent-card.json`. (auth: none) - [`POST /mcp`](/llms-full.txt?prefix=%2Fmcp): Servidor MCP por HTTP (Streamable HTTP, JSON-RPC 2.0) — pluga no cliente sem instalar nada. (auth: none) - [`GET /api/channels`](/llms-full.txt?prefix=%2Fapi%2Fchannels): Busca paginada do catálogo público, com as facetas de categoria da busca atual. (auth: none) - [`GET /api/channels/:id`](/llms-full.txt?prefix=%2Fapi%2Fchannels%2F%3Aid): Ficha completa de um canal, com os streams já apontando para o nosso hop. (auth: none) - [`GET /api/channels/:id/health`](/llms-full.txt?prefix=%2Fapi%2Fchannels%2F%3Aid%2Fhealth): Por que o canal falha, para quem e onde — inclui geo-bloqueio, latência por região e o veredito de quem está chamando. (auth: none) - [`GET /api/channels/:id/guia`](/llms-full.txt?prefix=%2Fapi%2Fchannels%2F%3Aid%2Fguia): Programação de hoje do canal, grabada por nós: o que está no ar agora e o que vem a seguir. (auth: none) - [`GET /api/geo`](/llms-full.txt?prefix=%2Fapi%2Fgeo): País e idioma sugeridos para quem está chamando. (auth: none) - [`GET /api/countries`](/llms-full.txt?prefix=%2Fapi%2Fcountries): Países que têm canal tocável, com a contagem e a bandeira de cada um. (auth: none) - [`GET /api/tags`](/llms-full.txt?prefix=%2Fapi%2Ftags): Tags das estações de rádio tocáveis (vocabulário livre), com a contagem de cada uma. (auth: none) - [`GET /api/categories`](/llms-full.txt?prefix=%2Fapi%2Fcategories): Vocabulário de categorias do catálogo, com ícone para a interface. (auth: none) - [`GET /api/languages`](/llms-full.txt?prefix=%2Fapi%2Flanguages): Idiomas que têm canal tocável, com a contagem de cada um. (auth: none) - [`GET /api/networks`](/llms-full.txt?prefix=%2Fapi%2Fnetworks): Redes e emissoras que têm canal tocável, com a contagem. (auth: none) - [`GET /api/qualities`](/llms-full.txt?prefix=%2Fapi%2Fqualities): Qualidades distintas encontradas nos streams do catálogo (em rádio, codec e bitrate). (auth: none) - [`GET /api/subdivisions`](/llms-full.txt?prefix=%2Fapi%2Fsubdivisions): Estados e províncias que têm canal tocável. (auth: none) - [`GET /api/cities`](/llms-full.txt?prefix=%2Fapi%2Fcities): Cidades que têm canal tocável, filtráveis por país e por estado. (auth: none) - [`GET /api/producers`](/llms-full.txt?prefix=%2Fapi%2Fproducers): Oferta sob consulta para produtores com conteúdo autorizado e canais de contato. (auth: none) - [`GET /logos/:id`](/llms-full.txt?prefix=%2Flogos%2F%3Aid): Logo do canal servido por nós, na variante de card (≤256px). (auth: none) - [`GET /api/s/:id`](/llms-full.txt?prefix=%2Fapi%2Fs%2F%3Aid): Hop do stream: a URL pública aponta para https://m3m8.gradetv.net; o apex ainda 302 para compatibilidade. Mídia continua direta. Conta o play uma vez por pessoa, canal e dia. (auth: none) - [`GET /api/legacy/:id`](/llms-full.txt?prefix=%2Fapi%2Flegacy%2F%3Aid): Metadados públicos para o player legado HTTP, sem sessão. (auth: none) - [`GET /api/m/:ticket`](/llms-full.txt?prefix=%2Fapi%2Fm%2F%3Aticket): Desligado: era o pass-through de vídeo. Responde 410 sempre. (auth: none) - [`GET /f/:token/library.:formato`](/llms-full.txt?prefix=%2Ff%2F%3Atoken%2Flibrary.%3Aformato): Feed da biblioteca inteira do dono, no formato pedido pela extensão. (auth: none) - [`GET /f/:token/c/:categoria.:formato`](/llms-full.txt?prefix=%2Ff%2F%3Atoken%2Fc%2F%3Acategoria.%3Aformato): Feed de uma pasta da biblioteca, para assinar só aquele recorte. (auth: none) - [`GET /f/:token/c/:categoria/g/:grupo.:formato`](/llms-full.txt?prefix=%2Ff%2F%3Atoken%2Fc%2F%3Acategoria%2Fg%2F%3Agrupo.%3Aformato): Feed de uma sub-aba — o recorte mais fino que a galeria oferece. (auth: none) - [`POST /api/guest`](/llms-full.txt?prefix=%2Fapi%2Fguest): Cria um convidado `ipt_…` — é a identidade que guarda galeria, histórico e favoritos sem conta. (auth: none) - [`POST /api/keys`](/llms-full.txt?prefix=%2Fapi%2Fkeys): Retirada: criava chave `iptk_…`. Responde 410. (auth: none) - [`GET /api/keys`](/llms-full.txt?prefix=%2Fapi%2Fkeys): Retirada: listava as chaves `iptk_…`. Responde 410. (auth: none) - [`DELETE /api/keys/:id`](/llms-full.txt?prefix=%2Fapi%2Fkeys%2F%3Aid): Retirada: revogava uma chave `iptk_…`. Responde 410. (auth: none) - [`GET /api/library`](/llms-full.txt?prefix=%2Fapi%2Flibrary): A galeria inteira do dono: pastas, sub-abas, canais e as URLs de feed de cada nível. (auth: guest) - [`POST /api/categories`](/llms-full.txt?prefix=%2Fapi%2Fcategories): Cria uma pasta na galeria, já com a sub-aba Geral dentro dela. (auth: guest) - [`PATCH /api/categories/:id`](/llms-full.txt?prefix=%2Fapi%2Fcategories%2F%3Aid): Renomeia uma pasta. O slug do feed acompanha o nome novo. (auth: guest) - [`DELETE /api/categories/:id`](/llms-full.txt?prefix=%2Fapi%2Fcategories%2F%3Aid): Apaga a pasta e tudo que está dentro dela: sub-abas e canais. (auth: guest) - [`POST /api/groups`](/llms-full.txt?prefix=%2Fapi%2Fgroups): Cria uma sub-aba dentro de uma pasta. (auth: guest) - [`DELETE /api/groups/:id`](/llms-full.txt?prefix=%2Fapi%2Fgroups%2F%3Aid): Apaga uma sub-aba e os canais que estavam nela. (auth: guest) - [`POST /api/items`](/llms-full.txt?prefix=%2Fapi%2Fitems): Põe um canal do catálogo numa sub-aba da galeria. (auth: guest) - [`DELETE /api/items/:id`](/llms-full.txt?prefix=%2Fapi%2Fitems%2F%3Aid): Tira um canal da sub-aba. O canal continua no catálogo público, claro. (auth: guest) - [`POST /api/items/:id/play`](/llms-full.txt?prefix=%2Fapi%2Fitems%2F%3Aid%2Fplay): Marca este canal como o último tocado da sub-aba — é o que devolve a pessoa onde parou. (auth: guest) - [`GET /api/history`](/llms-full.txt?prefix=%2Fapi%2Fhistory): Canais que o dono assistiu, do mais recente para o mais antigo. (auth: guest) - [`POST /api/history`](/llms-full.txt?prefix=%2Fapi%2Fhistory): Registra que o dono assistiu um canal. Repetir soma em `plays` e sobe a linha. (auth: guest) - [`DELETE /api/history/:channel_id`](/llms-full.txt?prefix=%2Fapi%2Fhistory%2F%3Achannel_id): Tira um canal do histórico do dono. (auth: guest) - [`DELETE /api/history`](/llms-full.txt?prefix=%2Fapi%2Fhistory): Limpa o histórico inteiro do dono, de uma vez. (auth: guest) - [`POST /api/play-report`](/llms-full.txt?prefix=%2Fapi%2Fplay-report): Relata se o canal tocou ou falhou — é o que alimenta a saúde pública do catálogo. (auth: guest) - [`GET /api/play-reports`](/llms-full.txt?prefix=%2Fapi%2Fplay-reports): Relatos crus, com endereço IP, para investigar um canal — só operador. (auth: token) - [`GET /api/favorites`](/llms-full.txt?prefix=%2Fapi%2Ffavorites): Canais favoritados pelo dono, do mais recente para o mais antigo. (auth: guest) - [`POST /api/favorites`](/llms-full.txt?prefix=%2Fapi%2Ffavorites): Favorita um canal. Repetir não soma: o contador público conta pessoas, não cliques. (auth: guest) - [`DELETE /api/favorites/:channel_id`](/llms-full.txt?prefix=%2Fapi%2Ffavorites%2F%3Achannel_id): Desfavorita o canal e devolve o ponto ao contador público. (auth: guest) - [`GET /api/channels/:id/comments`](/llms-full.txt?prefix=%2Fapi%2Fchannels%2F%3Aid%2Fcomments): Comentários públicos de um canal, do mais novo para o mais antigo. (auth: none) - [`POST /api/channels/:id/comments`](/llms-full.txt?prefix=%2Fapi%2Fchannels%2F%3Aid%2Fcomments): Escreve um comentário no canal. Teto de 20 por hora por dono. (auth: guest) - [`DELETE /api/comments/:id`](/llms-full.txt?prefix=%2Fapi%2Fcomments%2F%3Aid): Apaga um comentário seu. Comentário alheio responde 404, não 403. (auth: guest) - [`GET /api/chat/:channel_id/mensagens`](/llms-full.txt?prefix=%2Fapi%2Fchat%2F%3Achannel_id%2Fmensagens): Últimas mensagens da sala do canal, mais o endereço do WebSocket para acompanhar ao vivo. (auth: none) - [`POST /api/chat/:channel_id/mensagens`](/llms-full.txt?prefix=%2Fapi%2Fchat%2F%3Achannel_id%2Fmensagens): Manda mensagem na sala sem abrir WebSocket. Exige o passe mensal do chat. (auth: guest) - [`POST /api/chat/pass`](/llms-full.txt?prefix=%2Fapi%2Fchat%2Fpass): Compra ou confirma o passe mensal do chat: $0.10 por 30 dias, via x402 ou crédito. (auth: guest) - [`GET /api/chat/:channel_id/ws`](/llms-full.txt?prefix=%2Fapi%2Fchat%2F%3Achannel_id%2Fws): WebSocket da sala do canal — o caminho ao vivo, com presença. (auth: none) - [`GET /api/auth/bootstrap`](/llms-full.txt?prefix=%2Fapi%2Fauth%2Fbootstrap): Prepara o navegador para entrar na conta global. (auth: none) - [`GET /api/account/profile`](/llms-full.txt?prefix=%2Fapi%2Faccount%2Fprofile): Consulta seu perfil global. (auth: session) - [`GET /api/account/avatar`](/llms-full.txt?prefix=%2Fapi%2Faccount%2Favatar): Consulta sua foto de perfil global. (auth: session) - [`POST /api/auth/logout`](/llms-full.txt?prefix=%2Fapi%2Fauth%2Flogout): Revoga esta sessão do produto. (auth: session) - [`GET /api/account/keys`](/llms-full.txt?prefix=%2Fapi%2Faccount%2Fkeys): Lista suas chaves de API neste produto. (auth: session) - [`POST /api/account/keys/create`](/llms-full.txt?prefix=%2Fapi%2Faccount%2Fkeys%2Fcreate): Cria uma chave de API para agentes e scripts. (auth: session) - [`POST /api/account/keys/revoke`](/llms-full.txt?prefix=%2Fapi%2Faccount%2Fkeys%2Frevoke): Revoga uma das suas chaves de API. (auth: session) - [`POST /api/auth/claim`](/llms-full.txt?prefix=%2Fapi%2Fauth%2Fclaim): Passa para a conta o que o convidado criou: pastas (com as sub-abas e os canais), favoritos, histórico, comentários e o link do feed. (auth: session) - [`GET /api/me`](/llms-full.txt?prefix=%2Fapi%2Fme): A conta da sessão: e-mail e o tamanho da biblioteca dela. (auth: session) - [`GET /api/billing`](/llms-full.txt?prefix=%2Fapi%2Fbilling): Preços em vigor, tetos da galeria e a configuração x402 completa. (auth: none) - [`POST /api/contact`](/llms-full.txt?prefix=%2Fapi%2Fcontact): Contato e projetos de produtores: humano usa Turnstile; agente paga $0.10 por x402 ou crédito. (auth: none) - [`POST /api/pagamento/aberto`](/llms-full.txt?prefix=%2Fapi%2Fpagamento%2Faberto): A interface relata que exibiu uma cobrança. Agentes não devem chamar. (auth: none) - [`GET /api/vitrine`](/llms-full.txt?prefix=%2Fapi%2Fvitrine): Os números públicos do produto: tráfego, agentes, uso e confiabilidade, sem dinheiro. (auth: none) - [`GET /api/vitrine/operador`](/llms-full.txt?prefix=%2Fapi%2Fvitrine%2Foperador): O documento completo do produto no painel do operador — só com o token do operador. (auth: none) - [`GET /api/vitrine/painel`](/llms-full.txt?prefix=%2Fapi%2Fvitrine%2Fpainel): O painel da casa inteira, na forma que o gm lê — só com o token do operador. (auth: none) - [`GET /api/vitrine/cursores`](/llms-full.txt?prefix=%2Fapi%2Fvitrine%2Fcursores): O cursor de erro resolvido por produto (`borda`, `cli`) — só com o token do operador. (auth: none) - [`GET /api/partners`](/llms-full.txt?prefix=%2Fapi%2Fpartners): Parceria, patrocínio e anúncio: os espaços do produto com preço sugerido, os números públicos ao lado e como propor. (auth: none) - [`GET /api/admin/catalogo/estado`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Festado): Contagens do catálogo no ar e do staging, mais o carimbo da última recarga. (auth: token) - [`GET /api/admin/catalogo/slugs`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Fslugs): Slug publicado de cada canal, paginado por id — a recarga herda para não trocar URL indexada. (auth: token) - [`POST /api/admin/catalogo/inicio`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Finicio): A abertura de staging foi retirada e responde 410. (auth: token) - [`POST /api/admin/catalogo/lote`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Flote): O envio de lote para staging foi retirado e responde 410. (auth: token) - [`POST /api/admin/guia/lote`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fguia%2Flote): Grava o dia de programação de até 500 canais em `guia_dia` (INSERT OR REPLACE). (auth: token) - [`POST /api/admin/guia/fim`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fguia%2Ffim): Registra a fonte `guia` em `catalog_meta.fontes`, ao lado das fontes do catálogo. (auth: token) - [`GET /api/admin/logos/mortas`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Flogos%2Fmortas): Canais de TV cuja origem de logo morreu (o cron já falhou ao buscá-la) e ainda não têm override. (auth: token) - [`POST /api/admin/logos/overrides`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Flogos%2Foverrides): Atualiza o logo exibido na ficha do canal. (auth: token) - [`POST /api/admin/catalogo/troca`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Ftroca): A troca integral do catálogo foi retirada e responde 410. (auth: token) - [`POST /api/admin/catalogo/delta/inicio`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Fdelta%2Finicio): Abre a recarga por diferença: coleira contra o catálogo no ar e a marca da execução. (auth: token) - [`POST /api/admin/catalogo/delta`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Fdelta): Aplica até 50 linhas de UMA tabela: `upsert` para entradas, `alterar` para colunas modificadas e `remover` por chave. (auth: token) - [`POST /api/admin/catalogo/delta/fim`](/llms-full.txt?prefix=%2Fapi%2Fadmin%2Fcatalogo%2Fdelta%2Ffim): Confere o catálogo inteiro contra `esperado` e grava o carimbo (`synced_at`) — só se bateu. (auth: token) - [`POST /api/credito`](/llms-full.txt?prefix=%2Fapi%2Fcredito): Recarrega crédito pré-pago: paga uma vez com x402 e recebe o token que desconta em qualquer API da casa. (auth: none) - [`GET /api/credito`](/llms-full.txt?prefix=%2Fapi%2Fcredito): Saldo e extrato do crédito — as últimas movimentações, sem devolver o token. (auth: credito) - [`GET /api/pricing`](/llms-full.txt?prefix=%2Fapi%2Fpricing): Preços vigentes e franquias gratuitas. (auth: none)