Orbit API
Guides d’intégration

Cloudflare Workers

Appeler Orbit depuis un Worker avec une liaison secrète.

Enregistrez la clé comme secret Worker :

wrangler secret put ORBIT_API_KEY

Définissez l’URL de base comme variable serveur ou constante contrôlée, jamais à partir d’une entrée utilisateur.

interface Env {
  ORBIT_API_KEY: string;
  ORBIT_BASE_URL: string;
}

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const incoming = new URL(request.url);
    const query = incoming.searchParams.get("q")?.trim() ?? "";
    if (!query || query.length > 100) {
      return Response.json({ error: "invalid_query" }, { status: 400 });
    }

    const orbitUrl = new URL(`${env.ORBIT_BASE_URL}/v1/interests/search`);
    orbitUrl.searchParams.set("q", query);
    orbitUrl.searchParams.set("limit", "20");

    const response = await fetch(orbitUrl, {
      headers: { Authorization: `Bearer ${env.ORBIT_API_KEY}` },
      signal: AbortSignal.timeout(5_000),
    });

    const headers = new Headers({
      "content-type": "application/json",
      "cache-control": "private, no-store",
    });
    for (const name of [
      "x-request-id",
      "x-ratelimit-limit",
      "x-ratelimit-remaining",
      "x-ratelimit-reset",
      "x-orbit-daily-ratelimit-limit",
      "x-orbit-daily-ratelimit-remaining",
      "x-orbit-daily-ratelimit-reset",
      "retry-after",
    ]) {
      const value = response.headers.get(name);
      if (value) headers.set(name, value);
    }

    return new Response(response.body, {
      status: response.status,
      headers,
    });
  },
};

Ajoutez l’authentification et les limites propres à votre application. Ne renvoyez jamais env, l’en-tête envoyé à Orbit ou la clé dans les journaux.