Referencja API
API działa w formacie OpenAI pod https://ai.geraikita.com/v1 i w formacie Anthropic pod https://ai.geraikita.com. Wszystkie body zapytań i odpowiedzi są w formacie JSON (UTF-8).
| Endpoint | Funkcja |
|---|---|
| POST /v1/chat/completions | Chat w formacie OpenAI (ze streamem i bez) |
| POST /v1/messages | Messages w formacie Anthropic (ze streamem i bez) |
| POST /v1/messages/count_tokens | Liczenie tokenów promptu w formacie Anthropic — bezpłatne |
| GET /v1/models | Lista dostępnych modeli |
| POST /v1/images/generations | Generuje obrazy z promptu tekstowego, rozliczane za obraz — zobacz Generowanie obrazów |
/v1/responses, /v1/embeddings) nie są jeszcze obsługiwane.Chat completions (OpenAI)
https://ai.geraikita.com/v1/chat/completionsGeneruje odpowiedź na podstawie listy wiadomości. Nagłówki: Authorization: Bearer gk-… i Content-Type: application/json.
Body zapytania
| Parametr | Typ | Opis |
|---|---|---|
model | string | Wymagany. Id modelu dokładnie takie jak na liście modeli, bez prefiksu. |
messages | array | Wymagany. Uporządkowana tablica wiadomości; każda wiadomość zawiera role i content. Co najmniej jedna wiadomość. |
stream | boolean | true, aby otrzymywać odpowiedź stopniowo przez Server-Sent Events. |
max_tokens | integer | Limit tokenów odpowiedzi. Jeśli saldo nie wystarcza na żądaną wartość, serwer może ją automatycznie obniżyć. |
temperature, top_p, stop | — | Przekazywane do modelu bez zmian. Obsługa i zakres wartości zależą od modelu. |
tools, tool_choice | array / object | Wywoływanie funkcji (tool calling) w formacie OpenAI, przekazywane do modeli, które je obsługują. |
Przykładowe zapytanie
curl https://ai.geraikita.com/v1/chat/completions \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Cześć!"}]
}'Przykładowa odpowiedź
{
"id": "chatcmpl-…",
"object": "chat.completion",
"model": "claude-sonnet-5",
"choices": [
{
"index": 0,
"message": { "role": "assistant", "content": "…" },
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 12, "completion_tokens": 9, "total_tokens": 21 }
}Obiekt usage zawiera liczbę tokenów, na podstawie której naliczana jest opłata — zobacz Cennik i rozliczenia.
Messages (Anthropic)
https://ai.geraikita.com/v1/messagesNatywny endpoint Anthropic dla SDK Anthropic i Claude Code CLI. Base URL w kliencie = https://ai.geraikita.com (bez /v1).
Nagłówki
| Nagłówek | Wartość | Opis |
|---|---|---|
| x-api-key | gk-… | Twój klucz API gk- (akceptowany jest też Authorization: Bearer). |
| anthropic-version | 2023-06-01 | Wersja API Anthropic; wysyłana automatycznie przez SDK. |
| content-type | application/json | — |
Body zapytania
| Parametr | Typ | Opis |
|---|---|---|
model | string | Wymagany. Id modelu dokładnie takie jak na liście modeli, bez prefiksu. |
messages | array | Wymagany. Tablica wiadomości w formacie Anthropic, co najmniej jedna wiadomość. |
max_tokens | integer | Limit tokenów odpowiedzi (wymagany w formacie Anthropic). |
system | string / array | Instrukcja systemowa (opcjonalna). |
stream | boolean | true, aby otrzymywać odpowiedź stopniowo przez Server-Sent Events. |
Przykładowe zapytanie
curl https://ai.geraikita.com/v1/messages \
-H "x-api-key: gk-xxxxxxxx" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Cześć!"}]
}'Chcesz policzyć tokeny przed wysłaniem? POST https://ai.geraikita.com/v1/messages/count_tokens przyjmuje to samo body i jest bezpłatne.
Lista modeli
https://ai.geraikita.com/v1/modelsZwraca listę id modeli, które można podać w polu model. Przy wywołaniu kluczem ograniczonym allowlistą widoczne są tylko dozwolone modele. Z nagłówkiem x-api-key lub anthropic-version odpowiedź ma format Anthropic.
curl https://ai.geraikita.com/v1/models \
-H "Authorization: Bearer gk-xxxxxxxx"Streaming (SSE)
Przy "stream": true odpowiedź jest wysyłana jako text/event-stream. Serwer od razu wysyła nagłówki, a w czasie oczekiwania co 10 sekund linię komentarza keepalive : ka, aby połączenie nie zostało uznane za martwe. Ustaw całkowity timeout aplikacji na co najmniej 300 sekund.
data: {"choices":[{"index":0,"delta":{"content":"Ha"}}]}
: ka
data: {"choices":[{"index":0,"delta":{"content":"lo!"}}]}
data: [DONE]- Format OpenAI: każdy fragment to linia
data:z JSON-em zawierającymchoices[].delta, a strumień kończy się nadata: [DONE]. - Format Anthropic: zdarzenia
message_start,content_block_delta, …,message_stop, tak jak w API Anthropic. - Ignoruj linie zaczynające się od dwukropka (
:) — to keepalive, a nie dane. Przewodniki dla poszczególnych narzędzi znajdziesz w Ustawieniach narzędzi agentowych.