{"openapi":"3.1.0","info":{"title":"Gink Developer API","version":"1.0.0","description":"OpenAI-compatible. Use any OpenAI library with base_url set to this server's /v1 and a Gink API key (gink_live_...) from Settings > Developers. Requests count toward your account's daily allowance, and each key is limited per minute."},"servers":[{"url":"https://gink-server.onrender.com/v1"}],"security":[{"GinkKey":[]}],"paths":{"/chat/completions":{"post":{"summary":"Chat (OpenAI chat.completions)","operationId":"createChatCompletion","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["messages"],"properties":{"model":{"type":"string","example":"gink-crystal","description":"A model from GET /models. gink-search searches the web and lists its sources."},"messages":{"type":"array","items":{"type":"object","required":["role","content"],"properties":{"role":{"type":"string","enum":["system","user","assistant"]},"content":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"object"}}],"description":"Text, or OpenAI-style parts (text and image_url) for photos."}}}},"stream":{"type":"boolean","default":false,"description":"Server-sent events, OpenAI chunk format."},"max_tokens":{"type":"integer"},"temperature":{"type":"number"},"tools":{"type":"array","items":{"type":"object"},"description":"OpenAI function tools."}}}}}},"responses":{"200":{"description":"A chat completion (or an event stream when stream is true)."},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"This model needs Gink Pro.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Daily allowance or per-minute limit reached (see Retry-After).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/models":{"get":{"summary":"Models you can use","operationId":"listModels","responses":{"200":{"description":"OpenAI list of models.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"owned_by":{"type":"string"}}}}}}}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/images/generations":{"post":{"summary":"Create an image","operationId":"createImage","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string"}}}}}},"responses":{"200":{"description":"The image as base64 PNG.","content":{"application/json":{"schema":{"type":"object","properties":{"created":{"type":"integer"},"data":{"type":"array","items":{"type":"object","properties":{"b64_json":{"type":"string"}}}}}}}}},"401":{"description":"Missing, invalid or revoked API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Daily image allowance reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"GinkKey":{"type":"http","scheme":"bearer","bearerFormat":"gink_live_..."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"message":{"type":"string"},"type":{"type":"string"},"code":{"type":"string"}}}}}}}}