Documentação · SDK
SDK JavaScript da Nyqo
Um arquivo estático (nyqo-sdk.js, zero dependências): auth nyq_, atalhos por categoria (busca, Nyqo Buscas, IA, downloads, jogos, billing) e erros padronizados com Retry-After. Base única: https://api.nyqo.dev
Sem npm, sem CDN
Instalação
Copie e cole no HTML — ou baixe o arquivo e sirva do seu próprio domínio. Funciona no browser (global Nyqo) e no Node 18+ (require).
Browser — script tag
<script src="/nyqo-sdk.js"></script>
<script>
const nyqo = Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
const res = await nyqo.search.web("nyqo");
console.log(res);
</script>Node 18+ — arquivo local
// Node 18+ — copie nyqo-sdk.js para o projeto (sem npm, sem CDN)
const { createClient } = require("./nyqo-sdk.js");
// (projeto "type": "module": import "./nyqo-sdk.js"; const { createClient } = globalThis.Nyqo;)
const nyqo = createClient({
apiKey: process.env.NYQO_API_KEY || "nyq_sua_chave_aqui",
baseUrl: "https://api.nyqo.dev", // no browser, omita: mesma origem
});Postman — coleção pronta
Todos os endpoints com auth via variável nyqo_api_key. Importe e troque pela sua chave nyq_.
3 linhas
Quickstart
// 1 — cliente (browser: mesma origem; demo local responde sozinho)
const nyqo = Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
// 2 — Nyqo Buscas (slug data-query, quota diária separada)
const busca = await nyqo.buscas.query({ type: "cpf", value: "12345678901" });
// 3 — erros padronizados (NyqoError: status/code/retryAfter)
try {
console.log(busca);
} catch (err) {
if (err.code === "rate_limited") {
await new Promise((r) => setTimeout(r, err.retryAfter * 1000));
}
throw err;
}Chaves nyq_ + sessão
Autenticação
O data-plane aceita Bearer (padrão) ouX-API-Key — nunca na query string. Os helpers de billing usam a sessão do site/painel (cookie same-origin): a chave nyq_ não autentica lá.
// Recomendado: Authorization Bearer (padrão do SDK)
Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
// Alternativa: header X-API-Key
Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui", authMode: "x-api-key" });
// Billing = SESSÃO same-origin (nyq_ NÃO autentica lá)
await nyqo.billing.subscription(); // logado no painel/siteNyqoError
Erros e Retry-After
Toda falha vira NyqoErrorcom status,code (slug do envelope) eretryAfter (segundos do headerRetry-After em 429). Detalhes em /docs — códigos de erro.
import { NyqoError } from "./nyqo-sdk.js"; // browser: Nyqo.NyqoError
try {
await nyqo.search.web("nyqo");
} catch (err) {
console.log(err.status, err.code, err.retryAfter);
// 401 unauthorized — sem chave ou chave inválida (msk_ legada cai aqui)
// 403 forbidden — sem plano ativo, rota fora do plano/escopo da chave
// 429 rate_limited — quota estourada; err.retryAfter = segundos do
// header Retry-After (60 janelas · 86400 Nyqo Buscas)
}fetch cru × SDK
Exemplos JavaScript
Mesmo estilo dos snapshots do gerador (docs/nyqo/examples/*.md): à esquerda o fetch cru, à direita o equivalente no SDK.
Busca na web — fetch cru
// web-search — Pesquisa · Nyqo API
// GET https://api.nyqo.dev/api/v1/search/web
const API_KEY = process.env.NYQO_API_KEY || "nyq_sua_chave_aqui";
const params = new URLSearchParams({ q: "exemplo de busca", max: "5" });
const res = await fetch(`https://api.nyqo.dev/api/v1/search/web?${params}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (res.status === 401) throw new Error("401: chave ausente ou inválida (use nyq_...)");
if (res.status === 403) throw new Error("403: sem plano ativo ou rota fora do escopo");
if (res.status === 429) throw new Error(`429: rate limit — Retry-After: ${res.headers.get("retry-after") ?? "60"}s`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());Busca na web — via SDK
// Mesmo exemplo, via SDK (auth + 401/403/429 embutidos)
const nyqo = Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
console.log(await nyqo.search.web("exemplo de busca", { max: 5 }));Nyqo Buscas — fetch cru
// data-query — Nyqo Buscas · POST https://api.nyqo.dev/api/v1/consultas
const API_KEY = process.env.NYQO_API_KEY || "nyq_sua_chave_aqui";
const res = await fetch("https://api.nyqo.dev/api/v1/consultas", {
method: "POST",
headers: { Authorization: `Bearer ${API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ type: "cpf", value: "12345678901", format: "json" }),
});
if (res.status === 401) throw new Error("401: chave ausente ou inválida (use nyq_...)");
if (res.status === 403) throw new Error("403: sem plano ativo ou rota fora do escopo");
if (res.status === 429) throw new Error(`429: quota Nyqo Buscas — Retry-After: ${res.headers.get("retry-after") ?? "86400"}s`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());Nyqo Buscas — via SDK
// Mesmo exemplo, via SDK — Nyqo Buscas (quota diária separada)
const nyqo = Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
console.log(await nyqo.buscas.query({ type: "cpf", value: "12345678901" }));
// format: "json" (padrão) ou "text"IA — via SDK
// IA: chat simples + OpenAI-compatible + modelos
const nyqo = Nyqo.createClient({ apiKey: "nyq_sua_chave_aqui" });
console.log(await nyqo.ai.chat("Olá! Como você pode me ajudar?"));
console.log(await nyqo.ai.completions([{ role: "user", content: "Olá!" }]));
console.log(await nyqo.ai.models());requests
Exemplo Python
Nyqo Buscas com requests — mesmo shape do snapshot gerado (docs/nyqo/examples/data-query.md).
"""Nyqo Buscas (data-query) — POST https://api.nyqo.dev/api/v1/consultas."""
import os
import sys
import requests
BASE_URL = "https://api.nyqo.dev"
API_KEY = os.environ.get("NYQO_API_KEY", "nyq_sua_chave_aqui")
def main() -> None:
try:
res = requests.post(
f"{BASE_URL}/api/v1/consultas",
json={"type": "cpf", "value": "12345678901", "format": "json"},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=30,
)
except requests.RequestException as exc: # rede, DNS, timeout
print(f"erro de rede: {exc}", file=sys.stderr)
raise SystemExit(1)
if res.status_code == 401:
print("401: chave ausente ou inválida (use nyq_...)", file=sys.stderr)
raise SystemExit(1)
if res.status_code == 403:
print("403: sem plano ativo ou rota fora do escopo", file=sys.stderr)
raise SystemExit(1)
if res.status_code == 429:
retry = res.headers.get("Retry-After", "86400")
print(f"429: quota Nyqo Buscas — Retry-After: {retry}s", file=sys.stderr)
raise SystemExit(1)
res.raise_for_status()
print(res.json())
if __name__ == "__main__":
main()Por categoria
Referência do SDK
| Helper | Rota | Auth |
|---|---|---|
search.web(q, {max}) | GET /api/v1/search/web | nyq_ |
search.lyrics(q) | GET /api/v1/search/lyrics | nyq_ |
buscas.query({type,value,format}) | POST /api/v1/consultas | nyq_ + quota diária |
ai.chat(message, {image}) | POST /api/v1/ai/chat | nyq_ |
ai.completions(messages) | POST /api/v1/chat/completions | nyq_ |
ai.models() | GET /api/v1/ai/models | nyq_ |
downloads.tiktok(url) · instagram · youtube · spotify · … | GET /api/v1/… + /api/modyolo/… | nyq_ |
games.minecraftProfile(user) · robloxProfile · … | GET /api/v1/games/… | nyq_ |
utils.upload(file) | POST /api/upload (multipart) | nyq_ |
utils.brat(text) | GET /api/v1/image/brat (PNG) | nyq_ |
billing.plans() | GET /v1/public/plans | pública |
billing.subscription() · payments() · activatePlan() · … | /v1/billing/… | sessão |
Lista completa (20+ atalhos de downloads/jogos + get/post/request crus) direto no fonte: /nyqo-sdk.js.
Ao vivo
Playground
Rode o SDK de verdade nesta página (mesma origem). No modo demo, as chamadas são respondidas localmente — use qualquer chave nyq_demo_….
// O resultado aparece aqui.Pronto para integrar? copie o SDK e chame.
Um arquivo, zero dependências. Baixe o nyqo-sdk.js e faça sua primeira chamada em minutos.