Сторонние API (b77.http)
Вызывайте любой HTTPS API со своими секретными ключами, не раскрывая их.
b77.http.fetch вызывает сторонний HTTPS API с серверов builder77. Ваши API-ключи хранятся в Настройки → Секретные ключи, а в коде записываются как {{secret:NAME}}: сервер подставляет их сам, поэтому они никогда не попадают в браузер.
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) }Каждый вызов расходует 1 кредит интеграций. Только https, тайм-аут 15 секунд, ответы до 1 МБ. Если API возвращает ваш ключ в ответе, он заменяется на [secret] до того, как ответ увидит ваше приложение.
Правила для каждого ключа
Любой пользователь вашего приложения может делать запросы с секретным ключом — не видя его. Поэтому каждый ключ работает только так, как вы разрешите:
- Разрешённые хосты — единственные серверы, на которые ключ вообще отправляется (например,
api.openai.com;*.example.comохватывает поддомены). - Разрешённые методы — по умолчанию GET и POST.
- Разрешённые пути — необязательные префиксы пути, например
/v1/chat/. Пусто — любой путь. - Где можно передавать ключ — по умолчанию только в заголовке с учётными данными (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key и подобных). Параметры запроса (по названию, например
key), путь URL и тело запроса отключены, пока вы их не включите.
Вызов, нарушающий правило, отклоняется со статусом 403 ещё до отправки.
Ключи в URL или в теле запроса
Выбирайте API, которые принимают ключ в заголовке. Некоторые вместо этого требуют передавать его в адресе — разрешите именно это место и сузьте путь:
// 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!' },
});Включайте В теле запроса, только если этого требует API: тогда любой пользователь вашего приложения сможет записать ключ во что угодно, что сохраняет этот API (сообщение, заметку, публичный файл), и прочитать его обратно.