Текст, изображения, видео и музыка через один API — выберите модель
  1. Главная
  2. /
  3. Документация
  4. /
  5. API-справочник

GET /balance, /balance/transactions

Гайды, примеры запросов и справочник методов. Всё, что нужно для подключения нейросетей к вашему проекту.

API-справочник

GET /balance: currency=RUB, balance — остаток, reserved — резерв ранее принятых операций, available — доступный остаток. Денежные значения — десятичные строки с 7 знаками. Новые операции выполняются без резерва, списание проводится по фактическому использованию; применяется математическое округление.

Отрицательный итог допускается, но новый запрос генерации при любом отрицательном остатке получает 402. При нуле генерация разрешена. При остатке ниже 100 ₽ суммарно разрешено до трёх незавершённых запросов; превышение даёт 429. Повтор с прежним Idempotency-Key возвращает уже принятый запрос.

GET /balance/transactions?page=1: data — собственные операции, page — номер страницы, 50 записей. Поля: id, type, amount, reserved_delta, balance_after, reserved_after, request_id, original_operation_id, created_at.

Баланс, история и уведомления доступны в личном кабинете: https://formula-ai.ru/settings/billing. Пополнение через Robokassa станет доступно после настройки магазина. До этого баланс может пополнить администратор. Возврат со страницы оплаты сам по себе не подтверждает зачисление; оно проводится по проверенному уведомлению Robokassa.

cURL · GET /balance

curl "https://formula-ai.ru/api/v1/balance" \
  -H "Authorization: Bearer $AI_SERVICE_API_KEY"

cURL · GET /balance/transactions?page=1

curl "https://formula-ai.ru/api/v1/balance/transactions?page=1" \
  -H "Authorization: Bearer $AI_SERVICE_API_KEY"

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);

PHP · GET /balance/transactions?page=1

<?php
$key = getenv("AI_SERVICE_API_KEY");
$url = "https://formula-ai.ru/api/v1/balance/transactions?page=1";
$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);

Схемы метода

Обязательные поля, типы, параметры и ответы описаны в OpenAPI 3.1. Полный машинный справочник

Показать JSON-схемы
{
    "openapi": "3.1.1",
    "info": {
        "title": "Formula AI API",
        "version": "1",
        "description": "Методы нашего сервиса. Доступность модели и её параметров определяется опубликованным проверенным маршрутом. Suno: 23 музыкальные и вспомогательные операции, схемы и ограничения параметров. Streaming текста, изображений и аудио: SSE, сохранённые части и собственный расчёт."
    },
    "servers": [
        {
            "url": "https://formula-ai.ru/api/v1"
        }
    ],
    "security": [
        {
            "ClientKey": []
        }
    ],
    "paths": {
        "/balance": {
            "get": {
                "operationId": "getBalance",
                "summary": "Баланс клиента",
                "responses": {
                    "200": {
                        "description": "Собственные данные клиента.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Balance"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "Ошибка доступа или параметров.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/balance/transactions": {
            "get": {
                "operationId": "listTransactions",
                "summary": "Финансовая история",
                "responses": {
                    "200": {
                        "description": "Собственные данные клиента.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Transactions"
                                }
                            }
                        }
                    },
                    "default": {
                        "description": "Ошибка доступа или параметров.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Error"
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 1000000,
                            "default": 1
                        },
                        "description": "По 50 записей, от новых к старым."
                    }
                ]
            }
        }
    },
    "components": {
        "securitySchemes": {
            "ClientKey": {
                "type": "http",
                "scheme": "bearer",
                "description": "API-ключ клиента Formula AI."
            }
        },
        "schemas": {
            "PublicId": {
                "type": "string",
                "pattern": "^[a-f0-9]{32}$"
            },
            "ErrorDetail": {
                "type": "object",
                "properties": {
                    "message": {
                        "type": "string"
                    },
                    "code": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    },
                    "param": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "message",
                    "code"
                ]
            },
            "Error": {
                "type": "object",
                "properties": {
                    "error": {
                        "$ref": "#/components/schemas/ErrorDetail"
                    },
                    "request_id": {
                        "$ref": "#/components/schemas/PublicId"
                    }
                },
                "required": [
                    "error",
                    "request_id"
                ]
            },
            "Balance": {
                "type": "object",
                "properties": {
                    "currency": {
                        "const": "RUB"
                    },
                    "balance": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "reserved": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "available": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    }
                },
                "required": [
                    "currency",
                    "balance",
                    "reserved",
                    "available"
                ]
            },
            "Transactions": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "array",
                        "maxItems": 50,
                        "items": {
                            "$ref": "#/components/schemas/Transaction"
                        }
                    },
                    "page": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 1000000
                    }
                },
                "required": [
                    "data",
                    "page"
                ]
            },
            "Transaction": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": [
                            "string",
                            "integer"
                        ],
                        "description": "Численный идентификатор. MySQL может вернуть его строкой."
                    },
                    "type": {
                        "enum": [
                            "manual_set",
                            "manual_add",
                            "manual_adjust",
                            "reserve",
                            "charge",
                            "refund",
                            "release"
                        ]
                    },
                    "amount": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "reserved_delta": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "balance_after": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "reserved_after": {
                        "type": "string",
                        "pattern": "^-?[0-9]+\\.[0-9]{7}$",
                        "description": "Рубли, точная десятичная строка с 7 знаками."
                    },
                    "request_id": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "original_operation_id": {
                        "type": [
                            "string",
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Время сервиса Europe/Moscow: YYYY-MM-DD HH:mm:ss, возможно дробная часть секунд."
                    }
                },
                "required": [
                    "id",
                    "type",
                    "amount",
                    "reserved_delta",
                    "balance_after",
                    "reserved_after",
                    "request_id",
                    "original_operation_id",
                    "created_at"
                ]
            }
        }
    },
    "externalDocs": {
        "url": "https://formula-ai.ru/docs"
    }
}

Примеры 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 сохраняйте включённой.