API Hop

Dokumentacja

Dokumentacja API Hop

Multimodalne OpenAI Responses

API Responses zgodne z OpenAI. Ten punkt końcowy używa input w stylu OpenAI i obsługuje tekst, publiczne adresy URL obrazów, pliki PDF na wejściu, wywołania narzędzi, opcje rozumowania i parametry strumieniowania.

POSThttps://api.apihop.ai/openai/responses

API Responses zgodne z OpenAI. Ten punkt końcowy używa input w stylu OpenAI i obsługuje tekst, publiczne adresy URL obrazów, pliki PDF na wejściu, wywołania narzędzi, opcje rozumowania i parametry strumieniowania.

text
POST https://api.apihop.ai/openai/responses

Uwierzytelnianie

Wszystkie żądania wymagają uwierzytelniania tokenem Bearer.

http
Authorization: Bearer YOUR_API_KEY

Treść żądania

modelstringWymaganeWartość domyślna: gpt-5.4

Obecnie aktywne modele obsługujące Responses:

  • gpt-5.4
  • gpt-5.5
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-6-astra

Modele widoczne dla bieżącego klucza API znajdziesz w katalogu modeli.

inputstring | object[]

Treść wejściowa. Wymagana, chyba że podano niepuste previous_response_id. Pominięcie obu pól lub użycie nieprawidłowego typu wejścia zwraca 400 przed rozliczeniem.

Obsługiwane formy:

  • Ciąg znaków, równoważny jednemu tekstowemu wejściu user.
  • Tablica elementów wejściowych dla historii rozmowy, wejścia multimodalnego i wyników wywołań narzędzi.

Każdy obiekt w tablicy wejściowej może zawierać następujące pola:

typestring

Typ elementu wejściowego.

Typowe wartości:

  • message: wiadomość wejściowa.
  • function_call_output: wynik wywołania narzędzia funkcyjnego.
rolestring

Rola przy type=message.

Typowe wartości:

  • developer
  • system
  • user
  • assistant
contentstring | object[]

Treść wiadomości.

W żądaniach multimodalnych używaj tablicy bloków treści. Bloki treści obsługują:

typestring

Typ bloku treści.

Obecnie obsługiwane:

  • input_text
  • input_image
  • input_file
textstring

Treść tekstowa przy type=input_text.

image_urlstring

Publiczny adres URL obrazu przy type=input_image.

Obsługiwane są tylko publicznie dostępne adresy URL obrazów http:// lub https://. Adresy Data URL Base64, takie jak data:image/...;base64,..., nie są obsługiwane.

detailstringWartość domyślna: auto

Poziom szczegółowości obrazu przy type=input_image.

Typowe wartości:

  • auto
  • low
  • high
file_datastring

Adres Data URL zawartości pliku przy type=input_file. Pliki PDF mogą używać data:application/pdf;base64,....

filenamestring

Nazwa pliku przy type=input_file.

instructionsstring

Instrukcje systemowe lub deweloperskie wstawiane do kontekstu modelu.

max_output_tokensinteger

Opcjonalna maksymalna liczba tokenów wyjściowych jako dodatnia liczba całkowita. Pomiń to pole, aby użyć wartości domyślnej dostawcy dla wybranego modelu. W zależności od modelu limit może obejmować zarówno tokeny rozumowania, jak i końcowy tekst. Mały limit może uciąć odpowiedź lub wyczerpać się przed końcowym tekstem; jego zwiększenie może podnieść koszt.

streambooleanWartość domyślna: false

Czy strumieniować odpowiedź.

  • false: zwraca jedną kompletną odpowiedź
  • true: zwraca zdarzenia SSE w stylu OpenAI Responses
temperaturenumberWartość domyślna: 1.0

Temperatura próbkowania, zwykle od 0 do 2.

top_pnumberWartość domyślna: 1.0

Parametr próbkowania jądrowego, zwykle od 0 do 1.

textobject

Konfiguracja tekstu wyjściowego.

text.formatobject

Konfiguracja formatu tekstu, na przykład { "type": "text" } lub schemat JSON.

text.verbositystring

Szczegółowość wyniku, na przykład low, medium lub high. Obsługa zależy od wybranego modelu.

toolsobject[]

Definicje narzędzi. Dostępność zależy od wybranego modelu i dostępnych funkcji.

tool_choicestring | object

Zasady wyboru narzędzi.

parallel_tool_callsboolean

Czy dozwolone są równoległe wywołania narzędzi.

reasoningobject

Opcje dotyczące rozumowania.

includestring[]

Dodatkowe pola do uwzględnienia w odpowiedzi.

prompt_cache_keystring

Klucz pamięci podręcznej promptu do jej ponownego użycia.

prompt_cache_retentionstring

Zasady przechowywania pamięci podręcznej promptu. Obsługiwane wartości zależą od wybranego modelu i dostępnych funkcji.

safety_identifierstring

Stały identyfikator użytkownika końcowego dla mechanizmów bezpieczeństwa.

storeboolean

Czy stan odpowiedzi może być przechowywany.

