Antworten

POST /v1/responses: Text mit FTI-3, mit Anweisung, Verlauf, Bildern, PDF und eigenen Werkzeugen.

Endpunkt
POST https://api.flixtake.app/v1/responses

Der Hauptzugang zu FTI-3. Du schickst eine Eingabe, für ein Gespräch den bisherigen Verlauf, und bekommst die nächste Antwort. Die API merkt sich nichts zwischen zwei Anfragen: Für ein Gespräch schickst du jedes Mal den ganzen Verlauf mit.

Felder der Anfrage

FeldPflichtBedeutung
modelneinfti-3-sofort (Standard), fti-3-mittel oder fti-3-hoch
inputjaEin Text oder der Verlauf als Liste aus { "role": "user" | "assistant", "content": … }
instructionsneinAnweisung für die ganze Unterhaltung, zum Beispiel Rolle, Ton oder Format
max_output_tokensneinHöchstzahl der Ausgabe-Tokens, höchstens 8.192. Ohne Angabe 8.192
streamneintrue schickt die Antwort Stück für Stück, siehe Streaming
reasoningneintrue oder { "effort": "low" | "medium" | "high" }: FTI-3 Mittel und Hoch denken vor der Antwort nach
temperaturenein0 bis 1, nur bei FTI-3 Sofort. Mittel und Hoch ignorieren das Feld
stopneinEin Text oder bis zu 4 Texte, bei denen die Antwort endet
toolsneinEigene Werkzeuge, die dein Programm ausführt, siehe unten
tool_choiceneinauto (Standard), none, required oder { "name": "…" }

Andere Felder lehnt die API mit 400 und invalid_request ab, statt sie still zu übergehen.

Beispiel mit Anweisung

curl https://api.flixtake.app/v1/responses \
  -H "Authorization: Bearer $FLIXTAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fti-3-mittel",
    "instructions": "Du bist Aufnahmeleiter. Antworte als nummerierte Liste.",
    "input": "Was gehört auf die Checkliste für einen Nachtdreh im Wald?",
    "max_output_tokens": 1024
  }'

Antwort

Antwort
{
  "id": "resp_8f3a2c71d04e9b5a6c1e7d20",
  "object": "response",
  "created_at": 1792597771,
  "model": "fti-3-sofort",
  "status": "completed",
  "finish_reason": "stop",
  "output": [
    { "type": "text", "text": "Ein Leuchtturmwärter findet im Logbuch seines Vorgängers …" }
  ],
  "output_text": "Ein Leuchtturmwärter findet im Logbuch seines Vorgängers …",
  "usage": { "input_tokens": 31, "output_tokens": 58, "total_tokens": 89, "cached_input_tokens": 0 }
}
FeldBedeutung
output_textDer ganze Text der Antwort am Stück
outputAlle Teile der Antwort: text, reasoning (die Überlegung) und tool_call (ein Werkzeugaufruf)
statuscompleted oder incomplete, wenn die Antwort abgeschnitten wurde
finish_reasonstop, stop_sequence (dann steht der Text in stop_sequence), tool_call, max_output_tokens oder context_window
usageinput_tokens, output_tokens und total_tokens dieser Anfrage. Eingabe und Ausgabe zählen zum Kontingent

Verlauf

Für eine Rückfrage hängst du die letzte Antwort als assistant an und danach die neue Frage als user.

input
[
  { "role": "user", "content": "Schreib eine Logline für einen Kurzfilm über einen Leuchtturmwärter." },
  { "role": "assistant", "content": "Ein Leuchtturmwärter findet im Logbuch seines Vorgängers …" },
  { "role": "user", "content": "Jetzt als Komödie." }
]

Bilder und PDF als Eingabe

content darf statt Text eine Liste von Teilen sein. Bilder (image: PNG, JPEG, GIF, WebP) und PDF (file) gehen als Base64 in data mit media_type oder als öffentlich erreichbare url mit. Eine Anfrage darf insgesamt 32 MB groß sein.

Nachricht mit Bild
{
  "role": "user",
  "content": [
    { "type": "image", "media_type": "image/jpeg", "data": "/9j/4AAQ…" },
    { "type": "text", "text": "Welche Einstellungsgröße ist das, und was würdest du am Licht ändern?" }
  ]
}

Eigene Werkzeuge

Unter tools beschreibst du Funktionen deines Programms mit name, description und einem JSON-Schema in parameters. Braucht FTI-3 eines davon, endet die Antwort mit finish_reason: "tool_call" und einem Teil tool_call mit id, name und arguments. Dein Programm führt die Funktion aus und schickt die ganze Antwort als assistant zurück, danach das Ergebnis als Teil tool_result mit derselben call_id. Werkzeuge, die auf unserer Seite laufen würden, wie eine Websuche, gibt es über die API nicht.

tools
[
  {
    "name": "drehtag_wetter",
    "description": "Wettervorhersage für einen Drehort und ein Datum",
    "parameters": {
      "type": "object",
      "properties": {
        "ort": { "type": "string" },
        "datum": { "type": "string", "description": "YYYY-MM-DD" }
      },
      "required": ["ort", "datum"]
    }
  }
]
Ergebnis zurückschicken (input)
[
  { "role": "user", "content": "Können wir am 3. Mai in Cuxhaven draußen drehen?" },
  { "role": "assistant", "content": [
    { "type": "tool_call", "id": "call_01K8…", "name": "drehtag_wetter", "arguments": { "ort": "Cuxhaven", "datum": "2027-05-03" } }
  ] },
  { "role": "user", "content": [
    { "type": "tool_result", "call_id": "call_01K8…", "output": "12 Grad, Regen ab 14 Uhr" }
  ] }
]

Hat FTI-3 vor einem Werkzeugaufruf nachgedacht, steht in output auch ein Teil reasoning mit einem Feld state. Schick ihn unverändert mit zurück, sonst lehnt die API den Verlauf ab.