API Hop

Dokumentacja

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.

POSThttps://api.apihop.ai/v1/chat-completions

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

text
POST https://api.apihop.ai/v1/chat-completions

Uwierzytelnianie

Wszystkie żądania wymagają uwierzytelnienia tokenem Bearer.

http
Authorization: Bearer YOUR_API_KEY

Jeś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.4

Udokumentowane 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[]Wymagane

Wiadomości czatu. Każda powinna zawierać:

  • role: system, user lub assistant
  • content: treść wiadomości

Przykład:

json
  [
    {"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.0

Temperatura próbkowania. Klienci zgodni z OpenAI zwykle używają 0 do 2, ale ostateczną decyzję walidacyjną podejmuje wybrany model.

max_tokensinteger

Opcjonalna 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_tokensinteger

Opcjonalna 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: false

Czy strumieniować odpowiedź.

  • true: zwróć zdarzenia Server-Sent Events
  • false: zwróć jedną pełną odpowiedź
top_pnumberWartość domyślna: 1.0

Parametr próbkowania nucleus. Klienci zgodni z OpenAI zwykle używają 0 do 1; wybrany model przeprowadza ostateczną walidację.

frequency_penaltynumberWartość domyślna: 0

Kara za częstotliwość. Klienci zgodni z OpenAI zwykle używają -2.0 do 2.0; wybrany model przeprowadza ostateczną walidację.

presence_penaltynumberWartość domyślna: 0

Kara za obecność. Klienci zgodni z OpenAI zwykle używają -2.0 do 2.0; wybrany model przeprowadza ostateczną walidację.

stopstring | array

Sekwencja zatrzymania lub tablica takich sekwencji. Wybrany model określa akceptowaną liczbę i zachowanie.

nintegerWartość domyślna: 1

Liczba 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

json
{
  "model": "gpt-5.4",
  "messages": [
    {
      "role": "user",
      "content": "Hello, introduce yourself briefly."
    }
  ],
  "stream": false
}

Odpowiedź

idstring

Unikalny identyfikator odpowiedzi.

objectstring

Typ obiektu, zwykle chat.completion lub chat.completion.chunk dla strumieniowania.

createdinteger

Znacznik czasu utworzenia Unix.

modelstring

Identyfikator modelu zwrócony w odpowiedzi.

choicesarray

Wygenerowane warianty, w tym treść wiadomości, indeks i przyczyna zakończenia.

usageobject

Statystyki zużycia tokenów.

Przykład powodzenia

json
{
  "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:

json
{
  "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ów
  • message: czytelny dla człowieka opis błędu
  • type: api_error
  • requestId: opcjonalny identyfikator żądania do diagnozy
Status HTTPcodeZnaczenie
40010000Nieprawidłowe żądanie
40120000Brak uwierzytelnienia lub jest ono nieprawidłowe
40240000Niewystarczające środki
40320001Odmowa dostępu lub model niedostępny dla tego klucza
40430000Nie znaleziono modelu lub zasobu
40930001Konflikt żądania
42210001Błąd walidacji
42940001Przekroczono limit częstotliwości
50050003Błąd wewnętrzny
50250000Błąd dostawcy
50350001Usługa niedostępna
50450002Przekroczono 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.