API de terceros (b77.http)
Llama a cualquier API HTTPS con tus claves secretas, sin exponerlas.
b77.http.fetch llama a una API HTTPS de terceros desde los servidores de builder77. Tus claves de API se guardan en Ajustes → Claves secretas y se escriben en el código como {{secret:NAME}}: el servidor las rellena, así que nunca llegan al navegador.
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) }Cada llamada usa 1 crédito de integración. Solo https, tiempo de espera de 15 segundos, respuestas de hasta 1 MB. Si una API devuelve tu clave, se sustituye por [secret] antes de que tu app vea la respuesta.
Reglas de cada clave
Cualquiera que use tu app puede hacer llamadas con una clave secreta, sin verla. Por eso cada clave solo funciona como tú permitas:
- Hosts permitidos: los únicos servidores a los que se envía (p. ej.
api.openai.com;*.example.comcubre los subdominios). - Métodos permitidos: GET y POST por defecto.
- Rutas permitidas: prefijos de ruta opcionales como
/v1/chat/. Vacío significa cualquier ruta. - Dónde se puede colocar la clave: por defecto, solo en una cabecera de credenciales (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key y similares). Los parámetros de consulta (por nombre, p. ej.
key), la ruta de la URL y el cuerpo de la petición están desactivados hasta que los actives.
Una llamada que incumple una regla se rechaza con el estado 403 antes de enviar nada.
Claves en la URL o en el cuerpo
Da preferencia a las API que reciben la clave en una cabecera. Algunas la ponen en la dirección; en ese caso, permite exactamente esa posición y acota la ruta:
// 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!' },
});Permite En el cuerpo de la petición solo si la API lo exige: cualquiera que use tu app podría escribir la clave en cualquier cosa que guarde esa API (un mensaje, una nota, un archivo público) y volver a leerla.