{"openapi":"3.1.0","info":{"title":"SELVAPI","version":"0.1.0","description":"Endpoints HTTP gratuitos para bots, sites e scripts, rodando na Cloudflare com segurança."},"servers":[{"url":"https://selvapi.com.br"}],"paths":{"/v1/text/reverse":{"get":{"tags":["Texto"],"summary":"Inverte o texto","description":"Compatível com popcat: `/v2/reverse`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}}]}},"/v1/text/mock":{"get":{"tags":["Texto"],"summary":"tExTo ZoMbAnDo (SpongeBob case)","description":"Compatível com popcat: `/v2/mock`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"isso é muito sério"}}]}},"/v1/text/doublestruck":{"get":{"tags":["Texto"],"summary":"𝕋𝕖𝕩𝕥𝕠 𝕕𝕠𝕦𝕓𝕝𝕖-𝕤𝕥𝕣𝕦𝕔𝕜","description":"Compatível com popcat: `/v2/doublestruck`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}}]}},"/v1/text/fancy":{"get":{"tags":["Texto"],"summary":"Fontes Unicode (bold, script, fraktur, circled, fullwidth...)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}},{"name":"style","in":"query","required":false,"schema":{"description":"Estilo","type":"string","enum":["all","doublestruck","bold","italic","script","fraktur","monospace","circled","smallcaps","fullwidth"],"default":"all"}}]}},"/v1/text/upsidedown":{"get":{"tags":["Texto"],"summary":"ʇxǝʇ ɐpɐʇɹǝʌuı","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}}]}},"/v1/text/zalgo":{"get":{"tags":["Texto"],"summary":"T̸̢e̷x̵t̶o̴ ̷z̵a̶l̸g̷o̵","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}},{"name":"intensity","in":"query","required":false,"schema":{"description":"Diacríticos por letra","type":"integer","default":5,"minimum":1,"maximum":20}}]}},"/v1/text/leet":{"get":{"tags":["Texto"],"summary":"1337 5p34k","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}}]}},"/v1/text/vaporwave":{"get":{"tags":["Texto"],"summary":"Ｖａｐｏｒｗａｖｅ (largura total com espaços)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}}]}},"/v1/text/clap":{"get":{"tags":["Texto"],"summary":"Insere palmas (ou outro emoji) entre as palavras","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá mundo"}},{"name":"emoji","in":"query","required":false,"schema":{"description":"Separador","type":"string","default":"👏"}}]}},"/v1/text/case":{"get":{"tags":["Texto"],"summary":"Converte caixa: camel, snake, kebab, pascal, title, upper, lower, constant","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"meu texto de exemplo"}},{"name":"to","in":"query","required":false,"schema":{"description":"Formato","type":"string","enum":["all","camel","pascal","snake","kebab","constant","title","upper","lower","sentence","dot"],"default":"all"}}]}},"/v1/text/slugify":{"get":{"tags":["Texto"],"summary":"Gera slug para URL","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Ação & Reação — Capítulo 1!"}}]}},"/v1/text/stats":{"get":{"tags":["Texto"],"summary":"Contagem de caracteres, palavras, frases, tempo de leitura","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Era uma vez um gato. Ele gostava de API."}}]}},"/v1/text/palindrome":{"get":{"tags":["Texto"],"summary":"Verifica se é palíndromo","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Socorram-me, subi no ônibus em Marrocos"}}]}},"/v1/text/lorem":{"get":{"tags":["Texto"],"summary":"Lorem ipsum","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"paragraphs","in":"query","required":false,"schema":{"description":"Parágrafos","type":"integer","default":1,"minimum":1,"maximum":20}},{"name":"sentences","in":"query","required":false,"schema":{"description":"Frases por parágrafo","type":"integer","default":5,"minimum":1,"maximum":20}}]}},"/v1/text/diff":{"post":{"tags":["Texto"],"summary":"Diff linha a linha entre dois textos","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["a","b"],"properties":{"a":{"description":"Texto original","type":"string","example":"um\ndois\ntrês"},"b":{"description":"Texto novo","type":"string","example":"um\n2\ntrês\nquatro"}}}}}}}},"/v1/text/morse":{"get":{"tags":["Texto"],"summary":"Texto → código Morse","description":"Compatível com popcat: `/v2/texttomorse`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"SOS"}}]}},"/v1/text/unmorse":{"get":{"tags":["Texto"],"summary":"Código Morse → texto","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"morse","in":"query","required":true,"schema":{"description":"Use espaço entre letras e / entre palavras","type":"string","example":"... --- ..."}}]}},"/v1/text/binary/encode":{"get":{"tags":["Texto"],"summary":"Texto → binário (UTF-8)","description":"Compatível com popcat: `/v2/encode`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Oi"}}]}},"/v1/text/binary/decode":{"get":{"tags":["Texto"],"summary":"Binário → texto","description":"Compatível com popcat: `/v2/decode`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"binary","in":"query","required":true,"schema":{"description":"Bits (espaços opcionais)","type":"string","example":"01001111 01101001"}}]}},"/v1/text/encode":{"get":{"tags":["Texto"],"summary":"Codifica: base64, base64url, hex, url, html, rot13, unicode-escape","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"Olá & <mundo>"}},{"name":"type","in":"query","required":false,"schema":{"description":"Codificação","type":"string","enum":["base64","base64url","hex","url","html","rot13","unicode","base32"],"default":"base64"}}]}},"/v1/text/decode":{"get":{"tags":["Texto"],"summary":"Decodifica: base64, base64url, hex, url, html, rot13, base32","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"T2zDoSAmIDxtdW5kbz4="}},{"name":"type","in":"query","required":false,"schema":{"description":"Codificação","type":"string","enum":["base64","base64url","hex","url","html","rot13","base32"],"default":"base64"}}]}},"/v1/text/hash":{"get":{"tags":["Texto"],"summary":"Hash SHA-1/256/384/512 e MD5","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"senha123"}},{"name":"algorithm","in":"query","required":false,"schema":{"description":"Algoritmo","type":"string","enum":["all","md5","sha1","sha256","sha384","sha512"],"default":"all"}}]}},"/v1/text/jwt":{"get":{"tags":["Texto"],"summary":"Decodifica um JWT (sem verificar assinatura)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"token","in":"query","required":true,"schema":{"description":"JWT","type":"string","example":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQW5hIiwiaWF0IjoxNzAwMDAwMDAwfQ.x"}}]}},"/v1/text/json":{"post":{"tags":["Texto"],"summary":"Valida, formata ou minifica JSON","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["json"],"properties":{"json":{"description":"JSON","type":"string","example":"{\"a\":1,\"b\":[1,2]}"},"mode":{"description":"Saída","type":"string","enum":["pretty","minify"],"default":"pretty"}}}}}}}},"/v1/text/regex":{"get":{"tags":["Texto"],"summary":"Testa expressão regular","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"pattern","in":"query","required":true,"schema":{"description":"Regex (sem barras)","type":"string","example":"(\\d+)-(\\w+)"}},{"name":"flags","in":"query","required":false,"schema":{"description":"Flags (g, i, m, s, u)","type":"string","default":"g"}},{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"12-abc e 34-xyz"}}]}},"/v1/text/roman":{"get":{"tags":["Texto"],"summary":"Converte número ↔ algarismos romanos","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"value","in":"query","required":true,"schema":{"description":"Número (1-3999) ou romano","type":"string","example":"2026"}}]}},"/v1/text/number-to-words":{"get":{"tags":["Texto"],"summary":"Número por extenso (pt-BR), inclusive em reais","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"number","in":"query","required":true,"schema":{"description":"Número","type":"number","example":1234.56,"minimum":-1000000000000000,"maximum":1000000000000000}},{"name":"currency","in":"query","required":false,"schema":{"description":"Formatar como R$","type":"boolean","default":false}}]}},"/v1/text/base-convert":{"get":{"tags":["Texto"],"summary":"Converte número entre bases (2–36)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"value","in":"query","required":true,"schema":{"description":"Número","type":"string","example":"ff"}},{"name":"from","in":"query","required":false,"schema":{"description":"Base de origem","type":"integer","default":16,"minimum":2,"maximum":36}}]}},"/v1/text/lolcat":{"get":{"tags":["Texto"],"summary":"Tradutor LOLcat (inglês → lolspeak)","description":"Compatível com popcat: `/v2/lulcat`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto de entrada","type":"string","example":"hello, can i have a cheeseburger please"}}]}},"/v1/text/markdown":{"post":{"tags":["Texto"],"summary":"Markdown → HTML (GFM: tabelas, listas, código)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["markdown"],"properties":{"markdown":{"description":"Markdown","type":"string","example":"# Olá\n\n- **negrito**\n- `código`\n\n| a | b |\n|---|---|\n| 1 | 2 |"},"sanitize":{"description":"Remover HTML bruto/scripts","type":"boolean","default":true}}}}}}}},"/v1/text/password-strength":{"get":{"tags":["Texto"],"summary":"Força de senha (entropia, tempo estimado para quebrar, dicas)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"password","in":"query","required":true,"schema":{"description":"Senha","type":"string","example":"Tr0ub4dor&3"}}]}},"/v1/fun/8ball":{"get":{"tags":["Diversão"],"summary":"Bola 8 mágica","description":"Compatível com popcat: `/v2/8ball`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"question","in":"query","required":false,"schema":{"description":"Sua pergunta (opcional)","type":"string","example":"Vou ficar rico?"}},{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en"],"default":"pt"}}]}},"/v1/fun/joke":{"get":{"tags":["Diversão"],"summary":"Piada aleatória","description":"Compatível com popcat: `/v2/joke`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en"],"default":"pt"}}]}},"/v1/fun/fact":{"get":{"tags":["Diversão"],"summary":"Curiosidade aleatória","description":"Compatível com popcat: `/v2/fact`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en"],"default":"pt"}}]}},"/v1/fun/showerthought":{"get":{"tags":["Diversão"],"summary":"Pensamento de banho","description":"Compatível com popcat: `/v2/showerthoughts`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en"],"default":"pt"}}]}},"/v1/fun/wyr":{"get":{"tags":["Diversão"],"summary":"Você prefere...?","description":"Compatível com popcat: `/v2/wyr`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en"],"default":"pt"}}]}},"/v1/fun/quote":{"get":{"tags":["Diversão"],"summary":"Citação aleatória","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/fun/advice":{"get":{"tags":["Diversão"],"summary":"Conselho aleatório","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/fun/truth-or-dare":{"get":{"tags":["Diversão"],"summary":"Verdade ou desafio","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["random","truth","dare"],"default":"random"}}]}},"/v1/fun/love":{"get":{"tags":["Diversão"],"summary":"Calculadora do amor (determinística)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name1","in":"query","required":true,"schema":{"description":"Pessoa 1","type":"string","example":"Romeu"}},{"name":"name2","in":"query","required":true,"schema":{"description":"Pessoa 2","type":"string","example":"Julieta"}}]}},"/v1/random/coin":{"get":{"tags":["Aleatório"],"summary":"Cara ou coroa","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"times","in":"query","required":false,"schema":{"description":"Lançamentos","type":"integer","default":1,"minimum":1,"maximum":1000}}]}},"/v1/random/dice":{"get":{"tags":["Aleatório"],"summary":"Rola dados (notação 2d6+3)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"roll","in":"query","required":false,"schema":{"description":"Notação NdM±K","type":"string","default":"1d6","example":"3d20+2"}}]}},"/v1/random/number":{"get":{"tags":["Aleatório"],"summary":"Número aleatório num intervalo","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"min","in":"query","required":false,"schema":{"description":"Mínimo","type":"number","default":1}},{"name":"max","in":"query","required":false,"schema":{"description":"Máximo","type":"number","default":100}},{"name":"count","in":"query","required":false,"schema":{"description":"Quantidade","type":"integer","default":1,"minimum":1,"maximum":1000}},{"name":"decimal","in":"query","required":false,"schema":{"description":"Permitir decimais","type":"boolean","default":false}}]}},"/v1/random/choose":{"get":{"tags":["Aleatório"],"summary":"Escolhe item(s) de uma lista / embaralha","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"options","in":"query","required":true,"schema":{"description":"Itens separados por vírgula ou |","type":"string","example":"pizza, sushi, hambúrguer"}},{"name":"count","in":"query","required":false,"schema":{"description":"Quantos escolher","type":"integer","default":1,"minimum":1,"maximum":100}}]}},"/v1/random/uuid":{"get":{"tags":["Aleatório"],"summary":"UUID v4 / v7","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"count","in":"query","required":false,"schema":{"description":"Quantidade","type":"integer","default":1,"minimum":1,"maximum":100}},{"name":"version","in":"query","required":false,"schema":{"description":"Versão","type":"string","enum":["4","7"],"default":"4"}}]}},"/v1/random/password":{"get":{"tags":["Aleatório"],"summary":"Gerador de senhas seguras","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"length","in":"query","required":false,"schema":{"description":"Tamanho","type":"integer","default":16,"minimum":4,"maximum":256}},{"name":"count","in":"query","required":false,"schema":{"description":"Quantidade","type":"integer","default":1,"minimum":1,"maximum":50}},{"name":"symbols","in":"query","required":false,"schema":{"description":"Incluir símbolos","type":"boolean","default":true}},{"name":"numbers","in":"query","required":false,"schema":{"description":"Incluir números","type":"boolean","default":true}},{"name":"uppercase","in":"query","required":false,"schema":{"description":"Incluir maiúsculas","type":"boolean","default":true}}]}},"/v1/random/person":{"get":{"tags":["Aleatório"],"summary":"Pessoa fictícia (dados de teste, CPF válido gerado)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"count","in":"query","required":false,"schema":{"description":"Quantidade","type":"integer","default":1,"minimum":1,"maximum":50}}]}},"/v1/color/info":{"get":{"tags":["Cores"],"summary":"Informações de uma cor (rgb, hsl, cmyk, nome, contraste)","description":"Compatível com popcat: `/v2/color`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"color","in":"query","required":true,"schema":{"description":"Hex, rgb(…) ou nome CSS","type":"string","example":"#ff7a00"}}]}},"/v1/color/random":{"get":{"tags":["Cores"],"summary":"Cor aleatória","description":"Compatível com popcat: `/v2/randomcolor`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/color/palette":{"get":{"tags":["Cores"],"summary":"Paletas: complementar, análoga, tríade, tétrade, tons","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"color","in":"query","required":true,"schema":{"description":"Hex, rgb(…) ou nome CSS","type":"string","example":"#ff7a00"}}]}},"/v1/color/contrast":{"get":{"tags":["Cores"],"summary":"Contraste WCAG entre duas cores","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"fg","in":"query","required":true,"schema":{"description":"Cor do texto","type":"string","example":"#ffffff"}},{"name":"bg","in":"query","required":true,"schema":{"description":"Cor do fundo","type":"string","example":"#ff7a00"}}]}},"/v1/color/mix":{"get":{"tags":["Cores"],"summary":"Mistura duas cores","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"a","in":"query","required":true,"schema":{"description":"Cor A","type":"string","example":"#ff0000"}},{"name":"b","in":"query","required":true,"schema":{"description":"Cor B","type":"string","example":"#0000ff"}},{"name":"weight","in":"query","required":false,"schema":{"description":"Peso de B (0–1)","type":"number","default":0.5,"minimum":0,"maximum":1}},{"name":"steps","in":"query","required":false,"schema":{"description":"Passos do gradiente","type":"integer","default":5,"minimum":2,"maximum":50}}]}},"/v1/color/image":{"get":{"tags":["Cores"],"summary":"Imagem sólida/gradiente de uma cor","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"color","in":"query","required":true,"schema":{"description":"Cor","type":"string","example":"#ff7a00"}},{"name":"color2","in":"query","required":false,"schema":{"description":"Segunda cor (gradiente)","type":"string"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":300,"minimum":1,"maximum":2000}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura","type":"integer","default":300,"minimum":1,"maximum":2000}},{"name":"label","in":"query","required":false,"schema":{"description":"Escrever o hex","type":"boolean","default":false}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/lookup/github":{"get":{"tags":["Consultas"],"summary":"Perfil de usuário do GitHub","description":"Compatível com popcat: `/v2/github/:username`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"username","in":"query","required":true,"schema":{"description":"Usuário","type":"string","example":"torvalds"}}]}},"/v1/lookup/github-repo":{"get":{"tags":["Consultas"],"summary":"Repositório do GitHub","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"repo","in":"query","required":true,"schema":{"description":"owner/nome","type":"string","example":"honojs/hono"}}]}},"/v1/lookup/npm":{"get":{"tags":["Consultas"],"summary":"Pacote do npm","description":"Compatível com popcat: `/v2/npm`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Nome do pacote","type":"string","example":"hono"}}]}},"/v1/lookup/pypi":{"get":{"tags":["Consultas"],"summary":"Pacote do PyPI","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Nome do pacote","type":"string","example":"scrapling"}}]}},"/v1/lookup/weather":{"get":{"tags":["Consultas"],"summary":"Clima atual + previsão de 7 dias (Open-Meteo)","description":"Compatível com popcat: `/v2/weather`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Cidade","type":"string","example":"São Paulo"}},{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma dos nomes","type":"string","enum":["pt","en","es"],"default":"pt"}}]}},"/v1/lookup/country":{"get":{"tags":["Consultas"],"summary":"Informações de um país","description":"Compatível com popcat: `/v2/country`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Nome ou código do país","type":"string","example":"Brasil"}}]}},"/v1/lookup/itunes":{"get":{"tags":["Consultas"],"summary":"Busca música no iTunes","description":"Compatível com popcat: `/v2/itunes`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Busca","type":"string","example":"Garota de Ipanema"}},{"name":"entity","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["song","album","musicArtist","movie","podcast","ebook","software"],"default":"song"}},{"name":"country","in":"query","required":false,"schema":{"description":"Loja (país)","type":"string","default":"BR"}}]}},"/v1/lookup/lyrics":{"get":{"tags":["Consultas"],"summary":"Letra de música (LRCLIB, inclui letra sincronizada)","description":"Compatível com popcat: `/v2/lyrics`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"song","in":"query","required":true,"schema":{"description":"Música (e artista)","type":"string","example":"Aquarela Toquinho"}}]}},"/v1/lookup/steam":{"get":{"tags":["Consultas"],"summary":"Jogo da Steam","description":"Compatível com popcat: `/v2/steam`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Nome do jogo","type":"string","example":"Hollow Knight"}},{"name":"cc","in":"query","required":false,"schema":{"description":"País (preço)","type":"string","default":"br"}}]}},"/v1/lookup/movie":{"get":{"tags":["Consultas"],"summary":"Filme/série (OMDb se configurado, senão iTunes/TVmaze)","description":"Compatível com popcat: `/v2/imdb`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Título","type":"string","example":"Cidade de Deus"}}]}},"/v1/lookup/tvshow":{"get":{"tags":["Consultas"],"summary":"Série de TV (TVmaze) com episódios","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Série","type":"string","example":"Breaking Bad"}}]}},"/v1/lookup/anime":{"get":{"tags":["Consultas"],"summary":"Anime (Jikan/MyAnimeList)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Título","type":"string","example":"Naruto"}},{"name":"type","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["anime","manga"],"default":"anime"}}]}},"/v1/lookup/subreddit":{"get":{"tags":["Consultas"],"summary":"Informações de um subreddit","description":"Compatível com popcat: `/v2/subreddit/:subreddit`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"subreddit","in":"query","required":true,"schema":{"description":"Nome","type":"string","example":"brasil"}}]}},"/v1/random/meme":{"get":{"tags":["Aleatório"],"summary":"Meme aleatório do Reddit","description":"Compatível com popcat: `/v2/meme`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"subreddit","in":"query","required":false,"schema":{"description":"Subreddit (padrão: memes)","type":"string","example":"eu_nvr"}}]}},"/v1/random/car":{"get":{"tags":["Aleatório"],"summary":"Foto aleatória de carro","description":"Compatível com popcat: `/v2/car`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/random/animal":{"get":{"tags":["Aleatório"],"summary":"Foto aleatória de animal (cachorro, gato, raposa, pato...)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"description":"Animal","type":"string","enum":["random","dog","cat","fox","duck","shiba"],"default":"random"}}]}},"/v1/lookup/periodic-table":{"get":{"tags":["Consultas"],"summary":"Elemento da tabela periódica","description":"Compatível com popcat: `/v2/periodic-table`\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"element","in":"query","required":false,"schema":{"description":"Símbolo, nome ou número atômico (vazio = aleatório)","type":"string","example":"Fe"}}]}},"/v1/lookup/dictionary":{"get":{"tags":["Consultas"],"summary":"Dicionário (en: dictionaryapi.dev; pt e outros: Wiktionary)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"word","in":"query","required":true,"schema":{"description":"Palavra","type":"string","example":"saudade"}},{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma (pt, en, es...)","type":"string","default":"pt"}}]}},"/v1/lookup/urban":{"get":{"tags":["Consultas"],"summary":"Urban Dictionary","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"term","in":"query","required":true,"schema":{"description":"Termo","type":"string","example":"yeet"}}]}},"/v1/lookup/wikipedia":{"get":{"tags":["Consultas"],"summary":"Resumo da Wikipédia","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Artigo","type":"string","example":"Santos Dumont"}},{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma da Wikipédia","type":"string","default":"pt"}}]}},"/v1/lookup/currency":{"get":{"tags":["Consultas"],"summary":"Conversão de moedas (BCE via Frankfurter)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"from","in":"query","required":false,"schema":{"description":"Moeda de origem","type":"string","default":"USD"}},{"name":"to","in":"query","required":false,"schema":{"description":"Destino(s), separadas por vírgula","type":"string","default":"BRL"}},{"name":"amount","in":"query","required":false,"schema":{"description":"Valor","type":"number","default":1,"minimum":0}}]}},"/v1/lookup/crypto":{"get":{"tags":["Consultas"],"summary":"Cotação de criptomoedas (CoinGecko)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"coins","in":"query","required":false,"schema":{"description":"IDs CoinGecko separados por vírgula","type":"string","default":"bitcoin,ethereum"}},{"name":"vs","in":"query","required":false,"schema":{"description":"Moedas fiat","type":"string","default":"brl,usd"}}]}},"/v1/lookup/pokemon":{"get":{"tags":["Consultas"],"summary":"Pokédex","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":true,"schema":{"description":"Nome ou número","type":"string","example":"pikachu"}}]}},"/v1/lookup/book":{"get":{"tags":["Consultas"],"summary":"Livros (Open Library)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":true,"schema":{"description":"Título, autor ou ISBN","type":"string","example":"Dom Casmurro"}}]}},"/v1/lookup/recipe":{"get":{"tags":["Consultas"],"summary":"Receitas (TheMealDB)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Prato (vazio = aleatório)","type":"string","example":"lasagna"}}]}},"/v1/lookup/cocktail":{"get":{"tags":["Consultas"],"summary":"Drinks (TheCocktailDB)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"q","in":"query","required":false,"schema":{"description":"Drink (vazio = aleatório)","type":"string","example":"caipirinha"}}]}},"/v1/lookup/xkcd":{"get":{"tags":["Consultas"],"summary":"Tirinha xkcd (número ou aleatória)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"num","in":"query","required":false,"schema":{"description":"Número (vazio = aleatória)","type":"integer","minimum":1}}]}},"/v1/lookup/trivia":{"get":{"tags":["Consultas"],"summary":"Pergunta de quiz (Open Trivia DB)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"difficulty","in":"query","required":false,"schema":{"description":"Dificuldade","type":"string","enum":["any","easy","medium","hard"],"default":"any"}}]}},"/v1/lookup/holidays":{"get":{"tags":["Consultas"],"summary":"Feriados nacionais de qualquer país (Nager.Date)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"country","in":"query","required":false,"schema":{"description":"Código do país","type":"string","default":"BR"}},{"name":"year","in":"query","required":false,"schema":{"description":"Ano (padrão: atual)","type":"integer","minimum":1900,"maximum":2100}}]}},"/v1/lookup/earthquakes":{"get":{"tags":["Consultas"],"summary":"Terremotos recentes (USGS)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"period","in":"query","required":false,"schema":{"description":"Período","type":"string","enum":["hour","day","week"],"default":"day"}},{"name":"min","in":"query","required":false,"schema":{"description":"Magnitude mínima","type":"string","enum":["significant","4.5","2.5","1.0","all"],"default":"4.5"}}]}},"/v1/net/ip":{"get":{"tags":["Rede"],"summary":"Geolocalização de IP (vazio = seu IP)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"ip","in":"query","required":false,"schema":{"description":"IPv4/IPv6 (opcional)","type":"string","example":"1.1.1.1"}}]}},"/v1/net/dns":{"get":{"tags":["Rede"],"summary":"Consulta DNS (DoH 1.1.1.1)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":true,"schema":{"description":"Domínio","type":"string","example":"cloudflare.com"}},{"name":"type","in":"query","required":false,"schema":{"description":"Tipo de registro","type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS","SOA","CAA","SRV","PTR","HTTPS","ANY"],"default":"A"}}]}},"/v1/net/whois":{"get":{"tags":["Rede"],"summary":"WHOIS/RDAP de domínio","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"domain","in":"query","required":true,"schema":{"description":"Domínio","type":"string","example":"github.com"}}]}},"/v1/net/email":{"get":{"tags":["Rede"],"summary":"Valida e-mail: sintaxe, MX do domínio, descartável, erro de digitação","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"email","in":"query","required":true,"schema":{"description":"E-mail","type":"string","example":"fulano@gmial.com"}}]}},"/v1/br/cep":{"get":{"tags":["Brasil"],"summary":"Endereço pelo CEP (BrasilAPI v2, com coordenadas)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"cep","in":"query","required":true,"schema":{"description":"CEP","type":"string","example":"01310-100"}}]}},"/v1/br/cnpj":{"get":{"tags":["Brasil"],"summary":"Dados de empresa pelo CNPJ (Receita via BrasilAPI)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"cnpj","in":"query","required":true,"schema":{"description":"CNPJ","type":"string","example":"00.000.000/0001-91"}}]}},"/v1/br/ddd":{"get":{"tags":["Brasil"],"summary":"Estado e cidades de um DDD","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"ddd","in":"query","required":true,"schema":{"description":"DDD","type":"string","example":"11"}}]}},"/v1/br/banks":{"get":{"tags":["Brasil"],"summary":"Bancos brasileiros (código COMPE/ISPB)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"code","in":"query","required":false,"schema":{"description":"Código do banco (vazio = todos)","type":"string","example":"260"}}]}},"/v1/br/holidays":{"get":{"tags":["Brasil"],"summary":"Feriados nacionais do Brasil","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"year","in":"query","required":false,"schema":{"description":"Ano (padrão: atual)","type":"integer","minimum":1900,"maximum":2199}}]}},"/v1/br/rates":{"get":{"tags":["Brasil"],"summary":"Taxas oficiais (Selic, CDI, IPCA)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":false,"schema":{"description":"Taxa","type":"string","enum":["all","selic","cdi","ipca"],"default":"all"}}]}},"/v1/br/fipe":{"get":{"tags":["Brasil"],"summary":"Preço FIPE de veículo pelo código FIPE","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"code","in":"query","required":true,"schema":{"description":"Código FIPE","type":"string","example":"001004-9"}}]}},"/v1/br/isbn":{"get":{"tags":["Brasil"],"summary":"Livro pelo ISBN (BrasilAPI)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"isbn","in":"query","required":true,"schema":{"description":"ISBN","type":"string","example":"9788545702870"}}]}},"/v1/br/domain":{"get":{"tags":["Brasil"],"summary":"Disponibilidade de domínio .br (Registro.br)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"domain","in":"query","required":true,"schema":{"description":"Domínio","type":"string","example":"google.com.br"}}]}},"/v1/br/ibge/cities":{"get":{"tags":["Brasil"],"summary":"Municípios de uma UF (IBGE)","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"uf","in":"query","required":true,"schema":{"description":"UF","type":"string","example":"SC"}}]}},"/v1/br/validate":{"get":{"tags":["Brasil"],"summary":"Valida CPF, CNPJ, CEP, telefone, placa, PIS, título de eleitor","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"type","in":"query","required":true,"schema":{"description":"Tipo","type":"string","enum":["cpf","cnpj","cep","phone","plate","pis"],"example":"cpf"}},{"name":"value","in":"query","required":true,"schema":{"description":"Valor","type":"string","example":"529.982.247-25"}}]}},"/v1/br/generate":{"get":{"tags":["Brasil"],"summary":"Gera CPF/CNPJ válidos para TESTES","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["cpf","cnpj"],"default":"cpf"}},{"name":"count","in":"query","required":false,"schema":{"description":"Quantidade","type":"integer","default":1,"minimum":1,"maximum":100}},{"name":"formatted","in":"query","required":false,"schema":{"description":"Com pontuação","type":"boolean","default":true}}]}},"/v1/br/pix":{"get":{"tags":["Brasil"],"summary":"Gera PIX copia-e-cola (BR Code) + link para QR Code","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"key","in":"query","required":true,"schema":{"description":"Chave PIX (CPF, e-mail, telefone +55..., aleatória)","type":"string","example":"contato@exemplo.com"}},{"name":"name","in":"query","required":true,"schema":{"description":"Nome do recebedor","type":"string","example":"Maria Silva"}},{"name":"city","in":"query","required":true,"schema":{"description":"Cidade","type":"string","example":"São Paulo"}},{"name":"amount","in":"query","required":false,"schema":{"description":"Valor (opcional)","type":"number","example":10.5,"minimum":0.01,"maximum":1000000000}},{"name":"txid","in":"query","required":false,"schema":{"description":"Identificador (opcional)","type":"string"}},{"name":"description","in":"query","required":false,"schema":{"description":"Mensagem (opcional)","type":"string"}}]}},"/v1/web/meta":{"get":{"tags":["Web"],"summary":"Metadados de página: título, descrição, Open Graph, Twitter, ícones","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}}]}},"/v1/web/scrape":{"get":{"tags":["Web"],"summary":"Extrai dados por seletores CSS (HTMLRewriter, sem JS)","description":"Passe `selector` (um seletor) ou `selectors` como JSON {\"nome\": \"seletor\"}. Para páginas que dependem de JavaScript use /v1/web/render ou /v1/web/scrapling.\n\nRequer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"selector","in":"query","required":false,"schema":{"description":"Seletor CSS único","type":"string","example":"h1, p"}},{"name":"selectors","in":"query","required":false,"schema":{"description":"JSON {nome: seletor}","type":"string","example":"{\"titulos\":\"h1\",\"links\":\"a[href]\"}"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Máximo por seletor","type":"integer","default":100,"minimum":1,"maximum":1000}}]}},"/v1/web/links":{"get":{"tags":["Web"],"summary":"Lista todos os links de uma página","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"internal","in":"query","required":false,"schema":{"description":"Só links do mesmo domínio","type":"boolean","default":false}}]}},"/v1/web/text":{"get":{"tags":["Web"],"summary":"Texto legível / Markdown de uma página","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"max","in":"query","required":false,"schema":{"description":"Máximo de caracteres","type":"integer","default":20000,"minimum":100,"maximum":200000}}]}},"/v1/web/is-url":{"get":{"tags":["Web"],"summary":"Verifica se uma URL é válida e responde","description":"Compatível com popcat: `/v2/is-url`","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","example":"https://example.com"}}]}},"/v1/web/status":{"get":{"tags":["Web"],"summary":"Status, tempo de resposta e cadeia de redirecionamentos","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}}]}},"/v1/web/headers":{"get":{"tags":["Web"],"summary":"Cabeçalhos HTTP + análise de segurança","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}}]}},"/v1/web/robots":{"get":{"tags":["Web"],"summary":"Lê robots.txt e sitemaps","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}}]}},"/v1/web/feed":{"get":{"tags":["Web"],"summary":"Converte feed RSS/Atom em JSON","description":"Requer: network","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://g1.globo.com/rss/g1/"}},{"name":"limit","in":"query","required":false,"schema":{"description":"Itens","type":"integer","default":20,"minimum":1,"maximum":200}}]}},"/v1/web/favicon":{"get":{"tags":["Web"],"summary":"Favicon de um domínio (redireciona para a imagem)","description":"","responses":{"200":{"description":"OK","content":{"text/plain":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"domain","in":"query","required":true,"schema":{"description":"Domínio","type":"string","example":"github.com"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho","type":"integer","default":64,"minimum":16,"maximum":256}}]}},"/v1/web/screenshot":{"get":{"tags":["Web"],"summary":"Screenshot de site (Chrome headless)","description":"Compatível com popcat: `/v2/screenshot`\n\nRequer: browser","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":1280,"minimum":320,"maximum":1920}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura","type":"integer","default":800,"minimum":240,"maximum":1440}},{"name":"full_page","in":"query","required":false,"schema":{"description":"Página inteira","type":"boolean","default":false}},{"name":"type","in":"query","required":false,"schema":{"description":"Formato","type":"string","enum":["png","jpeg","webp"],"default":"png"}}]}},"/v1/web/pdf":{"get":{"tags":["Web"],"summary":"Gera PDF de uma página (Chrome headless)","description":"Requer: browser","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"landscape","in":"query","required":false,"schema":{"description":"Paisagem","type":"boolean","default":false}}]}},"/v1/web/render":{"get":{"tags":["Web"],"summary":"HTML/Markdown após executar JavaScript (Chrome headless)","description":"Requer: browser","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","format":"uri","example":"https://example.com"}},{"name":"output","in":"query","required":false,"schema":{"description":"Saída","type":"string","enum":["markdown","html"],"default":"markdown"}}]}},"/v1/web/scrapling":{"post":{"tags":["Web"],"summary":"Scraping avançado (CSS/XPath, seletores adaptativos)","description":"Processado pelo nosso serviço de scraping. O primeiro acesso após um tempo parado pode levar até 1 minuto.\n\nRequer: scrapling","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"description":"URL","type":"string","format":"uri","example":"https://example.com"},"selectors":{"description":"JSON {nome: seletor CSS ou XPath}","type":"string","example":"{\"titulo\":\"h1::text\",\"links\":\"a::attr(href)\"}"},"mode":{"description":"static = HTTP rápido (para JS use /v1/web/render)","type":"string","enum":["static"],"default":"static"},"adaptive":{"description":"Seletores adaptativos (re-encontram elementos após mudanças no site)","type":"boolean","default":false}}}}}}}},"/v1/util/time":{"get":{"tags":["Utilidades"],"summary":"Hora atual em qualquer fuso","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"tz","in":"query","required":false,"schema":{"description":"Fuso IANA","type":"string","default":"America/Sao_Paulo","example":"Asia/Tokyo"}}]}},"/v1/util/timestamp":{"get":{"tags":["Utilidades"],"summary":"Converte Unix timestamp ↔ data ISO","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"value","in":"query","required":true,"schema":{"description":"Unix (s ou ms) ou data","type":"string","example":"1700000000"}}]}},"/v1/util/datediff":{"get":{"tags":["Utilidades"],"summary":"Diferença entre datas / idade / contagem regressiva","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"from","in":"query","required":true,"schema":{"description":"Data inicial","type":"string","example":"1990-05-20"}},{"name":"to","in":"query","required":false,"schema":{"description":"Data final (padrão: agora)","type":"string"}}]}},"/v1/util/convert":{"get":{"tags":["Utilidades"],"summary":"Conversor de unidades (comprimento, massa, temperatura, dados...)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"value","in":"query","required":true,"schema":{"description":"Valor","type":"number","example":10}},{"name":"from","in":"query","required":true,"schema":{"description":"Unidade de origem","type":"string","example":"km"}},{"name":"to","in":"query","required":true,"schema":{"description":"Unidade destino","type":"string","example":"mi"}}]}},"/v1/util/calc":{"get":{"tags":["Utilidades"],"summary":"Calculadora (+ − × ÷ ^ %, sqrt, sin, log, pi, fatorial)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"expr","in":"query","required":true,"schema":{"description":"Expressão","type":"string","example":"2^10 + sqrt(16) * (3 - 1)"}}]}},"/v1/util/url-parse":{"get":{"tags":["Utilidades"],"summary":"Decompõe uma URL em partes","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"URL","type":"string","example":"https://user@exemplo.com:8080/a/b?x=1&y=2#topo"}}]}},"/v1/util/useragent":{"get":{"tags":["Utilidades"],"summary":"Analisa um User-Agent (vazio = o seu)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"ua","in":"query","required":false,"schema":{"description":"User-Agent","type":"string"}}]}},"/v1/util/bmi":{"get":{"tags":["Utilidades"],"summary":"IMC (índice de massa corporal)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"weight","in":"query","required":true,"schema":{"description":"Peso (kg)","type":"number","example":70,"minimum":1,"maximum":500}},{"name":"height","in":"query","required":true,"schema":{"description":"Altura (m ou cm)","type":"number","example":1.75,"minimum":0.5,"maximum":300}}]}},"/v1/status":{"get":{"tags":["Utilidades"],"summary":"Status da SELVAPI e dos serviços parceiros","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/stats":{"get":{"tags":["Utilidades"],"summary":"Uso da API: endpoints mais chamados e total por dia","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"days","in":"query","required":false,"schema":{"description":"Período em dias","type":"integer","default":7,"minimum":1,"maximum":90}}]}},"/v1/image/meme":{"get":{"tags":["Imagens: memes"],"summary":"Meme clássico: texto em cima e embaixo","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"top":{"description":"Texto","type":"string","example":"QUANDO O DEPLOY"},"bottom":{"description":"Texto","type":"string","example":"FUNCIONA DE PRIMEIRA"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/compare":{"get":{"tags":["Imagens: memes"],"summary":"Dois painéis: rejeita em cima, aprova embaixo (formato 'drake')","description":"Compatível com popcat: `/v2/drake`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text1","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Escrever testes"}},{"name":"text2","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Testar em produção"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/fancy":{"get":{"tags":["Imagens: memes"],"summary":"Dois painéis: normal vs. sofisticado (formato 'pooh')","description":"Compatível com popcat: `/v2/pooh`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text1","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Café"}},{"name":"text2","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Grão especial extraído a 93°C"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/happysad":{"get":{"tags":["Imagens: memes"],"summary":"Dois painéis: feliz em cima, triste embaixo","description":"Compatível com popcat: `/v2/happysad`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text1","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Sexta-feira"}},{"name":"text2","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Segunda-feira"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/tweet":{"get":{"tags":["Imagens: memes"],"summary":"Post estilo rede social (nome, @, avatar, texto)","description":"Substitui o /biden da popcat por um post genérico — não imitamos pessoas reais.\n\nCompatível com popcat: `/v2/biden`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["text"],"properties":{"text":{"description":"Texto","type":"string","example":"Acabei de subir 150 endpoints no free tier da Cloudflare 🚀"},"name":{"description":"Nome","type":"string","default":"SELVAPI"},"username":{"description":"@usuário","type":"string","default":"selvapi"},"avatar":{"description":"URL do avatar (opcional)","type":"string","format":"binary"},"likes":{"description":"Curtidas","type":"integer","default":1337,"minimum":0},"theme":{"description":"Tema","type":"string","enum":["dark","light"],"default":"dark"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/wisdom":{"get":{"tags":["Imagens: memes"],"summary":"Citação de mestre sábio (formato 'oogway')","description":"Compatível com popcat: `/v2/oogway`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Ontem é história, amanhã é um mistério, hoje é uma dádiva."}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/surprised":{"get":{"tags":["Imagens: memes"],"summary":"Rosto surpreso com legenda (formato 'pikachu')","description":"Compatível com popcat: `/v2/pikachu`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Eu: não faço backup. Meu HD: queima. Eu:"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/alert":{"get":{"tags":["Imagens: memes"],"summary":"Alerta estilo celular","description":"Compatível com popcat: `/v2/alert`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Sua bateria social está em 1%"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/caution":{"get":{"tags":["Imagens: memes"],"summary":"Placa de cuidado","description":"Compatível com popcat: `/v2/caution`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Desenvolvedor sem café"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/facts":{"get":{"tags":["Imagens: memes"],"summary":"Livro de fatos ('facts')","description":"Compatível com popcat: `/v2/facts`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Tabs são melhores que espaços"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/unforgivable":{"get":{"tags":["Imagens: memes"],"summary":"Lista de coisas imperdoáveis","description":"Compatível com popcat: `/v2/unforgivable`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Colocar abacaxi na pizza"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/sadcat":{"get":{"tags":["Imagens: memes"],"summary":"Gato triste com legenda","description":"Compatível com popcat: `/v2/sadcat`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Quando o build falha na sexta às 18h"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/redbox":{"get":{"tags":["Imagens: memes"],"summary":"Logo em caixa vermelha estilo streetwear","description":"Compatível com popcat: `/v2/supreme`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"SELVAPI"}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor da caixa","type":"string","default":"#e5242b"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/achievement":{"get":{"tags":["Imagens: memes"],"summary":"Notificação de conquista desbloqueada","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["text"],"properties":{"text":{"description":"Texto","type":"string","example":"Subiu para produção sem quebrar nada"},"title":{"description":"Texto","type":"string","example":"Conquista desbloqueada!"},"icon":{"description":"Ícone (URL, opcional)","type":"string","format":"binary"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/demotivational":{"get":{"tags":["Imagens: memes"],"summary":"Pôster desmotivacional","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","title","text"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"title":{"description":"Texto","type":"string","example":"PRODUTIVIDADE"},"text":{"description":"Texto","type":"string","example":"Amanhã eu começo, com certeza."},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/couldread":{"get":{"tags":["Imagens: memes"],"summary":"\"Se eu soubesse ler, ficaria bravo\" com imagem","description":"Compatível com popcat: `/v2/couldread`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","text"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"Seu código não tem testes"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/opinion":{"get":{"tags":["Imagens: memes"],"summary":"Pessoa com balão de opinião","description":"Compatível com popcat: `/v2/opinion`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","text"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"Na minha opinião, segunda-feira deveria ser feriado"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/quote":{"get":{"tags":["Imagens: memes"],"summary":"Card de citação com avatar e nome","description":"Compatível com popcat: `/v2/quote`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","text","name"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"A melhor maneira de prever o futuro é criá-lo."},"name":{"description":"Texto","type":"string","example":"Peter Drucker"},"font":{"description":"Fonte","type":"string","enum":["sans","serif"],"default":"serif"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/chat":{"get":{"tags":["Imagens: memes"],"summary":"Mensagem estilo chat (formato 'discord message')","description":"Compatível com popcat: `/v2/discord-message`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","text"],"properties":{"image":{"description":"Avatar (URL)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"alguém sabe por que funciona na minha máquina?"},"username":{"description":"Nome","type":"string","default":"dev"},"color":{"description":"Cor do nome","type":"string","default":"#ffffff"},"timestamp":{"description":"Horário exibido","type":"string"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/jail":{"get":{"tags":["Imagens: memes"],"summary":"Atrás das grades","description":"Compatível com popcat: `/v2/jail`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/wanted":{"get":{"tags":["Imagens: memes"],"summary":"Cartaz de procurado","description":"Compatível com popcat: `/v2/wanted`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"reward":{"description":"Recompensa","type":"string","default":"R$ 1.000.000"},"name":{"description":"Nome (opcional)","type":"string"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/ad":{"get":{"tags":["Imagens: memes"],"summary":"Imagem como anúncio de TV","description":"Compatível com popcat: `/v2/ad`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"COMPRE AGORA!"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/clown":{"get":{"tags":["Imagens: memes"],"summary":"Transforma o avatar em palhaço","description":"Compatível com popcat: `/v2/clown`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/drip":{"get":{"tags":["Imagens: memes"],"summary":"Avatar com estilo (óculos + corrente de ouro)","description":"Compatível com popcat: `/v2/drip`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/jokeoverhead":{"get":{"tags":["Imagens: memes"],"summary":"A piada passou por cima da cabeça","description":"Compatível com popcat: `/v2/jokeoverhead`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"a piada"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/candy":{"get":{"tags":["Imagens: memes"],"summary":"Avatar como confeito de chocolate (formato 'mnm')","description":"Compatível com popcat: `/v2/mnm`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"color":{"description":"Cor do confeito","type":"string","default":"#1d6fd8"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/reveal":{"get":{"tags":["Imagens: memes"],"summary":"Revelação: \"na verdade era...\" (formato 'uncover')","description":"Compatível com popcat: `/v2/uncover`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"O tempo todo era ele"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/nokia":{"get":{"tags":["Imagens: memes"],"summary":"Imagem na tela de um celular antigo","description":"Compatível com popcat: `/v2/nokia`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/ship":{"get":{"tags":["Imagens: memes"],"summary":"Ship de dois avatares com porcentagem","description":"Compatível com popcat: `/v2/ship`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["user1","user2"],"properties":{"user1":{"description":"Avatar 1 (URL)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"user2":{"description":"Avatar 2 (URL)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"name1":{"description":"Nome 1 (usado na %)","type":"string"},"name2":{"description":"Nome 2","type":"string"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/versus":{"get":{"tags":["Imagens: memes"],"summary":"Quem venceria? (duas imagens)","description":"Compatível com popcat: `/v2/whowouldwin`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image1","image2"],"properties":{"image1":{"description":"Imagem 1","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"image2":{"description":"Imagem 2","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"QUEM VENCERIA?"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/captcha":{"get":{"tags":["Imagens: memes"],"summary":"Captcha \"selecione todas as imagens com...\"","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","text"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","example":"pessoas incríveis"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/welcome":{"get":{"tags":["Imagens: memes"],"summary":"Card de boas-vindas (Discord/comunidades)","description":"Compatível com popcat: `/v2/welcomecard`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["avatar","text1"],"properties":{"background":{"description":"Imagem de fundo (URL, opcional)","type":"string","format":"binary"},"avatar":{"description":"Avatar (URL)","type":"string","format":"binary","example":"https://picsum.photos/id/64/256/256"},"text1":{"description":"Texto","type":"string","example":"Ana Silva"},"text2":{"description":"Texto","type":"string","example":"Bem-vinda ao servidor!"},"text3":{"description":"Texto","type":"string","example":"Membro #1.024"},"color":{"description":"Cor de destaque","type":"string","default":"#7c3aed"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/image/certificate":{"get":{"tags":["Imagens: memes"],"summary":"Certificado personalizado","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Maria Souza"}},{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"pela conclusão do curso de APIs na borda"}},{"name":"title","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":"Certificado de Conclusão"}},{"name":"signature","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":"Equipe SELVAPI"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/gun":{"get":{"tags":["Imagens: memes"],"summary":"Mão com pistola de brinquedo apontada + legenda","description":"Compatível com popcat: `/v2/gun`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"text":{"description":"Texto","type":"string","default":"ME DÁ O WI-FI","example":"ME DÁ O WI-FI"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/greyscale":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: greyscale","description":"Compatível com popcat: `/v2/greyscale`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/invert":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: invert","description":"Compatível com popcat: `/v2/invert`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/blur":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: blur","description":"Compatível com popcat: `/v2/blur`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"amount":{"description":"Intensidade","type":"number","minimum":0,"maximum":360},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/sepia":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: sepia","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/brightness":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: brightness","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"amount":{"description":"Intensidade","type":"number","minimum":0,"maximum":360},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/contrast":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: contrast","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"amount":{"description":"Intensidade","type":"number","minimum":0,"maximum":360},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/saturate":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: saturate","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"amount":{"description":"Intensidade","type":"number","minimum":0,"maximum":360},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/hue":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: hue","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"amount":{"description":"Graus de rotação","type":"number","minimum":0,"maximum":360},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/threshold":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: threshold","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/posterize":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: posterize","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/communism":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: communism","description":"Compatível com popcat: `/v2/communism`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/colorify":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: colorify","description":"Compatível com popcat: `/v2/colorify`","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"color":{"description":"Cor","type":"string","default":"#ff0000"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/duotone":{"get":{"tags":["Imagens: filtros"],"summary":"Filtro: duotone","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"color":{"description":"Cor","type":"string","default":"#1e1b4b"},"color2":{"description":"Cor clara","type":"string","default":"#f472b6"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/circle":{"get":{"tags":["Imagens: filtros"],"summary":"Recorta a imagem em círculo (avatar)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"border":{"description":"Cor da borda (opcional)","type":"string"},"size":{"description":"Tamanho","type":"integer","default":512,"minimum":32,"maximum":1024},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/filter/frame":{"get":{"tags":["Imagens: filtros"],"summary":"Moldura / borda com cantos arredondados e sombra","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"color":{"description":"Cor da moldura","type":"string","default":"#ffffff"},"padding":{"description":"Espessura","type":"integer","default":30,"minimum":0,"maximum":200},"radius":{"description":"Raio","type":"integer","default":24,"minimum":0,"maximum":300},"background":{"description":"Fundo","type":"string","default":"#e5e7eb"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/raster/pixelate":{"get":{"tags":["Imagens: filtros"],"summary":"Pixeliza (mosaico) (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"size":{"description":"Tamanho do bloco","type":"integer","default":12,"minimum":2,"maximum":100},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/resize":{"get":{"tags":["Imagens: filtros"],"summary":"Redimensiona (Lanczos3) (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"width":{"description":"Largura","type":"integer","minimum":1,"maximum":4096},"height":{"description":"Altura","type":"integer","minimum":1,"maximum":4096},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/rotate":{"get":{"tags":["Imagens: filtros"],"summary":"Rotaciona (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"angle":{"description":"Graus","type":"number","default":90,"minimum":-360,"maximum":360},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/fliph":{"get":{"tags":["Imagens: filtros"],"summary":"Espelha na horizontal (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/flipv":{"get":{"tags":["Imagens: filtros"],"summary":"Espelha na vertical (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/sharpen":{"get":{"tags":["Imagens: filtros"],"summary":"Nitidez (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/emboss":{"get":{"tags":["Imagens: filtros"],"summary":"Relevo (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/edges":{"get":{"tags":["Imagens: filtros"],"summary":"Detecção de bordas (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/oil":{"get":{"tags":["Imagens: filtros"],"summary":"Pintura a óleo (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"radius":{"description":"Raio","type":"integer","default":4,"minimum":1,"maximum":10},"intensity":{"description":"Intensidade","type":"number","default":55,"minimum":1,"maximum":100},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/solarize":{"get":{"tags":["Imagens: filtros"],"summary":"Solarizar (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/dither":{"get":{"tags":["Imagens: filtros"],"summary":"Dithering (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"depth":{"description":"Profundidade","type":"integer","default":1,"minimum":1,"maximum":8},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/raster/convert":{"get":{"tags":["Imagens: filtros"],"summary":"Converte formato / comprime (png, jpeg, webp) (raster, Photon)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"quality":{"description":"Qualidade JPEG","type":"integer","default":85,"minimum":1,"maximum":100},"output":{"description":"Formato de saída","type":"string","enum":["png","jpeg","webp"],"default":"png"}}}}}}}},"/v1/image/pixel-art":{"get":{"tags":["Imagens: geradores"],"summary":"Converte foto em pixel art (paletas PICO-8, Game Boy, NES...)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"grid":{"description":"Resolução em pixels (largura)","type":"integer","default":64,"minimum":8,"maximum":256},"palette":{"description":"Paleta","type":"string","enum":["auto","none","pico8","gameboy","nes","cga","grayscale","sweetie16","endesga32"],"default":"pico8"},"colors":{"description":"Cores (paleta auto)","type":"integer","default":16,"minimum":2,"maximum":64},"scale":{"description":"Ampliação","type":"integer","default":8,"minimum":1,"maximum":32},"output":{"description":"Formato","type":"string","enum":["png","webp"],"default":"png"}}}}}}}},"/v1/image/colors":{"post":{"tags":["Imagens: geradores"],"summary":"Cores dominantes de uma imagem (paleta)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"URL da imagem (ou upload via POST multipart)","type":"string","format":"binary","example":"https://picsum.photos/id/237/400/400"},"count":{"description":"Quantidade de cores","type":"integer","default":6,"minimum":1,"maximum":16}}}}}}}},"/v1/image/placeholder":{"get":{"tags":["Imagens: geradores"],"summary":"Imagem placeholder (300x200, cores, texto)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":600,"minimum":1,"maximum":4000}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura","type":"integer","default":400,"minimum":1,"maximum":4000}},{"name":"bg","in":"query","required":false,"schema":{"description":"Fundo","type":"string","default":"#cbd5e1"}},{"name":"fg","in":"query","required":false,"schema":{"description":"Texto","type":"string","default":"#475569"}},{"name":"text","in":"query","required":false,"schema":{"description":"Texto (padrão: dimensões)","type":"string"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/avatar":{"get":{"tags":["Imagens: geradores"],"summary":"Avatar com iniciais (cor derivada do nome)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":true,"schema":{"description":"Nome","type":"string","example":"Ana Clara"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho","type":"integer","default":256,"minimum":16,"maximum":1024}},{"name":"rounded","in":"query","required":false,"schema":{"description":"Circular","type":"boolean","default":true}},{"name":"bg","in":"query","required":false,"schema":{"description":"Fundo (padrão: automático)","type":"string"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/identicon":{"get":{"tags":["Imagens: geradores"],"summary":"Identicon simétrico (estilo GitHub)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"seed","in":"query","required":true,"schema":{"description":"Texto/semente","type":"string","example":"pablo@example.com"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho","type":"integer","default":256,"minimum":16,"maximum":1024}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/gradient":{"get":{"tags":["Imagens: geradores"],"summary":"Gradiente bonito (aleatório ou com cores)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"colors","in":"query","required":false,"schema":{"description":"Cores separadas por vírgula (vazio = aleatório)","type":"string","example":"#ff7a00,#ff0080,#7928ca"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":1200,"minimum":1,"maximum":4000}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura","type":"integer","default":630,"minimum":1,"maximum":4000}},{"name":"angle","in":"query","required":false,"schema":{"description":"Ângulo","type":"integer","default":135,"minimum":0,"maximum":360}},{"name":"type","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["linear","radial","mesh"],"default":"linear"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/og":{"get":{"tags":["Imagens: geradores"],"summary":"Imagem Open Graph (1200×630) para links/blog","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"title","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Como montei 150 endpoints grátis"}},{"name":"subtitle","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":"Grátis, sem chave e com CORS aberto"}},{"name":"site","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":"selvapi"}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor de destaque","type":"string","default":"#f97316"}},{"name":"theme","in":"query","required":false,"schema":{"description":"Tema","type":"string","enum":["dark","light"],"default":"dark"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/badge":{"get":{"tags":["Imagens: geradores"],"summary":"Badge estilo shields.io","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"label","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"build"}},{"name":"message","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"passing"}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor da mensagem","type":"string","default":"#4c1"}},{"name":"labelColor","in":"query","required":false,"schema":{"description":"Cor do rótulo","type":"string","default":"#555"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/progress":{"get":{"tags":["Imagens: geradores"],"summary":"Barra de progresso","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"value","in":"query","required":true,"schema":{"description":"Porcentagem","type":"number","example":72,"minimum":0,"maximum":100}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":400,"minimum":50,"maximum":2000}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor","type":"string","default":"#22c55e"}},{"name":"label","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":""}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/chart":{"get":{"tags":["Imagens: geradores"],"summary":"Gráfico de barras, linha ou pizza","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"type","in":"query","required":false,"schema":{"description":"Tipo","type":"string","enum":["bar","line","pie","donut"],"default":"bar"}},{"name":"values","in":"query","required":true,"schema":{"description":"Números separados por vírgula","type":"string","example":"12,19,3,5,2,3"}},{"name":"labels","in":"query","required":false,"schema":{"description":"Rótulos separados por vírgula","type":"string","example":"Jan,Fev,Mar,Abr,Mai,Jun"}},{"name":"title","in":"query","required":false,"schema":{"description":"Texto","type":"string","example":"Vendas"}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor (bar/line)","type":"string","default":"#6366f1"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura","type":"integer","default":800,"minimum":200,"maximum":2000}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura","type":"integer","default":450,"minimum":150,"maximum":2000}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/image/text":{"get":{"tags":["Imagens: geradores"],"summary":"Texto como imagem (fonte, cores, tamanho)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Olá, mundo!"}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor","type":"string","default":"#111111"}},{"name":"bg","in":"query","required":false,"schema":{"description":"Fundo (hex ou transparent)","type":"string","default":"transparent"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho","type":"integer","default":64,"minimum":8,"maximum":300}},{"name":"font","in":"query","required":false,"schema":{"description":"Fonte","type":"string","enum":["sans","bold","meme","serif","mono"],"default":"bold"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura máx.","type":"integer","default":1000,"minimum":50,"maximum":3000}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/qr":{"get":{"tags":["QR & códigos de barras"],"summary":"Gera QR Code (SVG/PNG, cores, logo no centro)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["text"],"properties":{"text":{"description":"Conteúdo","type":"string","example":"https://cloudflare.com"},"size":{"description":"Tamanho em px","type":"integer","default":512,"minimum":64,"maximum":2048},"color":{"description":"Cor dos módulos","type":"string","default":"#000000"},"bg":{"description":"Cor de fundo","type":"string","default":"#ffffff"},"ecc":{"description":"Correção de erro","type":"string","enum":["L","M","Q","H"],"default":"M"},"margin":{"description":"Margem (módulos)","type":"integer","default":2,"minimum":0,"maximum":20},"logo":{"description":"Logo no centro (URL, opcional)","type":"string","format":"binary"},"format":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}}}}}}},"/v1/qr/wifi":{"get":{"tags":["QR & códigos de barras"],"summary":"QR Code para conectar no Wi-Fi","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"ssid","in":"query","required":true,"schema":{"description":"Nome da rede","type":"string","example":"MinhaCasa"}},{"name":"password","in":"query","required":false,"schema":{"description":"Senha","type":"string"}},{"name":"security","in":"query","required":false,"schema":{"description":"Segurança","type":"string","enum":["WPA","WEP","nopass"],"default":"WPA"}},{"name":"hidden","in":"query","required":false,"schema":{"description":"Rede oculta","type":"boolean","default":false}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho em px","type":"integer","default":512,"minimum":64,"maximum":2048}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor dos módulos","type":"string","default":"#000000"}},{"name":"bg","in":"query","required":false,"schema":{"description":"Cor de fundo","type":"string","default":"#ffffff"}},{"name":"ecc","in":"query","required":false,"schema":{"description":"Correção de erro","type":"string","enum":["L","M","Q","H"],"default":"M"}},{"name":"margin","in":"query","required":false,"schema":{"description":"Margem (módulos)","type":"integer","default":2,"minimum":0,"maximum":20}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/qr/vcard":{"get":{"tags":["QR & códigos de barras"],"summary":"QR Code de contato (vCard)","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"name","in":"query","required":true,"schema":{"description":"Nome","type":"string","example":"Maria Souza"}},{"name":"phone","in":"query","required":false,"schema":{"description":"Telefone","type":"string","example":"+5511999999999"}},{"name":"email","in":"query","required":false,"schema":{"description":"E-mail","type":"string"}},{"name":"org","in":"query","required":false,"schema":{"description":"Empresa","type":"string"}},{"name":"title","in":"query","required":false,"schema":{"description":"Cargo","type":"string"}},{"name":"url","in":"query","required":false,"schema":{"description":"Site","type":"string"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho em px","type":"integer","default":512,"minimum":64,"maximum":2048}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor dos módulos","type":"string","default":"#000000"}},{"name":"bg","in":"query","required":false,"schema":{"description":"Cor de fundo","type":"string","default":"#ffffff"}},{"name":"ecc","in":"query","required":false,"schema":{"description":"Correção de erro","type":"string","enum":["L","M","Q","H"],"default":"M"}},{"name":"margin","in":"query","required":false,"schema":{"description":"Margem (módulos)","type":"integer","default":2,"minimum":0,"maximum":20}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/qr/whatsapp":{"get":{"tags":["QR & códigos de barras"],"summary":"QR Code que abre conversa no WhatsApp","description":"","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"phone","in":"query","required":true,"schema":{"description":"Número com DDI","type":"string","example":"5511999999999"}},{"name":"message","in":"query","required":false,"schema":{"description":"Mensagem","type":"string"}},{"name":"size","in":"query","required":false,"schema":{"description":"Tamanho em px","type":"integer","default":512,"minimum":64,"maximum":2048}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor dos módulos","type":"string","default":"#000000"}},{"name":"bg","in":"query","required":false,"schema":{"description":"Cor de fundo","type":"string","default":"#ffffff"}},{"name":"ecc","in":"query","required":false,"schema":{"description":"Correção de erro","type":"string","enum":["L","M","Q","H"],"default":"M"}},{"name":"margin","in":"query","required":false,"schema":{"description":"Margem (módulos)","type":"integer","default":2,"minimum":0,"maximum":20}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/barcode":{"get":{"tags":["QR & códigos de barras"],"summary":"Código de barras: Code128, EAN-13, DataMatrix, PDF417, Aztec... (100+ tipos)","description":"Tipos comuns: code128, ean13, ean8, upca, upce, code39, code93, itf14, interleaved2of5, datamatrix, pdf417, azteccode, microqrcode, maxicode, gs1-128, isbn, issn, codabar, pharmacode, postnet, dotcode, hanxin, rectangularmicroqrcode. Qualquer bcid do bwip-js é aceito.","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Conteúdo","type":"string","example":"7891234567895"}},{"name":"type","in":"query","required":false,"schema":{"description":"Simbologia (bcid)","type":"string","default":"code128","example":"ean13"}},{"name":"scale","in":"query","required":false,"schema":{"description":"Escala","type":"integer","default":3,"minimum":1,"maximum":10}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura das barras (mm)","type":"number","default":12,"minimum":1,"maximum":100}},{"name":"includetext","in":"query","required":false,"schema":{"description":"Mostrar texto","type":"boolean","default":true}},{"name":"color","in":"query","required":false,"schema":{"description":"Cor","type":"string","default":"#000000"}},{"name":"bg","in":"query","required":false,"schema":{"description":"Fundo","type":"string","default":"#ffffff"}},{"name":"rotate","in":"query","required":false,"schema":{"description":"Rotação","type":"string","enum":["N","R","L","I"],"default":"N"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/barcode/types":{"get":{"tags":["QR & códigos de barras"],"summary":"Lista de simbologias suportadas","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/qr/read":{"post":{"tags":["QR & códigos de barras"],"summary":"Lê QR Code de uma imagem (upload ou URL)","description":"Decodifica no edge com jsQR. Para ler pela câmera em tempo real use a página /#qr do frontend (roda no navegador).","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"Imagem com o QR (URL, data URI ou upload)","type":"string","format":"binary","example":"https://api.qrserver.com/v1/create-qr-code/?data=ola&size=300x300"}}}}}}}},"/v1/ai/ocr":{"post":{"tags":["IA"],"summary":"OCR: extrai texto de imagem (modelo de visão)","description":"Para OCR ilimitado e offline, o frontend também traz Tesseract.js rodando no navegador (/#ocr).\n\nRequer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"Imagem (upload multipart, data URI ou URL)","type":"string","format":"binary","example":"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Placa_Avenida_Paulista.jpg/640px-Placa_Avenida_Paulista.jpg"},"format":{"description":"Formato da saída","type":"string","enum":["text","markdown"],"default":"text"},"lang":{"description":"Idioma esperado (dica)","type":"string","example":"português"}}}}}}}},"/v1/ai/read":{"post":{"tags":["IA"],"summary":"Leitor universal: PDF, DOCX, XLSX, ODT, CSV, HTML, imagens → Markdown","description":"Converte documentos em Markdown. Imagens recebem uma descrição gerada por IA.\n\nRequer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"Arquivo (upload) ou URL","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"max":{"description":"Máximo de caracteres","type":"integer","default":100000,"minimum":100,"maximum":500000}}}}}}}},"/v1/ai/describe":{"post":{"tags":["IA"],"summary":"Descreve uma imagem (legenda / acessibilidade)","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"Imagem (upload multipart, data URI ou URL)","type":"string","format":"binary","example":"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Placa_Avenida_Paulista.jpg/640px-Placa_Avenida_Paulista.jpg"},"detail":{"description":"Nível de detalhe","type":"string","enum":["short","long","alt"],"default":"short"}}}}}}}},"/v1/ai/ask-image":{"post":{"tags":["IA"],"summary":"Pergunte qualquer coisa sobre uma imagem","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image","question"],"properties":{"image":{"description":"Imagem (upload multipart, data URI ou URL)","type":"string","format":"binary","example":"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Placa_Avenida_Paulista.jpg/640px-Placa_Avenida_Paulista.jpg"},"question":{"description":"Pergunta","type":"string","example":"Quantas pessoas aparecem?"}}}}}}}},"/v1/ai/classify":{"post":{"tags":["IA"],"summary":"Classificação de imagem (ResNet-50, 1000 classes)","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"Imagem (upload multipart, data URI ou URL)","type":"string","format":"binary","example":"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Placa_Avenida_Paulista.jpg/640px-Placa_Avenida_Paulista.jpg"}}}}}}}},"/v1/ai/detect":{"post":{"tags":["IA"],"summary":"Detecção de objetos com caixas","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["image"],"properties":{"image":{"description":"Imagem (upload multipart, data URI ou URL)","type":"string","format":"binary","example":"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Placa_Avenida_Paulista.jpg/640px-Placa_Avenida_Paulista.jpg"},"threshold":{"description":"Confiança mínima","type":"number","default":0.7,"minimum":0,"maximum":1}}}}}}}},"/v1/ai/chat":{"get":{"tags":["IA"],"summary":"Chatbot (LLM) — compatível com o chatbot da popcat","description":"Compatível com popcat: `/v2/chatbot`\n\nRequer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"msg","in":"query","required":true,"schema":{"description":"Mensagem","type":"string","example":"Me conta uma curiosidade sobre polvos"}},{"name":"botname","in":"query","required":false,"schema":{"description":"Nome do bot","type":"string","default":"SELVAPI"}},{"name":"owner","in":"query","required":false,"schema":{"description":"Criador do bot","type":"string","default":"a comunidade"}},{"name":"system","in":"query","required":false,"schema":{"description":"Instrução de sistema (opcional)","type":"string"}},{"name":"max_tokens","in":"query","required":false,"schema":{"description":"Máximo de tokens","type":"integer","default":512,"minimum":16,"maximum":2048}}]}},"/v1/ai/translate":{"get":{"tags":["IA"],"summary":"Tradução (100 idiomas)","description":"Compatível com popcat: `/v2/translate`\n\nRequer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"The quick brown fox jumps over the lazy dog"}},{"name":"to","in":"query","required":false,"schema":{"description":"Idioma destino (ISO 639-1)","type":"string","default":"pt"}},{"name":"from","in":"query","required":false,"schema":{"description":"Idioma de origem","type":"string","default":"en"}}]}},"/v1/ai/summarize":{"post":{"tags":["IA"],"summary":"Resume um texto longo (LLM)","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"description":"Texto (até 8.000 caracteres, para poupar o free tier)","type":"string","example":"Cloudflare Workers lets developers deploy serverless code instantly across the globe. It runs on a network of data centers in more than 300 cities, giving exceptional performance and reliability. The free plan includes 100,000 requests per day."},"max_length":{"description":"Tamanho máximo do resumo (tokens)","type":"integer","default":160,"minimum":16,"maximum":400}}}}}}}},"/v1/ai/sentiment":{"get":{"tags":["IA"],"summary":"Análise de sentimento (positivo/negativo)","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"I love this API!"}}]}},"/v1/ai/embed":{"post":{"tags":["IA"],"summary":"Embeddings vetoriais (multilíngue)","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"description":"Texto (ou JSON array de textos)","type":"string","example":"gatos são ótimos"}}}}}}}},"/v1/ai/imagine":{"get":{"tags":["IA"],"summary":"Gera imagem a partir de texto (IA própria, AI Horde ou Pollinations)","description":"Com provider=horde, se a fila demorar mais de ~55 s a resposta é 202 com um id para consultar em /v1/ai/horde/status.","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"prompt","in":"query","required":true,"schema":{"description":"Descrição","type":"string","example":"um capivara astronauta tomando café na lua"}},{"name":"provider","in":"query","required":false,"schema":{"description":"workers-ai (rápido, cota diária) · horde (grátis, voluntário, pode demorar) · pollinations","type":"string","enum":["workers-ai","horde","pollinations"],"default":"workers-ai"}},{"name":"style","in":"query","required":false,"schema":{"description":"Estilo","type":"string","enum":["none","photo","anime","pixel-art","3d","watercolor","sketch","logo","cyberpunk"],"default":"none"}},{"name":"width","in":"query","required":false,"schema":{"description":"Largura (horde/pollinations)","type":"integer","minimum":256,"maximum":1536}},{"name":"height","in":"query","required":false,"schema":{"description":"Altura (horde/pollinations)","type":"integer","minimum":256,"maximum":1536}},{"name":"steps","in":"query","required":false,"schema":{"description":"Passos (gerador workers-ai)","type":"integer","default":4,"minimum":1,"maximum":8}},{"name":"seed","in":"query","required":false,"schema":{"description":"Semente (reprodutível)","type":"integer","minimum":0}}]}},"/v1/ai/horde/submit":{"post":{"tags":["IA"],"summary":"AI Horde: envia pedido de imagem (grátis, assíncrono)","description":"Rede voluntária de GPUs (github.com/Haidra-Org/AI-Horde). Pode haver fila nos horários de pico.","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"description":"Descrição","type":"string","example":"lighthouse on a cliff at sunset, oil painting"},"negative":{"description":"O que evitar","type":"string"},"width":{"description":"Largura (múltiplo de 64)","type":"integer","default":512,"minimum":64,"maximum":1024},"height":{"description":"Altura (múltiplo de 64)","type":"integer","default":512,"minimum":64,"maximum":1024},"steps":{"description":"Passos","type":"integer","default":20,"minimum":1,"maximum":40},"model":{"description":"Modelo (vazio = qualquer disponível)","type":"string"},"seed":{"description":"Semente","type":"integer","minimum":0}}}}}}}},"/v1/ai/horde/status":{"get":{"tags":["IA"],"summary":"AI Horde: status/resultado do pedido","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"ID retornado pelo submit","type":"string"}}]}},"/v1/ai/pixel-art":{"get":{"tags":["IA"],"summary":"Gerador de pixel art por IA (com quantização de paleta)","description":"Gera com IA usando prompt de pixel art e depois reduz para uma grade real de pixels com paleta limitada (PICO-8, Game Boy, NES...). Resultado com pixels de verdade, não só 'estilo'.","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"prompt","in":"query","required":true,"schema":{"description":"Descrição","type":"string","example":"cavaleiro com espada flamejante, fundo de castelo"}},{"name":"grid","in":"query","required":false,"schema":{"description":"Resolução em pixels","type":"integer","default":64,"minimum":16,"maximum":256}},{"name":"palette","in":"query","required":false,"schema":{"description":"Paleta","type":"string","enum":["auto","none","pico8","gameboy","nes","cga","grayscale","sweetie16","endesga32"],"default":"auto"}},{"name":"colors","in":"query","required":false,"schema":{"description":"Cores (auto)","type":"integer","default":16,"minimum":2,"maximum":64}},{"name":"scale","in":"query","required":false,"schema":{"description":"Ampliação","type":"integer","default":8,"minimum":1,"maximum":32}},{"name":"seed","in":"query","required":false,"schema":{"description":"Semente","type":"integer","minimum":0}},{"name":"provider","in":"query","required":false,"schema":{"description":"workers-ai (rápido, cota diária) · horde (grátis, voluntário, pode demorar) · pollinations","type":"string","enum":["workers-ai","horde","pollinations"],"default":"workers-ai"}}]}},"/v1/ai/tts":{"get":{"tags":["IA"],"summary":"Texto para fala (várias vozes, PT-BR e outros idiomas)","description":"engine=kokoro tem vozes PT-BR mais naturais (pf_dora, pm_alex, pm_santa), quando disponível. Também dá para gerar a voz no próprio navegador em /#tts, grátis e sem limite.\n\nRequer: ai","responses":{"200":{"description":"OK","content":{"audio/mpeg":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"text","in":"query","required":true,"schema":{"description":"Texto","type":"string","example":"Olá! Esta é a SELVAPI falando com você."}},{"name":"engine","in":"query","required":false,"schema":{"description":"Motor (auto = kokoro se configurado)","type":"string","enum":["auto","melotts","kokoro"],"default":"auto"}},{"name":"voice","in":"query","required":false,"schema":{"description":"Voz (motor kokoro)","type":"string","default":"pf_dora"}},{"name":"lang","in":"query","required":false,"schema":{"description":"Idioma","type":"string","enum":["pt","en","es","fr","ja","zh","ko"],"default":"pt"}},{"name":"speed","in":"query","required":false,"schema":{"description":"Velocidade (motor kokoro)","type":"number","default":1,"minimum":0.5,"maximum":2}}]}},"/v1/ai/tts/voices":{"get":{"tags":["IA"],"summary":"Vozes disponíveis (motor kokoro)","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[]}},"/v1/ai/stt":{"post":{"tags":["IA"],"summary":"Fala para texto / transcrição","description":"Requer: ai","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["audio"],"properties":{"audio":{"description":"Áudio (mp3, wav, ogg, m4a…) — upload ou URL","type":"string","format":"binary"},"language":{"description":"Idioma (ex: pt)","type":"string"}}}}}}}},"/v1/short":{"post":{"tags":["Armazenamento"],"summary":"Encurta uma URL","description":"Compatível com popcat: `/v2/shorten`\n\nRequer: db","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"description":"URL longa","type":"string","format":"uri","example":"https://developers.cloudflare.com/workers/"},"slug":{"description":"Apelido personalizado (opcional)","type":"string"}}}}}}}},"/v1/short/stats":{"get":{"tags":["Armazenamento"],"summary":"Estatísticas de um link curto","description":"Requer: db","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"code","in":"query","required":true,"schema":{"description":"Código","type":"string"}}]}},"/v1/paste":{"post":{"tags":["Armazenamento"],"summary":"Pastebin: salva texto/código e devolve um link","description":"Compatível com popcat: `/v2/create`\n\nRequer: db","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["content"],"properties":{"content":{"description":"Conteúdo","type":"string","example":"console.log('olá')"},"title":{"description":"Título","type":"string"},"language":{"description":"Linguagem (destaque)","type":"string","example":"javascript"},"expires":{"description":"Expiração","type":"string","enum":["never","1h","1d","7d","30d"],"default":"never"}}}}}}}},"/v1/paste/get":{"get":{"tags":["Armazenamento"],"summary":"Lê um paste (JSON)","description":"Requer: db","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"id","in":"query","required":true,"schema":{"description":"ID","type":"string"}}]}},"/v1/counter":{"get":{"tags":["Armazenamento"],"summary":"Contador de visitas (badge SVG para READMEs)","description":"Requer: db","responses":{"200":{"description":"OK","content":{"image/svg+xml":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"key","in":"query","required":true,"schema":{"description":"Identificador único","type":"string","example":"meu-repo"}},{"name":"label","in":"query","required":false,"schema":{"description":"Rótulo","type":"string","default":"visitas"}},{"name":"increment","in":"query","required":false,"schema":{"description":"Incrementar","type":"boolean","default":true}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato de saída. PNG é renderizado no edge (usa mais CPU).","type":"string","enum":["svg","png"],"default":"svg"}}]}},"/v1/media/info":{"get":{"tags":["Mídia"],"summary":"Metadados de vídeo/áudio: título, duração, formatos, thumbnail","description":"Processado pelo nosso serviço de mídia. Baixe só conteúdo que você tem direito de baixar; os termos de alguns sites (ex.: YouTube) proíbem downloads.\n\nRequer: media","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Link do vídeo/áudio (YouTube, Vimeo, SoundCloud, TikTok, Instagram, X, arquivos diretos… 1800+ sites)","type":"string","format":"uri","example":"https://www.youtube.com/watch?v=aqz-KE-bpKQ"}}]}},"/v1/media/download":{"get":{"tags":["Mídia"],"summary":"Baixa vídeo em MP4/WebM ou áudio em MP3/M4A/Opus/WAV/FLAC","description":"Processado pelo nosso serviço de mídia. Baixe só conteúdo que você tem direito de baixar; os termos de alguns sites (ex.: YouTube) proíbem downloads.\n\nRequer: media","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"parameters":[{"name":"url","in":"query","required":true,"schema":{"description":"Link do vídeo/áudio (YouTube, Vimeo, SoundCloud, TikTok, Instagram, X, arquivos diretos… 1800+ sites)","type":"string","format":"uri","example":"https://www.youtube.com/watch?v=aqz-KE-bpKQ"}},{"name":"format","in":"query","required":false,"schema":{"description":"Formato","type":"string","enum":["mp3","m4a","opus","wav","flac","mp4","webm","mkv"],"default":"mp4"}},{"name":"quality","in":"query","required":false,"schema":{"description":"Vídeo: best, 1080, 720, 480, 360 · Áudio: 320, 192, 128 (kbps)","type":"string","default":"best"}}]}},"/v1/media/convert":{"post":{"tags":["Mídia"],"summary":"Converte/corta mídia (vídeo→MP3, MP4, WebM, GIF…)","description":"Para arquivos até ~100 MB (limite de upload). Para arquivos maiores, use a aba Mídia do site, que converte no próprio navegador.\n\nRequer: media","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"Arquivo de áudio/vídeo (upload ou URL)","type":"string","format":"binary"},"to":{"description":"Formato de saída","type":"string","enum":["mp3","m4a","ogg","wav","flac","mp4","webm","gif"],"default":"mp3"},"start":{"description":"Início (ex: 5 ou 00:00:05)","type":"string"},"end":{"description":"Fim (ex: 00:00:20)","type":"string"},"bitrate":{"description":"Ex: 128k (áudio) ou 1M (vídeo)","type":"string"},"width":{"description":"Largura (vídeo/GIF)","type":"integer","minimum":16,"maximum":3840},"fps":{"description":"FPS (GIF)","type":"integer","minimum":1,"maximum":60}}}}}}}},"/v1/pdf/info":{"post":{"tags":["PDF"],"summary":"Informações do PDF: páginas, tamanhos, metadados","description":"","responses":{"200":{"description":"OK","content":{"application/json":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}}}}}}}},"/v1/pdf/merge":{"post":{"tags":["PDF"],"summary":"Junta até 10 PDFs em um","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file1","file2"],"properties":{"file1":{"description":"Arquivo 1","type":"string","format":"binary"},"file2":{"description":"Arquivo 2","type":"string","format":"binary"},"file3":{"description":"Arquivo 3","type":"string","format":"binary"},"file4":{"description":"Arquivo 4","type":"string","format":"binary"},"file5":{"description":"Arquivo 5","type":"string","format":"binary"},"file6":{"description":"Arquivo 6","type":"string","format":"binary"},"file7":{"description":"Arquivo 7","type":"string","format":"binary"},"file8":{"description":"Arquivo 8","type":"string","format":"binary"},"file9":{"description":"Arquivo 9","type":"string","format":"binary"},"file10":{"description":"Arquivo 10","type":"string","format":"binary"}}}}}}}},"/v1/pdf/pages":{"post":{"tags":["PDF"],"summary":"Extrai/reordena páginas (ex: 1-3,5,8-)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","pages"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"pages":{"description":"Páginas (1-3,5,8-)","type":"string","example":"1"}}}}}}}},"/v1/pdf/split":{"post":{"tags":["PDF"],"summary":"Divide o PDF: um arquivo por página (ZIP)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"}}}}}}}},"/v1/pdf/rotate":{"post":{"tags":["PDF"],"summary":"Gira páginas (90, 180, 270)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"angle":{"description":"Ângulo","type":"string","enum":["90","180","270"],"default":"90"},"pages":{"description":"Páginas (padrão: todas)","type":"string"}}}}}}}},"/v1/pdf/watermark":{"post":{"tags":["PDF"],"summary":"Marca d'água de texto em todas as páginas","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"text":{"description":"Texto","type":"string","default":"CONFIDENCIAL"},"opacity":{"description":"Opacidade","type":"number","default":0.15,"minimum":0.02,"maximum":1},"color":{"description":"Cor","type":"string","default":"#ff0000"}}}}}}}},"/v1/pdf/from-images":{"post":{"tags":["PDF"],"summary":"Converte imagens PNG/JPEG em PDF (1 por página)","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file1"],"properties":{"file1":{"description":"Imagem 1 (PNG/JPEG)","type":"string","format":"binary"},"file2":{"description":"Imagem 2 (PNG/JPEG)","type":"string","format":"binary"},"file3":{"description":"Imagem 3 (PNG/JPEG)","type":"string","format":"binary"},"file4":{"description":"Imagem 4 (PNG/JPEG)","type":"string","format":"binary"},"file5":{"description":"Imagem 5 (PNG/JPEG)","type":"string","format":"binary"},"file6":{"description":"Imagem 6 (PNG/JPEG)","type":"string","format":"binary"},"file7":{"description":"Imagem 7 (PNG/JPEG)","type":"string","format":"binary"},"file8":{"description":"Imagem 8 (PNG/JPEG)","type":"string","format":"binary"},"file9":{"description":"Imagem 9 (PNG/JPEG)","type":"string","format":"binary"},"file10":{"description":"Imagem 10 (PNG/JPEG)","type":"string","format":"binary"},"size":{"description":"Página do tamanho da imagem ou A4","type":"string","enum":["fit","a4"],"default":"fit"}}}}}}}},"/v1/pdf/metadata":{"post":{"tags":["PDF"],"summary":"Altera título, autor, assunto e palavras-chave","description":"","responses":{"200":{"description":"OK","content":{"application/octet-stream":{}}},"400":{"description":"Parâmetros inválidos"}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"description":"PDF (upload ou URL)","type":"string","format":"binary","example":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"title":{"description":"Título","type":"string"},"author":{"description":"Autor","type":"string"},"subject":{"description":"Assunto","type":"string"},"keywords":{"description":"Palavras-chave (vírgula)","type":"string"}}}}}}}}}}