@rikaido/sdk
Le SDK
Une classe, trois portes, zéro dépendance. C’est fetch avec les bons en-têtes et les bons types.
Installer
npm
npm install @rikaido/sdkLe paquet est du TypeScript compilé, sans dépendance, sous licence Apache-2.0. Il tourne partout où fetch existe : Node 18+, Bun, Deno, un navigateur, un worker.
Une clé, trois portes
TypeScript
import { Rikaido } from "@rikaido/sdk";
const rikaido = new Rikaido({ apiKey: process.env.RIKAIDO_KEY! });
// Le harnais : huit contrôles, vingt codes, un seul verrou.
const verdict = await rikaido.harness.validate(recipe, { allergies: ["arachide"] });
if (!verdict.safe) throw new Error(verdict.issues[0].message);
// Le graphe : de quoi un ingrédient est fait, et ce qui le remplace.
const arachide = await rikaido.graph.ingredient("beurre d’arachide");
arachide.facts.allergens; // ["peanut"]
// Le cast : le dessin kawaii et le jouet 3D.
const tomate = await rikaido.art.portrait("tomate");
tomate.kawaiiSvg; // "<svg …"
tomate.toyUrl; // "https://api.rikaido.app/v1/art/ingredients/tomato/toy.webp"Ce que chaque réponse porte
Chaque réponse est l’objet de l’API, plus usage.op — l’opération qui a été comptée, lue sur l’en-tête Rikaido-Usage-Op. Un appel qui n’a pas été compté (un 400, un 404) ne l’a pas.
usage
const v = await rikaido.harness.validate(recipe);
v.usage.op; // "validate"Les erreurs
Tout ce qui n’est pas un 2xx lance une RikaidoError avec status, code quand l’API en donne un, et la phrase de l’API comme message.
erreurs
import { RikaidoError } from "@rikaido/sdk";
try {
await rikaido.harness.read("https://example.com/recette");
} catch (err) {
if (err instanceof RikaidoError && err.code === "payment-required") {
// les appels offerts du mois sont utilisés
}
}Les méthodes
harness.validate(recipe, constraints?, titleHint?)Verdictharness.read(source, locale?)ReadResultgraph.ingredient(name, { neighbours? })GraphIngredientgraph.search(q, { limit?, locale? }){ matches }art.list(){ count, ingredients }art.portrait(name)Portraitart.toy(name) · art.kawaii(name){ bytes, contentType }Les fichiers eux-mêmes.
Sans le SDK
Le SDK n’a rien que l’API n’ait pas. Chaque page de référence montre l’appel en curl ; la clé voyage dans Authorization: Bearer, le corps en JSON.