Backend & SDK

Drittanbieter-APIs (b77.http)

Rufe beliebige HTTPS-APIs mit deinen geheimen Schlüsseln auf, ohne sie preiszugeben.

b77.http.fetch ruft die HTTPS-API eines Drittanbieters von den Servern von builder77 aus auf. Deine API-Schlüssel speicherst du unter Einstellungen → Secrets und schreibst sie im Code als {{secret:NAME}}: Der Server setzt sie ein, sodass sie nie den Browser erreichen.

const res = await b77.http.fetch('https://api.openai.com/v1/chat/completions', {
  method: 'POST',                                          // default GET
  headers: { Authorization: 'Bearer {{secret:OPENAI_API_KEY}}' },
  body: { model: 'gpt-4o-mini', messages: [{ role: 'user', content: 'Hi!' }] }, // object → JSON, or a string
});
if (res.ok) console.log(res.data);  // { ok, status, headers, body (text), data (parsed JSON or null) }

Jeder Aufruf kostet 1 Integrations-Credit. Nur https, 15 Sekunden Timeout, Antworten bis 1 MB. Gibt eine API deinen Schlüssel zurück, wird er durch [secret] ersetzt, bevor deine App die Antwort sieht.

Regeln für jedes Secret

Jeder, der deine App nutzt, kann mit einem Secret Aufrufe machen – ohne es zu sehen. Deshalb funktioniert jedes Secret nur so, wie du es erlaubst:

  • Erlaubte Hosts – die einzigen Server, an die es je gesendet wird (z. B. api.openai.com; *.example.com deckt Subdomains ab).
  • Erlaubte Methoden – standardmäßig GET und POST.
  • Erlaubte Pfade – optionale Pfadpräfixe wie /v1/chat/. Leer heißt: jeder Pfad.
  • Wo der Schlüssel stehen darf – standardmäßig nur in einem Credential-Header (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key und ähnliche). Query-Parameter (nach Name, z. B. key), der URL-Pfad und der Request-Body sind aus, bis du sie einschaltest.

Ein Aufruf, der gegen eine Regel verstößt, wird mit Status 403 abgelehnt, bevor irgendetwas gesendet wird.

Schlüssel in URL oder Body

Bevorzuge APIs, die den Schlüssel im Header erwarten. Manche verlangen ihn stattdessen in der Adresse – erlaube genau diese Stelle und schränke den Pfad ein:

// Settings → Secrets: TELEGRAM_TOKEN, host api.telegram.org, "In the URL path" on,
// allowed path /bot{{secret:TELEGRAM_TOKEN}}/sendMessage
await b77.http.fetch('https://api.telegram.org/bot{{secret:TELEGRAM_TOKEN}}/sendMessage', {
  method: 'POST',
  body: { chat_id: 12345, text: 'New booking!' },
});

Erlaube Im Request-Body nur, wenn die API es verlangt: Dann könnte jeder, der deine App nutzt, den Schlüssel in alles schreiben, was diese API speichert (eine Nachricht, eine Notiz, eine öffentliche Datei), und ihn wieder auslesen.