ДокументаціяІнтеграції
Усі теми

SHVYDKO / Інтеграції

JavaScript через HTTP

Серверний fetch із перевіркою статусу, тайм-аутом і без передавання API-ключа в браузер.

Запускайте на сервері

Приклад використовує Node.js із вбудованими fetch та AbortSignal.timeout. Збережіть файл як request.mjs, а request.json візьміть із quickstart. Змінні SHVYDKO_BASE_URL і SHVYDKO_API_KEY мають бути доступні серверному процесу.

У вебзастосунку викликайте Shvydko зі свого захищеного серверного endpoint. Не вставляйте секрет у клієнтський React-компонент, HTML чи публічний bundle.

Запит через fetch

request.mjs · server-side JavaScript
import { readFile } from "node:fs/promises";

const baseUrl = process.env.SHVYDKO_BASE_URL?.replace(/\/$/, "");
const apiKey = process.env.SHVYDKO_API_KEY;
if (!baseUrl || !apiKey) throw new Error("Missing server configuration");
const payload = JSON.parse(await readFile("request.json", "utf8"));

let response;
try {
  response = await fetch(baseUrl + "/v1/systemone", {
    method: "POST",
    headers: {
      Authorization: "Bearer " + apiKey,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
    signal: AbortSignal.timeout(150_000),
  });
} catch {
  throw new Error("Network failure; check Usage before retrying a paid request");
}

const body = await response.json().catch(() => null);
if (!response.ok) {
  const detail = typeof body?.detail === "string" ? body.detail : "Request failed";
  const retryAfter = response.headers.get("Retry-After");
  throw new Error(
    "Shvydko HTTP " + response.status + ": " + detail + "; Retry-After=" + retryAfter
  );
}
if (!body?.answers || !body?.usage || !body?.request_id) {
  throw new Error("Unexpected response shape");
}

console.log({
  requestId: body.request_id,
  team: body.answers.team.choice,
  inputTokens: body.usage.input_tokens,
  costUsd: body.usage.cost_usd,
});

Вбудуйте в контрольований процес

Перевіряйте статус до читання answers. Для бізнес-дії звіряйте choice з дозволеним переліком, а числові значення — з очікуваними межами. Мережевий тайм-аут вашого клієнта не доводить, що сервер не встиг виконати запит.

Приклад не потребує SDK і не припускає підтримки OpenAI chat/completions. Використовуйте саме контракт /v1/systemone.