Dokumentacja API Hop
Wspólny Chat Completions
Ujednolicone API czatu do przełączania modeli tekstowych przez parametr model. Format żądania jest zgodny z OpenAI Chat Completions.
https://api.apihop.ai/v1/chat-completionsUjednolicone API czatu do przełączania modeli tekstowych przez parametr model. Format żądania jest zgodny z OpenAI Chat Completions.
Claude Sonnet 4.6 (claude-sonnet-4-6) jest obsługiwany przez dostawcę, ale obecnie nie jest opublikowany w API Hop. Nie jest aktywnym domyślnym modelem integracji. Przed wywołaniem dowolnego modelu potwierdź dostęp we własnej odpowiedzi GET https://api.apihop.ai/v1/models.
Ten punkt końcowy domyślnie zwraca jedną pełną odpowiedź JSON. Jawnie ustaw stream: true, gdy potrzebujesz strumieniowania SSE.
POST https://api.apihop.ai/v1/chat-completionsUwierzytelnianie
Wszystkie żądania wymagają uwierzytelnienia tokenem Bearer.
Authorization: Bearer YOUR_API_KEYJeśli uwierzytelnienie zawodzi, sprawdź:
- Czy klucz API jest poprawny
- Czy klucz jest ważny dla tego bazowego adresu URL API
- Czy nazwa nagłówka żądania jest poprawna
- Czy proxy nie przepisuje nagłówka uwierzytelnienia
Treść żądania
modelstringWymaganeWartość domyślna: gpt-5.4Udokumentowane ID modeli tekstowych (potwierdź dostęp przez GET https://api.apihop.ai/v1/models):
- OpenAI:
gpt-5.4,gpt-5.5,gpt-5.6-sol,gpt-5.6-terra,gpt-6-astra - Anthropic:
claude-fable-5,claude-fable-5-1,claude-opus-4-6,claude-opus-4-7,claude-opus-4-8,claude-opus-5,claude-opus-5-5,claude-sonnet-5,claude-sonnet-5-5 - DeepSeek:
deepseek-v4-flash,deepseek-v4-pro,deepseek-v4.1-flash
(V4.1 Flash to odrębny identyfikator modelu, dostępny tylko po wdrożeniu i włączeniu; sprawdź GET https://api.apihop.ai/v1/models).
- Gemini:
gemini-3.6-flash,gemini-3.7-flash,gemini-3.8-flash,gemini-3.5-flash-lite,gemini-4-argon(po wdrożeniu i włączeniu) - Kimi:
kimi-k3 - MiniMax:
minimax-m3
Zobacz katalog modeli, aby poznać pełną listę i modele widoczne dla bieżącego klucza API. Używaj własnej odpowiedzi GET https://api.apihop.ai/v1/models jako bieżącego źródła dostępności. Przewodniki DeepSeek, Gemini, Kimi i MiniMax zawierają uwagi do wyboru i przykłady właściwe dla poszczególnych rodzin.
messagesobject[]WymaganeWiadomości czatu. Każda powinna zawierać:
role:system,userlubassistantcontent: treść wiadomości
Przykład:
[
{"role": "system", "content": "You are a helpful Python tutor."},
{"role": "user", "content": "How should I learn programming?"}
]Ograniczenia próbkowania poszczególnych modeli: gpt-6-astra nie akceptuje starszych temperature, top_p ani top_logprobs; pomiń te pola, nawet jeśli starszy klient je dołącza. Plac zabaw GPT-6 Astra w API Hop także ukrywa starsze kontrolki próbkowania i kar. claude-sonnet-5 odrzucił top_p w udokumentowanej ponownej kontroli integracji, więc pomiń je również dla tego modelu. Przekazanie opcjonalnego pola przez proxy nie dowodzi obsługi przez wybrany model dostawcy.
temperaturenumberWartość domyślna: 1.0Temperatura próbkowania. Klienci zgodni z OpenAI zwykle używają 0 do 2, ale ostateczną decyzję walidacyjną podejmuje wybrany model.
max_tokensintegerOpcjonalna maksymalna liczba tokenów wyjściowych jako dodatnia liczba całkowita. Pomiń pole, aby użyć wartości domyślnej dostawcy dla wybranego modelu; wartości domyślne i maksymalne limity zależą od modelu i konfiguracji dostawcy.
Zależnie od modelu budżet może obejmować tokeny rozumowania oraz końcowy tekst. Mały budżet może spowodować finish_reason: "length", uciąć odpowiedź lub wyczerpać się przed końcowym tekstem. Zwiększenie może podnieść koszt.
max_completion_tokensintegerOpcjonalna alternatywa zgodności dla max_tokens, z tymi samymi uwagami do budżetu. Model może akceptować tylko jedno z tych pól, więc przy zmianie modelu zacznij od minimalnej treści. Pomiń oba, aby użyć wartości domyślnej dostawcy.
streambooleanWartość domyślna: falseCzy strumieniować odpowiedź.
true: zwróć zdarzenia Server-Sent Eventsfalse: zwróć jedną pełną odpowiedź
top_pnumberWartość domyślna: 1.0Parametr próbkowania nucleus. Klienci zgodni z OpenAI zwykle używają 0 do 1; wybrany model przeprowadza ostateczną walidację.
frequency_penaltynumberWartość domyślna: 0Kara za częstotliwość. Klienci zgodni z OpenAI zwykle używają -2.0 do 2.0; wybrany model przeprowadza ostateczną walidację.
presence_penaltynumberWartość domyślna: 0Kara za obecność. Klienci zgodni z OpenAI zwykle używają -2.0 do 2.0; wybrany model przeprowadza ostateczną walidację.
stopstring | arraySekwencja zatrzymania lub tablica takich sekwencji. Wybrany model określa akceptowaną liczbę i zachowanie.
nintegerWartość domyślna: 1Liczba odpowiedzi do wygenerowania. Użyj liczby, takiej jak 1, a nie ciągu w cudzysłowie.
Różnice parametrów modeli
Bieżące modele tekstowe obsługują minimalne żądania Chat ze strumieniowaniem i bez niego, ale akceptacja i skutki opcjonalnych parametrów zależą od wybranego modelu i jego implementacji zgodności.
Ostatnia ponowna kontrola z 2026-09-26 zaakceptowała claude-fable-5 z temperature: 0 i zwróciła tekst. Ta sama kontrola odrzuciła claude-sonnet-5 z top_p: 0.9 z HTTP 400 i top_p is deprecated. Pomiń top_p dla tego modelu. Akceptacja nie dowodzi wpływu na próbkowanie ani nie gwarantuje działania innych modeli lub późniejszych żądań; nie zakładaj obsługi wszystkich parametrów próbkowania.
Kontrole OpenAI z 2026-09-26 zaakceptowały stop dla gpt-5.6-sol i gpt-5.6-terra. Akceptacja parametrów może się zmieniać u dostawcy i nie dowodzi skuteczności sekwencji zatrzymania.
Natywne przekazywanie Chat zgodne z OpenAI zachowuje top_p i stop w żądaniu do dostawcy. Trasa konwertująca Chat na Responses zachowuje top_p, ale nie przekazuje stop. Przekazanie pola nie dowodzi obsługi przez dostawcę ani jego efektu; żadne z tych pól nie ma gwarancji dla wszystkich tras platformy.
Przy zmianie modelu zacznij od minimalnego żądania, a następnie osobno zweryfikuj próbkowanie, sekwencje zatrzymania i zaawansowane parametry narzędzi. Dla sekwencji zatrzymania sprawdź rzeczywisty tekst i przyczynę zatrzymania, a nie tylko status HTTP. HTTP 200 nie dowodzi efektu próbkowania. Budżety wyniku muszą obejmować zarówno myślenie modelu, jak i jego końcowy tekst.
Przykład żądania
{
"model": "gpt-5.4",
"messages": [
{
"role": "user",
"content": "Hello, introduce yourself briefly."
}
],
"stream": false
}Odpowiedź
idstringUnikalny identyfikator odpowiedzi.
objectstringTyp obiektu, zwykle chat.completion lub chat.completion.chunk dla strumieniowania.
createdintegerZnacznik czasu utworzenia Unix.
modelstringIdentyfikator modelu zwrócony w odpowiedzi.
choicesarrayWygenerowane warianty, w tym treść wiadomości, indeks i przyczyna zakończenia.
usageobjectStatystyki zużycia tokenów.
Przykład powodzenia
{
"id": "chatcmpl-9876543210",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I am an AI assistant that can help with writing, coding, and analysis."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 28,
"completion_tokens": 42,
"total_tokens": 70
}
}Odpowiedź błędu
Zobacz kody błędów i diagnozowanie, aby poznać pełny wykaz kodów, różnice protokołów i kroki diagnostyczne.
Błędy HTTP Chat Completions używają płaskiej treści JSON, w tym błędy HTTP dostawcy zwrócone przed rozpoczęciem strumienia SSE. Na przykład HTTP 402 zwraca:
{
"code": 40000,
"message": "Insufficient credit. Required: 30000, Available: 20000",
"type": "api_error"
}code: numeryczny kod błędu platformy, odrębny od statusu HTTP i niebędący ciągiem znakówmessage: czytelny dla człowieka opis błędutype:api_errorrequestId: opcjonalny identyfikator żądania do diagnozy
| Status HTTP | code | Znaczenie |
|---|---|---|
| 400 | 10000 | Nieprawidłowe żądanie |
| 401 | 20000 | Brak uwierzytelnienia lub jest ono nieprawidłowe |
| 402 | 40000 | Niewystarczające środki |
| 403 | 20001 | Odmowa dostępu lub model niedostępny dla tego klucza |
| 404 | 30000 | Nie znaleziono modelu lub zasobu |
| 409 | 30001 | Konflikt żądania |
| 422 | 10001 | Błąd walidacji |
| 429 | 40001 | Przekroczono limit częstotliwości |
| 500 | 50003 | Błąd wewnętrzny |
| 502 | 50000 | Błąd dostawcy |
| 503 | 50001 | Usługa niedostępna |
| 504 | 50002 | Przekroczono limit czasu bramy |
Najpierw sprawdź status HTTP, aby określić powodzenie żądania, a następnie porównaj numeryczny code dla obsługi właściwej aplikacji. Nie porównuj code z ciągami takimi jak "400", nie zakładaj równości ze statusem HTTP ani nie analizuj message jako stabilnego identyfikatora błędu. Brakujące lub błędnie typowane messages są odrzucane z HTTP 400 i code: 10000 przed wywołaniem dostawcy.
Ten format błędu dotyczy odpowiedzi HTTP Chat Completions, a nie błędów wewnątrz już rozpoczętego strumienia SSE lub innych protokołów API. Katalog modeli i punkty końcowe natywnych protokołów mają własne udokumentowane formaty błędów.