Начало работы
Зарегистрируйтесь на https://formula-ai.ru/signup, подтвердите email кодом из письма и создайте API-ключ в личном кабинете: https://formula-ai.ru/settings/keys. Ключ показывается один раз при создании или перевыпуске. Выдача через администратора также доступна. Передавайте ключ в Authorization: Bearer; не помещайте в URL.
Базовый URL: https://formula-ai.ru/api/v1. Сначала получите доступные модели через GET /models и выберите модель с нужной операцией. verification_level=basic означает подтверждённые реальные результат и расход при сокращённой проверке; full — полную записанную проверку. Отдельные параметры, ошибки и возвраты при basic могут оставаться непроверенными. `unverified` означает нетекстовую операцию, опубликованную по явному разрешению владельца без реального вызова; `unrecorded` — уровень проверки не записан.
Проверьте GET /balance, затем отправьте запрос. Если получен HTTP 202, сохраните собственный ID запроса и опрашивайте GET /requests/{id}. Ожидание и финансовая сверка могут продолжаться после окончания HTTP-соединения.
Оплачиваемую повторную отправку защищайте заголовком Idempotency-Key. Повтор с тем же содержимым вернёт тот же запрос; изменение параметров с прежним ключом даст 409.
Для длительного запроса добавьте Prefer: respond-async: сервис быстро сохранит операцию и вернёт HTTP 202 с id, X-Generation-ID и Location. Получайте полный готовый результат через GET /requests/{id}. Без этого заголовка синхронные клиенты продолжают получать прежний формат ответа.
cURL · GET /balance
curl "https://formula-ai.ru/api/v1/balance" \
-H "Authorization: Bearer $AI_SERVICE_API_KEY"
cURL · POST /chat/completions
curl "https://formula-ai.ru/api/v1/chat/completions" \
-H "Authorization: Bearer $AI_SERVICE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-text-1" \
--data-binary "{
\"model\": \"$AI_SERVICE_MODEL\",
\"messages\": [
{
\"role\": \"user\",
\"content\": \"Reply OK\"
}
]
}"
PHP · POST /chat/completions
<?php
$key = getenv("AI_SERVICE_API_KEY");
$url = "https://formula-ai.ru/api/v1/chat/completions";
$handle = curl_init($url);
curl_setopt_array($handle, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode(["model" => getenv("AI_SERVICE_MODEL"), "messages" => [["role" => "user", "content" => "Reply OK"]]], JSON_THROW_ON_ERROR),
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . $key, "Content-Type: application/json", "Idempotency-Key: first-text-1"],
]);
if (getenv("AI_SERVICE_CA")) {
curl_setopt($handle, CURLOPT_CAINFO, getenv("AI_SERVICE_CA"));
}
$body = curl_exec($handle);
if ($body === false) {
throw new RuntimeException(curl_error($handle));
}
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
curl_close($handle);
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
echo json_encode(["status" => $status, "result" => $result], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
PHP · GET /balance
<?php
$key = getenv("AI_SERVICE_API_KEY");
$url = "https://formula-ai.ru/api/v1/balance";
$handle = curl_init($url);
curl_setopt_array($handle, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . $key],
]);
if (getenv("AI_SERVICE_CA")) {
curl_setopt($handle, CURLOPT_CAINFO, getenv("AI_SERVICE_CA"));
}
$body = curl_exec($handle);
if ($body === false) {
throw new RuntimeException(curl_error($handle));
}
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
curl_close($handle);
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
echo json_encode(["status" => $status, "result" => $result], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
Примеры cURL используют Bash. Задайте AI_SERVICE_API_KEY и AI_SERVICE_MODEL; модель выберите из /models. В PHP для опроса/файла задайте AI_SERVICE_REQUEST_ID/AI_SERVICE_MEDIA_ID, для правки — AI_SERVICE_SOURCE_URL. Для локального сертификата используйте доверенный CA через --cacert, для PHP — AI_SERVICE_CA. Проверку TLS сохраняйте включённой.