{
  "openapi": "3.0.3",
  "info": {
    "title": "Lanquora Translation API",
    "version": "1.0.0",
    "description": "Free key-authenticated translation. Built with PLaMo. Conversion outputs are subject to the PLaMo Community License, including terms applying to models trained on outputs. See /legal/plamo-license and docs/MODEL-LICENSE.md."
  },
  "servers": [
    {
      "url": "https://api.lanquora.com"
    },
    {
      "url": "http://127.0.0.1:8082",
      "description": "Isolated local staging only"
    }
  ],
  "paths": {
    "/health": {
      "get": {
        "operationId": "health",
        "description": "Liveness; always {\"status\":\"ok\"}. No inference.",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/ready": {
      "get": {
        "operationId": "ready",
        "description": "Cached backend health (3 seconds), license/config/storage/capacity check. No inference. 503 when unavailable.",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/v1/translate": {
      "post": {
        "operationId": "translate",
        "description": "Built with PLaMo. Bearer keys only. Optional model defaults to current PLaMo. Portuguese is experimental and has known wrong-language failures. Quota charged at dispatch including upstream failures; retries are separate attempts. No idempotency or translation cache.",
        "security": [
          {
            "apiKey": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Translation"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslationRequest"
              }
            }
          }
        }
      }
    },
    "/v1/models": {
      "get": {
        "operationId": "models",
        "description": "",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "models": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Model"
                      }
                    }
                  },
                  "required": [
                    "models"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/v1/languages": {
      "get": {
        "operationId": "languages",
        "description": "Capability is separate from quality and model availability. Unlisted directions are unavailable, with no automatic pivoting.",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Languages"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/auth/csrf": {
      "get": {
        "operationId": "csrfToken",
        "description": "Sets CSRF cookie. Send returned token in X-CSRFToken for account POSTs, including signin/signup/recovery. Fetch again after signin.",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "csrf_token": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "csrf_token"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/auth/demo-translate": {
      "post": {
        "operationId": "demoTranslate",
        "description": "Website translator. No key/login; exact configured Origin and CSRF cookie/header required. stream:true returns SSE start/delta/done/error events. Up to 4000 Unicode code points; bounded sentence sections, 180s total deadline. Shared weighted minute budget 60 units per client bucket and globally: <=500 chars and <=100 words costs 1; <=1500 chars and <=300 words costs 5; larger costs 20 (60 short, 12 medium, 3 large/minute). No daily cap. Valid attempts count before queue admission, including failures. Same single inference slot. Before streaming errors use HTTP status/JSON; midstream errors use error event, no done, discard partial output. See language discovery for allowlisted pairs and experimental status.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Translation"
                }
              },
              "text/event-stream": {
                "schema": {
                  "type": "string",
                  "description": "SSE: start {source_language,target_language}; delta {text}; done {source_language,target_language}; error {error:{code},retry?:seconds}. A translation is complete only after done."
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DemoTranslationRequest"
              }
            }
          }
        }
      }
    },
    "/auth/config": {
      "get": {
        "operationId": "authConfiguration",
        "description": "",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "registration_open": {
                      "type": "boolean"
                    },
                    "email_delivery_available": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "registration_open",
                    "email_delivery_available"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/test/": {
      "get": {
        "operationId": "retiredPlayground",
        "description": "Retired debug interface. Redirects to the account page on lanquora.com.",
        "security": [],
        "responses": {
          "302": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "deprecated": true
      }
    },
    "/auth/signup": {
      "post": {
        "operationId": "signup",
        "description": "Registration gated by configuration. Generic accepted response. Verification delivered by email.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "202": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "maxLength": 1024,
                    "minLength": 12
                  }
                },
                "required": [
                  "email",
                  "password"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/signin": {
      "post": {
        "operationId": "signin",
        "description": "Django session login. Session cookie is separate from API keys. Valid credentials for unverified users may sign in but cannot issue usable keys.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "email_verified": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "status",
                    "email_verified"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  },
                  "password": {
                    "type": "string",
                    "maxLength": 1024,
                    "minLength": 12
                  }
                },
                "required": [
                  "email",
                  "password"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/signout": {
      "post": {
        "operationId": "signout",
        "description": "",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/verify": {
      "post": {
        "operationId": "verifyEmail",
        "description": "Single-use Django verification token; expires in 1 hour.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uid": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "token": {
                    "type": "string",
                    "maxLength": 200
                  }
                },
                "required": [
                  "uid",
                  "token"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/resend-verification": {
      "post": {
        "operationId": "resendVerification",
        "description": "Generic accepted response. Email only; no token disclosure in HTTP.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "202": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/recover": {
      "post": {
        "operationId": "requestRecovery",
        "description": "Generic accepted response. Email only; no token disclosure in HTTP.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "202": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  }
                },
                "required": [
                  "email"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/reset": {
      "post": {
        "operationId": "resetPassword",
        "description": "Django recovery token, one hour. Password reset invalidates existing login sessions and revokes all API keys.",
        "security": [
          {
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uid": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "token": {
                    "type": "string",
                    "maxLength": 200
                  },
                  "password": {
                    "type": "string",
                    "maxLength": 1024,
                    "minLength": 12
                  }
                },
                "required": [
                  "uid",
                  "token",
                  "password"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/quota-requests": {
      "get": {
        "operationId": "quotaRequestHistory",
        "description": "",
        "security": [
          {
            "sessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "requests": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/QuotaRequest"
                      }
                    }
                  },
                  "required": [
                    "requests"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      },
      "post": {
        "operationId": "requestQuotaIncrease",
        "description": "Verified account. Request a higher daily allowance at no charge. One pending request per account.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaRequest"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "requested": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 1000000
                  },
                  "acknowledged": {
                    "type": "boolean",
                    "enum": [
                      true
                    ]
                  }
                },
                "required": [
                  "requested",
                  "acknowledged"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/quota-review": {
      "get": {
        "operationId": "pendingQuotaReviews",
        "description": "Verified staff only. Oldest 50 pending requests.",
        "security": [
          {
            "sessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "requests": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "requested": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "pending",
                              "approved",
                              "declined"
                            ]
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "reviewed_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true
                          },
                          "email": {
                            "type": "string"
                          },
                          "current_limit": {
                            "type": "integer",
                            "minimum": 0
                          }
                        },
                        "required": [
                          "id",
                          "requested",
                          "status",
                          "created_at",
                          "reviewed_at",
                          "email",
                          "current_limit"
                        ],
                        "additionalProperties": false
                      }
                    }
                  },
                  "required": [
                    "requests"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      },
      "post": {
        "operationId": "decideQuotaRequest",
        "description": "Verified staff only. Approval raises the account and its active managed keys in one transaction.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotaRequest"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "decision": {
                    "type": "string",
                    "enum": [
                      "approved",
                      "declined"
                    ]
                  }
                },
                "required": [
                  "id",
                  "decision"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/auth/account": {
      "get": {
        "operationId": "accountStatus",
        "description": "",
        "security": [
          {
            "sessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Account"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/auth/change-password": {
      "post": {
        "operationId": "changePassword",
        "description": "Changes password after checking the current password. Keeps this session, invalidates other sessions, and preserves API keys.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "current_password": {
                    "type": "string",
                    "maxLength": 1024
                  },
                  "password": {
                    "type": "string",
                    "maxLength": 1024,
                    "minLength": 12
                  }
                },
                "required": [
                  "current_password",
                  "password"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/keys": {
      "get": {
        "operationId": "listKeys",
        "description": "",
        "security": [
          {
            "sessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KeyList"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "100 records/page. Follow next_offset; secrets never returned."
          }
        ]
      },
      "post": {
        "operationId": "createKey",
        "description": "Active verified account required. Full secret shown once.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssuedKey"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 80,
                    "minLength": 1
                  }
                },
                "required": [
                  "name"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/keys/{key_id}/revoke": {
      "post": {
        "operationId": "revokeKey",
        "description": "Immediate for new/queued dispatches. Idempotent. Does not cancel an already dispatched inference.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "key": {
                      "$ref": "#/components/schemas/Key"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {},
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "key_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/v1/keys/{key_id}/rotate": {
      "post": {
        "operationId": "rotateKey",
        "description": "Old key expires after overlap (default 1 hour, max 24 hours). Old/new share key allowance. Account allowance never resets.",
        "security": [
          {
            "sessionCookie": [],
            "csrfHeader": []
          }
        ],
        "responses": {
          "201": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotatedKey"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "overlap_seconds": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 86400,
                    "default": 3600
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "parameters": [
          {
            "name": "key_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/v1/usage": {
      "get": {
        "operationId": "currentUsage",
        "description": "UTC day. Keys in a rotation family show the same shared usage. Latest 100 keys included; listKeys gives full paginated history.",
        "security": [
          {
            "sessionCookie": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Usage"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/openapi.json": {
      "get": {
        "operationId": "openapi",
        "description": "",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    },
    "/legal/plamo-license": {
      "get": {
        "operationId": "plamoLicense",
        "description": "",
        "security": [],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "X-Request-ID": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/APIError"
          },
          "401": {
            "$ref": "#/components/responses/APIError"
          },
          "403": {
            "$ref": "#/components/responses/APIError"
          },
          "404": {
            "$ref": "#/components/responses/APIError"
          },
          "405": {
            "$ref": "#/components/responses/APIError"
          },
          "408": {
            "$ref": "#/components/responses/APIError"
          },
          "409": {
            "$ref": "#/components/responses/APIError"
          },
          "413": {
            "$ref": "#/components/responses/APIError"
          },
          "415": {
            "$ref": "#/components/responses/APIError"
          },
          "422": {
            "$ref": "#/components/responses/APIError"
          },
          "429": {
            "$ref": "#/components/responses/APIError"
          },
          "500": {
            "$ref": "#/components/responses/APIError"
          },
          "502": {
            "$ref": "#/components/responses/APIError"
          },
          "503": {
            "$ref": "#/components/responses/APIError"
          },
          "504": {
            "$ref": "#/components/responses/APIError"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "unauthorized",
                  "expected_json",
                  "invalid_content_length",
                  "invalid_request",
                  "body_too_large",
                  "text_too_large",
                  "unsupported_language_pair",
                  "unsupported_model",
                  "rate_limited",
                  "quota_exceeded",
                  "queue_full",
                  "queue_timeout",
                  "model_unavailable",
                  "inference_failed",
                  "invalid_inference_response",
                  "incomplete_translation",
                  "inference_timeout",
                  "not_ready",
                  "storage_unavailable",
                  "internal_error",
                  "not_found",
                  "method_not_allowed",
                  "login_required",
                  "account_suspended",
                  "account_unverified_or_suspended",
                  "weak_password",
                  "invalid_credentials",
                  "invalid_or_expired_token",
                  "csrf_failed",
                  "registration_closed",
                  "origin_not_allowed",
                  "email_unavailable",
                  "key_limit",
                  "key_inactive",
                  "request_timeout",
                  "gateway_unavailable",
                  "staff_required",
                  "quota_request_pending",
                  "quota_request_reviewed",
                  "quota_request_too_low"
                ]
              }
            },
            "required": [
              "code"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": false
      },
      "Status": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "additionalProperties": false
      },
      "TranslationRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 768,
            "description": "Nonempty; at most 768 UTF-8 bytes. No NUL or PLaMo control tokens."
          },
          "source_language": {
            "type": "string",
            "enum": [
              "en",
              "fr",
              "es",
              "ar",
              "de",
              "ja",
              "pl",
              "it",
              "nl",
              "ru",
              "ko",
              "zh-hans"
            ]
          },
          "target_language": {
            "type": "string",
            "enum": [
              "en",
              "fr",
              "es",
              "ar",
              "de",
              "ja",
              "pl",
              "it",
              "nl",
              "ru",
              "ko",
              "zh-hans",
              "pt"
            ]
          },
          "model": {
            "type": "string",
            "enum": [
              "plamo-3-translate-0.8b-q4-k-m"
            ],
            "default": "plamo-3-translate-0.8b-q4-k-m"
          }
        },
        "required": [
          "text",
          "source_language",
          "target_language"
        ],
        "additionalProperties": false
      },
      "Translation": {
        "type": "object",
        "properties": {
          "translation": {
            "type": "string"
          },
          "source_language": {
            "type": "string"
          },
          "target_language": {
            "type": "string"
          }
        },
        "required": [
          "translation",
          "source_language",
          "target_language"
        ],
        "additionalProperties": false
      },
      "Key": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "maxLength": 80
          },
          "prefix": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "revoked",
              "expired"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_used_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "revoked_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "legacy": {
            "type": "boolean"
          },
          "daily_requests": {
            "type": "integer",
            "minimum": 0
          },
          "daily_characters": {
            "type": "integer",
            "minimum": 0
          },
          "per_minute": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "id",
          "name",
          "prefix",
          "status",
          "created_at",
          "last_used_at",
          "revoked_at",
          "expires_at",
          "legacy",
          "daily_requests",
          "daily_characters",
          "per_minute"
        ],
        "additionalProperties": false
      },
      "IssuedKey": {
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/Key"
          },
          "secret": {
            "type": "string",
            "description": "Shown only once. Store securely; never log."
          }
        },
        "required": [
          "key",
          "secret"
        ],
        "additionalProperties": false
      },
      "RotatedKey": {
        "type": "object",
        "properties": {
          "key": {
            "$ref": "#/components/schemas/Key"
          },
          "secret": {
            "type": "string"
          },
          "old_key_expires_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "key",
          "secret",
          "old_key_expires_at"
        ],
        "additionalProperties": false
      },
      "KeyList": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Key"
            }
          },
          "next_offset": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          }
        },
        "required": [
          "keys",
          "next_offset"
        ],
        "additionalProperties": false
      },
      "Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 0
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "email_verified": {
            "type": "boolean"
          },
          "can_review_quota": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "suspended"
            ]
          }
        },
        "required": [
          "id",
          "email",
          "email_verified",
          "can_review_quota",
          "status"
        ],
        "additionalProperties": false
      },
      "Used": {
        "type": "object",
        "properties": {
          "requests": {
            "type": "integer",
            "minimum": 0
          },
          "characters": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "requests",
          "characters"
        ],
        "additionalProperties": false
      },
      "Usage": {
        "type": "object",
        "properties": {
          "day": {
            "type": "string",
            "format": "date"
          },
          "timezone": {
            "type": "string",
            "enum": [
              "UTC"
            ]
          },
          "policy": {
            "type": "string",
            "enum": [
              "charged_at_inference_dispatch"
            ]
          },
          "account": {
            "type": "object",
            "properties": {
              "used": {
                "$ref": "#/components/schemas/Used"
              },
              "daily_requests": {
                "type": "integer",
                "minimum": 0
              },
              "daily_characters": {
                "type": "integer",
                "minimum": 0
              },
              "per_minute": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "used",
              "daily_requests",
              "daily_characters",
              "per_minute"
            ],
            "additionalProperties": false
          },
          "keys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "maxLength": 80
                },
                "prefix": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "active",
                    "revoked",
                    "expired"
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "last_used_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "revoked_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "expires_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "legacy": {
                  "type": "boolean"
                },
                "daily_requests": {
                  "type": "integer",
                  "minimum": 0
                },
                "daily_characters": {
                  "type": "integer",
                  "minimum": 0
                },
                "per_minute": {
                  "type": "integer",
                  "minimum": 0
                },
                "used": {
                  "$ref": "#/components/schemas/Used"
                }
              },
              "required": [
                "id",
                "name",
                "prefix",
                "status",
                "created_at",
                "last_used_at",
                "revoked_at",
                "expires_at",
                "legacy",
                "daily_requests",
                "daily_characters",
                "per_minute",
                "used"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "day",
          "timezone",
          "policy",
          "account",
          "keys"
        ],
        "additionalProperties": false
      },
      "Model": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "default": {
            "type": "boolean"
          },
          "available": {
            "type": "boolean"
          },
          "availability_reason": {
            "type": "string",
            "enum": [
              "license_review_required",
              "disabled",
              "enabled"
            ]
          },
          "license": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "model_card": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "id",
          "name",
          "default",
          "available",
          "availability_reason",
          "license",
          "attribution",
          "model_card"
        ],
        "additionalProperties": false
      },
      "Direction": {
        "type": "object",
        "properties": {
          "source_language": {
            "type": "string"
          },
          "target_language": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "enum": [
              "enabled",
              "experimental",
              "unavailable"
            ]
          },
          "quality": {
            "type": "string",
            "enum": [
              "basic_smoke_passed",
              "known_wrong_language",
              "unverified"
            ]
          },
          "evidence": {
            "type": "string"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "source_language",
          "target_language",
          "enabled",
          "status",
          "quality",
          "evidence",
          "note"
        ],
        "additionalProperties": false
      },
      "Languages": {
        "type": "object",
        "properties": {
          "models": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "model": {
                  "type": "string"
                },
                "directions": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Direction"
                  }
                },
                "unlisted_directions": {
                  "type": "object",
                  "properties": {
                    "enabled": {
                      "type": "boolean"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "unavailable"
                      ]
                    },
                    "quality": {
                      "type": "string",
                      "enum": [
                        "unverified"
                      ]
                    }
                  },
                  "required": [
                    "enabled",
                    "status",
                    "quality"
                  ],
                  "additionalProperties": false
                },
                "pivoting": {
                  "type": "boolean"
                }
              },
              "required": [
                "model",
                "directions",
                "unlisted_directions",
                "pivoting"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "models"
        ],
        "additionalProperties": false
      },
      "DemoTranslationRequest": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 4000,
            "description": "Streaming: 4,000 Unicode code points. Nonstreaming compatibility: 256 UTF-8 bytes."
          },
          "source_language": {
            "type": "string",
            "enum": [
              "en",
              "fr",
              "es",
              "ar",
              "de",
              "ja",
              "pl",
              "it",
              "nl",
              "ru",
              "ko",
              "zh-hans"
            ]
          },
          "target_language": {
            "type": "string",
            "enum": [
              "en",
              "fr",
              "es",
              "ar",
              "de",
              "ja",
              "pl",
              "it",
              "nl",
              "ru",
              "ko",
              "zh-hans",
              "pt"
            ]
          },
          "stream": {
            "type": "boolean",
            "default": false
          },
          "model": {
            "type": "string",
            "enum": [
              "plamo-3-translate-0.8b-q4-k-m"
            ]
          }
        },
        "required": [
          "text",
          "source_language",
          "target_language"
        ],
        "additionalProperties": false
      },
      "QuotaRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 0
          },
          "requested": {
            "type": "integer",
            "minimum": 0
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "approved",
              "declined"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "reviewed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "required": [
          "id",
          "requested",
          "status",
          "created_at",
          "reviewed_at"
        ],
        "additionalProperties": false
      }
    },
    "responses": {
      "APIError": {
        "description": "Stable error code; see docs/API.md. No private backend detail.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "Retry-After": {
            "schema": {
              "type": "string"
            },
            "description": "Seconds before retry when supplied."
          },
          "X-Request-ID": {
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer",
        "description": "Translation API key. Not a developer login credential."
      },
      "sessionCookie": {
        "type": "apiKey",
        "in": "cookie",
        "name": "lanquora_session"
      },
      "csrfHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "X-CSRFToken"
      }
    }
  }
}
