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
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.