Бэкенд и SDK

Сторонние 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 (сообщение, заметку, публичный файл), и прочитать его обратно.