Różnice parametrów modeli

  • Natywne przekazywanie Responses zgodne z OpenAI zachowuje top_p w żądaniu do dostawcy; walidacja i zachowanie próbkowania zależą od wybranego modelu i dostawcy. Kontrole z 2026-09-26 zaakceptowały top_p: 0.9 dla gpt-5.5, gpt-5.6-sol i gpt-5.6-terra. Akceptacja i przekazanie nie dowodzą wpływu na próbkowanie ani nie gwarantują obsługi innych wartości, modeli lub późniejszych żądań. Zacznij od minimalnego żądania.
  • Obsługa opisana na tej stronie dotyczy tylko zwykłego punktu końcowego /openai/responses. Nie oznacza, że ten sam model obsługuje /openai/responses/compact, WebSocket lub stanowe previous_response_id.
  • Pięć wymienionych wyżej modeli GPT nie ma obecnie zweryfikowanego kanału Compact. Żądania Compact są odrzucane przed rozliczeniem, gdy nie ma jawnie włączonego kanału. Zwykłe Responses i Responses WebSocket pozostają dostępne.

Przykłady żądań

Poniższe przykłady podają input. Kontynuacja może pominąć input, gdy podaje prawidłowe previous_response_id, a wybrany kanał obsługuje kontynuację ze stanem. Identyfikator odpowiedzi nie włącza tej funkcji w kanale bez jej obsługi. Wyniki narzędzi pozostają prawidłowymi elementami wejściowymi, w tym function_call_output.

Tekst

json
{
  "model": "gpt-5.4",
  "input": "Hello, introduce yourself in one sentence."
}

Parametry w stylu Codex CLI

json
{
  "model": "gpt-5.5",
  "input": "Reply with READY only.",
  "reasoning": {
    "effort": "xhigh"
  },
  "store": false,
  "text": {
    "verbosity": "low"
  },
  "stream": true
}

Rozumienie obrazów

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "What is in this image?"
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/cat.png",
          "detail": "high"
        }
      ]
    }
  ]
}

Plik na wejściu

Użyj file_data wraz z filename, aby przesłać zawartość PDF. file_data musi być kompletnym adresem Data URL.

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Summarize the key points in this PDF."
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "report.pdf"
        }
      ]
    }
  ]
}

Obraz i plik na wejściu

json
{
  "model": "gpt-5.4",
  "input": [
    {
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Give three conclusions based on the image and attachment."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/chart.png",
          "detail": "high"
        },
        {
          "type": "input_file",
          "file_data": "data:application/pdf;base64,JVBERi0xLjQKJc...",
          "filename": "notes.pdf"
        }
      ]
    }
  ]
}

Strumieniowanie wyniku

json
{
  "model": "gpt-5.4",
  "stream": true,
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Explain this diagram step by step."
        },
        {
          "type": "input_image",
          "image_url": "https://example.com/diagram.png"
        }
      ]
    }
  ]
}

Odpowiedź

Odpowiedzi bez strumieniowania mają format OpenAI Responses. Rzeczywiste pola mogą zależeć od możliwości wybranego modelu.

idstring

Unikalny identyfikator odpowiedzi.

objectstring

Typ obiektu odpowiedzi, zwykle response.

created_atinteger

Znacznik czasu utworzenia.

modelstring

Faktycznie użyty model.

outputobject[]

Lista elementów wyjściowych. Typowe elementy obejmują message, function_call i wyniki związane z narzędziami.

usageobject

Statystyki zużycia tokenów, takie jak input_tokens, output_tokens i total_tokens.

Przykład powodzenia

json
{
  "id": "resp_123",
  "object": "response",
  "created_at": 1766534400,
  "model": "gpt-5.4",
  "output": [
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "text": "The image shows a cat, and the attachment is a document about pet care."
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 128,
    "output_tokens": 42,
    "total_tokens": 170
  }
}

Odpowiedź strumieniowa

Przy stream=true punkt końcowy zwraca zdarzenia Server-Sent Events.

text
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"The image"}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_123"}}

Odczytuj zdarzenia do response.completed lub zamknięcia połączenia.

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 generowane przez platformę używają poniższych płaskich pól zamiast opakowania error. Niektóre błędy dostawcy mogą zachować oryginalną strukturę; błędy w już rozpoczętym strumieniu SSE nie mają formatu tego przykładu odpowiedzi HTTP.

json
{
  "code": 40000,
  "message": "Insufficient credit. Required: 30000, Available: 20000",
  "type": "api_error"
}

Uwagi

  • Punkt końcowy Responses używa input, a nie messages. Jeśli Twój klient wysyła tylko messages, użyj /openai/v1/chat/completions.
  • Wejście obrazu używa input_image; image_url musi być publicznym adresem URL http:// lub https://. Adresy Data URL Base64 nie są obsługiwane dla obrazów.
  • Wejście pliku używa input_file. Dla plików PDF użyj file_data wraz z filename; file_data powinno być kompletnym adresem URL data:application/pdf;base64,....
  • Wejście/wyjście dźwięku, narzędzia generowania obrazów, wyszukiwanie plików i inne zaawansowane możliwości zależą od wybranego modelu i dostępnych funkcji.
  • Pola wymienione na tej stronie tworzą obecny publiczny kontrakt żądania Responses; nie zakładaj dostępności pól niewymienionych.
  • /openai/responses jest zalecaną publiczną ścieżką.
  • /v1/responses używa tego samego publicznego kontraktu żądań i odpowiedzi.
  • /compat/v1/responses używa tego samego publicznego kontraktu żądań i odpowiedzi.
  • /openai/v1/responses używa tego samego publicznego kontraktu żądań i odpowiedzi.