Hakila Docs
Images

查詢生圖模型的計價與可透傳參數

格式同 OpenRouter `/api/v1/images/models/{author}/{slug}/endpoints`。`pricing` 為 USD 計價項目, 另附 Hakila 點數版本 `pricing_points` 與預算預估用的 `max_cost_per_image`。 `allowed_passthrough_parameters` 是 `provider.options` 可以帶的欄位。

GET/v1/images/models/{author}/{slug}/endpoints

格式同 OpenRouter /api/v1/images/models/{author}/{slug}/endpoints。pricing 為 USD 計價項目, 另附 Hakila 點數版本 pricing_points 與預算預估用的 max_cost_per_image。 allowed_passthrough_parameters 是 provider.options 可以帶的欄位。

Authorization

bearerAuth
AuthorizationBearer <token>

在 Authorization 標頭帶入 Workspace API Key: Authorization: Bearer sk-hakila-...

In: header

Path Parameters

author*string
slug*string

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/images/models/openai/gpt-image-2.5-flare/endpoints"
{  "id": "openai/gpt-image-2.5-flare",  "endpoints": [    {      "provider_name": "OpenAI",      "provider_slug": "openai",      "provider_tag": null,      "supported_parameters": {        "quality": {          "type": "enum",          "values": [            "auto",            "low",            "medium",            "high",            "xhigh",            "max"          ]        }      },      "allowed_passthrough_parameters": [],      "supports_streaming": true,      "pricing": [        {          "billable": "input_text",          "unit": "token",          "cost_usd": 0.000005        },        {          "billable": "output_image",          "unit": "token",          "cost_usd": 0.00003        }      ],      "pricing_points": [        {          "billable": "input_text",          "unit": "token",          "cost_points": 0.000017        },        {          "billable": "output_image",          "unit": "token",          "cost_points": 0.000099        }      ],      "max_cost_per_image": 0.25    }  ]}

列出生圖模型與能力 GET

格式同 OpenRouter `GET /api/v1/images/models`,已套用組織 ∩ API Key 允許清單。 `supported_parameters` 是每個參數的描述子(`enum` 給允許值、`range` 給上下限、`boolean` 表示支援); 沒列出的參數代表不支援。所有模型都接受 `stream: true`。

建立 Response POST

對齊 OpenAI Responses 規格(`POST https://api.openai.com/v1/responses`)。 OpenAI 模型:除了模型路由、金鑰與記帳,Hakila 會把請求、回應與 SSE 事件原樣透傳, 因此 `tools`、structured outputs、reasoning、`background`、`previous_response_id` 等能力 由上游 OpenAI 決定,不需要 Hakila 額外支援。 其他模型(Claude、Gemini、Grok、OpenRouter、地端服務…)走**轉換模式**:Hakila 把請求轉成各家協定, 回應與 SSE 事件再轉回 Responses 格式。轉換模式是無狀態的: - 每次都要帶完整歷史;`previous_response_id` 與 `background` 回 `400`,`store` 會被忽略,回應不能 retrieve - `function`、`custom`(例如 Codex 的 `apply_patch`)與 `namespace` 工具會轉換;`web_search` 等 OpenAI 內建工具會被移除, 移除的類型列在回應 header `X-Hakila-Dropped-Tools` - `reasoning.effort` 會換成各家的推理設定;Claude 的思考摘要以 `reasoning_summary_text` 事件送出, 需要原樣送回的推理資料加密放在 reasoning item 的 `encrypted_content`,下一輪原樣帶回即可延續推理 - 沒有前綴的 `model`(例如 `gpt-5.6`)在目錄中只有一個同名模型時補上開發商前綴(`openai/gpt-5.6`),官方 SDK 只換 `base_url` 即可使用;多個同名模型時回 `400`,沒有時回 `404` - `hakila/auto` 可用,候選可落在任何供應商;帶 `previous_response_id` 或 `background` 時只挑 OpenAI - `model` 仍須是平台目錄已啟用、且通過組織 ∩ API Key 允許清單的 id(見 `GET /v1/models`) - `"stream": true` 以 SSE 回傳事件(`response.output_text.delta`…),結尾為 `response.completed`,**沒有** `data: [DONE]` - `"background": true` 會立刻回 `queued`;此時不計費,等之後 `GET /v1/responses/{id}` 拿到 usage 才記一次帳 - 錯誤形狀與 OpenAI 一致(`error.message` / `type` / `param` / `code`) - 上游首字元逾時(預設 30 秒)回傳 `504` - 可引用工作區 Preset(`@preset/slug`、`model@preset/slug` 或 `preset` 欄位);Preset 的系統提示對應 `instructions` - `usage.input_tokens_details` 回報 Prompt Cache 讀取/寫入 tokens - 支援 Response Cache header(`background: true` 的請求不快取);命中時 response `id` 維持原值、`usage` 歸零