{"openapi":"3.1.0","info":{"title":"Stay4S API","version":"1.0","description":"Chat completions met Stay4S-modellen (OpenAI-compatibel). 1 credit = EUR 0,01. De vooraf afgeboekte schatting is het harde maximum per aanvraag; mislukt de call, dan gaat ze terug."},"servers":[{"url":"https://stay4s.com"}],"paths":{"/api/v1/models":{"get":{"tags":["api"],"summary":"Beschikbare modellen en hun prijs","description":"OpenAI-compatibele modellenlijst.\n\nAlleen modellen die deze API kan serveren én kan prijzen; externe modellen\nverschijnen pas als hun provider is geconfigureerd en zijn als `external`\ngelabeld. Prijs is in euro per 1.000 tokens (1 credit = €0,01).","operationId":"api_v1_models_api_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/chat/completions":{"post":{"tags":["api"],"summary":"Chat completion (OpenAI-compatibel)","description":"Verstuurt een chatverzoek naar een van de beschikbare modellen. Kosten worden vooraf geschat en in credits afgeboekt (1 credit = €0,01); mislukt de call, dan gaat de schatting terug. Zie `/api/v1/models` voor modellen en prijzen.","operationId":"api_v1_chat_api_v1_chat_completions_post","requestBody":{"content":{"application/json":{"schema":{"properties":{"model":{"type":"string","description":"Model-id uit /api/v1/models.","example":"stay4s-core-v4"},"messages":{"items":{"properties":{"role":{"type":"string","enum":["system","user","assistant"]},"content":{"type":"string"}},"type":"object","required":["role","content"]},"type":"array","description":"Gesprek in OpenAI-formaat."},"max_tokens":{"type":"integer","minimum":1.0,"description":"Bovengrens voor het antwoord; bepaalt mede de vooraf afgeboekt schatting.","default":2048},"temperature":{"type":"number","maximum":2.0,"minimum":0.0,"default":0.6},"stream":{"type":"boolean","description":"Server-sent events met het antwoord.","default":false}},"type":"object","required":["model","messages"]}}},"required":true},"responses":{"200":{"description":"Antwoord in OpenAI-formaat, met `usage` en `cost` (euro).","content":{"application/json":{"schema":{"properties":{"id":{"type":"string"},"object":{"type":"string","example":"chat.completion"},"created":{"type":"integer"},"model":{"type":"string"},"choices":{"items":{"type":"object"},"type":"array"},"usage":{"properties":{"prompt_tokens":{"type":"integer"},"completion_tokens":{"type":"integer"},"total_tokens":{"type":"integer"}},"type":"object"},"cost":{"type":"number","description":"Kosten in euro."}},"type":"object"}}}},"400":{"description":"Ongeldige JSON.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}},"401":{"description":"Ongeldige API-sleutel.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}},"402":{"description":"Onvoldoende credits.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}},"429":{"description":"Rate limit overschreden.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}},"500":{"description":"Fout in de afwerking; de schatting is teruggeboekt.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}},"502":{"description":"Providerfout; de schatting is teruggeboekt.","content":{"application/json":{"schema":{"properties":{"error":{"properties":{"message":{"type":"string"},"type":{"type":"string"}},"type":"object"}},"type":"object"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Stay4S API-sleutel (sk-stay4s-…)"}}},"security":[{"bearerAuth":[]}]}