Image Request Hangs With No Result, but the Log Shows a Write Failure?
Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.
You generate images on your own computer with a script, or with a Skill inside an AI coding tool (Codex, Claude Code, etc.), and see the following:
1K and 2K images mostly come back, but 4K images or requests with several reference images often never arrive
The program shows no error at all and keeps waiting until your own timeout (600 s, 900 s) fires with read timed out, or until you kill it
Nothing arrives while it waits, not a single byte, not even the response headers (no HTTP status code)
In the call log, the matching request ended 30-90 seconds after submission, marked as failed with error code write_response_body_failed, and was not billed
The program bypasses the proxy and connects directly: you set NO_PROXY or trust_env=False, or added a direct rule for apiyi.com in your proxy app
The image was already generated. It got lost on its way back to your computer.A 4K image response is tens of MB. On some home broadband and office networks, a direct connection to overseas nodes gets cut a few dozen KB into a response that large: the server side sees the disconnect, while your computer receives nothing, so your program just keeps waiting. Routing image requests through your proxy (VPN) usually fixes it. These failures are not billed.
A non-streaming image request returns its result all at once at the end:
Image size
Response size (after base64 encoding)
1K
1-3 MB
2K
3-10 MB
4K
30-50 MB
In the cases we investigated, the server finished the image within 40-60 seconds and started sending it back. The response headers and the first 64-135 KB had already gone out, and about 1 second later the connection was cut. The customer’s program received 0 bytes and never got any “connection closed” signal, so it waited until its own timeout. During the same period:
Small 1K and 2K images from the same computer mostly arrived normally
Requests from the same account that went out through the proxy delivered nearly every 40-50 MB 4K image
So the problem is that the direct line between your computer and APIYI cannot carry large responses. The model did not fail, and the network is not fully down. A connectivity test with curl or a browser looks perfectly healthy on such a line (small requests return in well under a second), which makes this hard to spot on your own.
This is the exact opposite of Image Calls Drop After About 90 Seconds Behind a Proxy?. There, the proxy kills the connection while it sits idle waiting for the image, and the fix is to connect directly. Here, the direct line cannot carry the large response, and the fix is to use the proxy. Which route works for you is decided by the comparison test below.
Find the matching time range in the call log. If your program is still waiting while the log already shows a failed write_response_body_failed record, the server finished the image and started sending it back. The connection broke on the way back.
2
See whether larger images fail more
With the same prompt and reference images, if 1K / 2K come back and 4K does not, this is almost certainly the cause.
3
Check whether your program actually uses the proxy
Many AI coding tools start Python / Node child processes that do not read the system proxy. Even with Clash in global mode, those processes may still connect directly. Run this in the same terminal or tool:
curl -s https://ipinfo.io/ip
If it prints your local broadband IP, requests from that environment go out directly.
4
Alternate proxy and direct runs with a few 4K images
Run them in alternating order: proxy, direct, proxy, direct. Do not run 5 of one kind and then 5 of the other, or a temporary network fluctuation can mislead you. If the proxy runs succeed reliably and the direct runs often hang, that confirms it.
Remove whatever setting makes the program bypass the proxy, so image requests go through it:
Remove apiyi.com from NO_PROXY
Python requests / httpx: remove trust_env=False
Python urllib: do not build the opener with ProxyHandler({})
Node.js: native fetch does not use a proxy by default; specify one explicitly with a library such as ProxyAgent
If the child process does not read the system proxy, set the proxy address in an environment variable before running it (replace the port with your proxy app’s HTTP port):
# macOS / Linuxexport HTTPS_PROXY="http://127.0.0.1:7890"# Windows PowerShell$env:HTTPS_PROXY="http://127.0.0.1:7890"
With TUN mode on, Clash / Clash Verge / mihomo and similar apps take over traffic from every program on the computer. Everything goes through the proxy whether or not the program reads the system proxy, which is the least effort.If you previously added a DIRECT rule for apiyi.com following Proxy idle disconnects, remove it. Otherwise it still connects directly in TUN mode.
If you cannot change networks, generate at 2K for now. The response drops to a few MB, and direct connections succeed far more often. Run 4K jobs later from an environment that can use the proxy.
Both problems can happen at once. If, after switching to the proxy, requests start dropping in batches at 90-180 seconds, that is the proxy node’s idle timeout; see Image Calls Drop After About 90 Seconds Behind a Proxy?. In that case, switch to a proxy node with a longer idle timeout first, or run the image program on a server instead.
In this situation your program never receives a disconnect signal, so its own timeout is the only way to notice the failure. With a 900-second timeout, you wait 15 minutes just to learn the request failed.A non-streaming image request carries no data while the image is being generated, so the read timeout cannot be shorter than the generation time. Set it to a bit longer than a normal generation: about 300 seconds for 4K, about 180 seconds for 1K/2K. After a timeout, check the call log first to see whether the request was billed, then decide whether to retry, so you do not generate the same image twice.
Lines from cloud servers in mainland China or overseas to APIYI are usually far better than home broadband, so this mainly shows up in local development. If a server also sees “headers arrive, then the body breaks off halfway”, follow Troubleshooting Image API Connection Drops.
No. Requests recorded as write_response_body_failed in the call log are not billed. The charge shown on each log record is authoritative.
A direct connectivity test to api.apiyi.com works. Why blame the line?
A connectivity test sends and receives only a few hundred bytes and finishes in well under a second. The problem only appears when a response of tens of MB is transferred, which a small request cannot reveal.
Does the server keep generating after I kill my program?
Once a request is submitted, the server generates the image as usual. So if you kill the program and retry immediately, two requests may be generating at the same time. In the situation described here, though, by the time you kill the program the server has usually long finished the image and failed to send it back, so nothing is billed.
Only 4K should be affected, so why does 2K occasionally hang too?
The larger the response, the more likely it gets cut, but there is no hard size above which it always fails. A 2K response is still a few MB, so it can be hit on a bad line too, just much less often.
Image Calls Drop After About 90 Seconds Behind a Proxy?
The opposite problem: the proxy closes idle connections; fix it by connecting directly
Troubleshooting Image API Connection Drops
Full troubleshooting for write_response_body_failed, SSL EOF, and other disconnect errors
The log says the call finished and was billed, but my client never received a response — how do I troubleshoot?
Where the gap between logged duration and client wait time comes from
How to view my call records?
Check each request’s status and charge by time range
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"API易文档中心","description":"企业级专业稳定的AI大模型API中转站,一个令牌、无限模型。支持OpenAI、Claude、Gemini、DeepSeek、Qwen等400+热门AI模型。","colors":{"primary":"#2563eb","light":"#3b82f6","dark":"#1d4ed8"},"logo":{"light":"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/light.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=4119ef17a74cc54be127f34578d8b5fa","dark":"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/dark.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=1f046ae9580247d96549ade642b5ecc4"},"favicon":"https://mintcdn.com/apiyillc/OMY6ItCc2mC1yzgA/logo/logo.webp?fit=max\u0026auto=format\u0026n=OMY6ItCc2mC1yzgA\u0026q=85\u0026s=62a7977ef801070e689df2d0291b9d13","api":{"openapi":["api-reference/nano-banana-2-generate-openapi.yaml","api-reference/nano-banana-2-edit-openapi.yaml","api-reference/nano-banana-2-generate-openapi-en.yaml","api-reference/nano-banana-2-edit-openapi-en.yaml","api-reference/nano-banana-pro-generate-openapi.yaml","api-reference/nano-banana-pro-edit-openapi.yaml","api-reference/nano-banana-pro-generate-openapi-en.yaml","api-reference/nano-banana-pro-edit-openapi-en.yaml","api-reference/gpt-image-2-all-generate-openapi.yaml","api-reference/gpt-image-2-all-edit-openapi.yaml","api-reference/gpt-image-2-all-generate-openapi-en.yaml","api-reference/gpt-image-2-all-edit-openapi-en.yaml","api-reference/gpt-image-2-all-chat-openapi.yaml","api-reference/gpt-image-2-all-chat-openapi-en.yaml","api-reference/gpt-image-2-vip-generate-openapi.yaml","api-reference/gpt-image-2-vip-edit-openapi.yaml","api-reference/gpt-image-2-vip-chat-openapi.yaml","api-reference/gpt-image-2-vip-generate-openapi-en.yaml","api-reference/gpt-image-2-vip-edit-openapi-en.yaml","api-reference/gpt-image-2-vip-chat-openapi-en.yaml"],"playground":{"display":"interactive","proxy":true},"examples":{"defaults":"required"}},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首页"},{"href":"https://imagen.apiyi.com","label":"AI出图"},{"href":"https://icover.ai","label":"AI视频"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 集成","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 开发者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"用户口碑 / Wall of Love","items":[{"label":"用户口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"seo":{"indexing":"all"},"icons":{"library":"lucide"},"banner":{"content":"🚀 **gemini-4-argon 和 Nano Banana 2.1 均已上线 | Now Live**:[详情 Details](https://docs.apiyi.com/changelog)","dismissible":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","aistudio"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"global":{"anchors":[]},"languages":[{"language":"zh","href":""},{"language":"en","navbar":{"links":[{"href":"https://api.apiyi.com","label":"Home"},{"href":"https://imagen.apiyi.com","label":"AI Image"},{"href":"https://icover.ai","label":"AI Video"}],"primary":{"type":"button","label":"Console","href":"https://api.apiyi.com/account/profile"}},"href":"en"},{"language":"zh-Hant","banner":{"content":"本頁由程式自動轉換為繁體中文,用詞以台灣正體為準;如有歧義請以[簡體中文版](/)為準。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 整合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 開發者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"使用者口碑 / Wall of Love","items":[{"label":"使用者口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首頁"},{"href":"https://imagen.apiyi.com","label":"AI出圖"},{"href":"https://icover.ai","label":"AI影片"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"href":"zh-Hant"},{"language":"ja","banner":{"content":"このページは AI により翻訳されています。内容に相違がある場合は[English 版](/en)を正としてください。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI統合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI開発者キット(中国語)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"ユーザーの声 / Wall of Love","items":[{"label":"ユーザーの声(中国語)","href":"/wall-of-love"},{"label":"Wall of Love(英語)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"ホーム"},{"href":"https://imagen.apiyi.com","label":"AI画像生成"},{"href":"https://icover.ai","label":"AI動画生成"}],"primary":{"type":"button","label":"コンソール","href":"https://api.apiyi.com/account/profile"}},"href":"ja"},{"language":"ko","banner":{"content":"이 페이지는 AI로 번역되었습니다. 내용이 다를 경우 [English 버전](/en)을 기준으로 하십시오.","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 통합","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 개발자 키트(중국어)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"사용자 후기 / Wall of Love","items":[{"label":"사용자 후기(중국어)","href":"/wall-of-love"},{"label":"Wall of Love (영문)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"홈"},{"href":"https://imagen.apiyi.com","label":"AI 이미지 생성"},{"href":"https://icover.ai","label":"AI 동영상 생성"}],"primary":{"type":"button","label":"콘솔","href":"https://api.apiyi.com/account/profile"}},"href":"ko"},{"language":"ru","banner":{"content":"Эта страница переведена с помощью ИИ. При расхождениях ориентируйтесь на [английскую версию](/en).","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI-интеграция","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"Набор AI-разработчика (кит.)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"Отзывы пользователей / Wall of Love","items":[{"label":"Отзывы пользователей (на китайском)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"Главная"},{"href":"https://imagen.apiyi.com","label":"Генерация изображений"},{"href":"https://icover.ai","label":"Генерация видео"}],"primary":{"type":"button","label":"Консоль","href":"https://api.apiyi.com/account/profile"}},"href":"ru"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"apiyillc","hasAudioNarration":false,"actualSubdomain":"apiyillc","customDomains":["docs.apiyi.com"],"gitSource":{"type":"github","owner":"pdmaker","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad9df37db34909eda593fa1","collectionId":"068a3a09-7436-4ad0-9dea-66ef7313f9f7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad9df37db34909eda593fa1"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6ad9dfc51cd014c88d9819de","clientVersion":"0.0.3926","searchFilterCounts":[{"language":"zh","tag":"首页","count":170},{"language":"en","tag":"Home","count":170},{"language":"ja","tag":"ホーム","count":170},{"language":"ko","tag":"홈","count":170},{"language":"ru","tag":"Главная","count":170},{"language":"zh-Hant","tag":"首頁","count":170},{"language":"zh","tag":"常见问题","count":107},{"language":"en","tag":"FAQ","count":107},{"language":"ru","tag":"FAQ","count":107},{"language":"zh-Hant","tag":"常見問題","count":107},{"language":"ja","tag":"FAQ","count":106},{"language":"ko","tag":"FAQ","count":106},{"language":"zh","tag":"公告","count":75},{"language":"en","tag":"Announcements","count":75},{"language":"zh","tag":"AI风向标","count":72},{"language":"en","tag":"AI Radar","count":72},{"language":"zh","tag":"图片 API(官转)","count":64},{"language":"en","tag":"Image API (Official)","count":64},{"language":"ja","tag":"画像API(公式)","count":64},{"language":"ko","tag":"이미지 API (공식)","count":64},{"language":"ru","tag":"Image API (официальный)","count":64},{"language":"zh-Hant","tag":"圖片 API(官轉)","count":64},{"language":"zh","tag":"模型与调用","count":48},{"language":"en","tag":"Models \u0026 API","count":48},{"language":"ru","tag":"Модели и API","count":48},{"language":"zh-Hant","tag":"模型與呼叫","count":48},{"language":"zh","tag":"使用场景","count":47},{"language":"en","tag":"Use Cases","count":47},{"language":"ja","tag":"モデルとAPI","count":47},{"language":"ja","tag":"活用例","count":47},{"language":"ko","tag":"모델 및 API","count":47},{"language":"ko","tag":"활용 사례","count":47},{"language":"ru","tag":"Сценарии использования","count":47},{"language":"zh-Hant","tag":"使用場景","count":47},{"language":"zh","tag":"模型价格","count":35},{"language":"en","tag":"Model Pricing","count":35},{"language":"ja","tag":"モデル料金","count":35},{"language":"ko","tag":"모델 요금","count":35},{"language":"ru","tag":"Цены на модели","count":35},{"language":"zh-Hant","tag":"模型價格","count":35},{"language":"zh","tag":"基础 API","count":34},{"language":"en","tag":"Basic API","count":34},{"language":"ja","tag":"基本API","count":34},{"language":"ko","tag":"기본 API","count":34},{"language":"ru","tag":"Базовый API","count":34},{"language":"zh-Hant","tag":"基礎 API","count":34},{"language":"zh","tag":"视频 API(官转)","count":31},{"language":"en","tag":"Video API (Official)","count":31},{"language":"ja","tag":"動画API(公式)","count":31},{"language":"ko","tag":"동영상 API (공식)","count":31},{"language":"ru","tag":"Video API (официальный)","count":31},{"language":"zh-Hant","tag":"影片 API(官轉)","count":31},{"language":"ja","tag":"テキスト生成","count":26},{"language":"ko","tag":"텍스트 생성","count":26},{"language":"ru","tag":"Генерация текста","count":26},{"language":"zh-Hant","tag":"文本生成","count":26},{"language":"ja","tag":"課金とセキュリティ","count":16},{"language":"ko","tag":"결제 및 보안","count":16},{"language":"ru","tag":"Оплата и безопасность","count":16},{"language":"zh-Hant","tag":"充值與安全","count":16}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"models/models.css","content":".mp-layout{display:flex;gap:2.5rem;max-width:1400px;margin:0 auto;padding:2.5rem 1.5rem 4rem;font-size:15px;line-height:1.7;color:rgb(var(--gray-500, 113 115 119))}html.dark .mp-layout{color:rgb(var(--gray-400, 159 161 165))}.mp-rail{display:none}@media (min-width:1024px){.mp-rail{display:block;width:13rem;flex-shrink:0}}.mp-rail-nav{position:sticky;top:9.25rem;font-size:.875rem}.mp-rail-head{font-weight:600;margin:0 0 .375rem;color:rgb(var(--gray-900, 23 25 29))}html.dark .mp-rail-head{color:rgb(var(--gray-200, 223 225 229))}.mp-rail-link{display:block;padding:.22rem 0;color:rgb(var(--gray-500, 113 115 119));text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mp-content a,.mp-content code.mp-ep-rec,.mp-rail-link:hover{color:rgb(var(--primary, 37 99 235))}html.dark .mp-rail-link{color:rgb(var(--gray-400, 159 161 165))}html.dark .mp-content a,html.dark .mp-content code.mp-ep-rec,html.dark .mp-rail-link:hover{color:rgb(var(--primary-light, 59 130 246))}.mp-rail-vendors{max-height:45vh;overflow-y:auto}.mp-mt{margin-top:1rem}.mp-content{min-width:0;flex:1}.mp-content h2,.mp-title{color:rgb(var(--gray-900, 23 25 29))}.mp-title{font-size:2rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}html.dark .mp-content strong,html.dark .mp-title{color:#fff}.mp-desc{color:rgb(var(--gray-500, 113 115 119));margin:0 0 1.5rem}html.dark .mp-content th,html.dark .mp-desc{color:rgb(var(--gray-400, 159 161 165))}.mp-content h2{font-size:1.375rem;font-weight:600;margin:2.75rem 0 1rem;padding-bottom:.45rem;border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.7);scroll-margin-top:12rem}@media (min-width:1024px){.mp-content h2{scroll-margin-top:16.5rem}}html.dark .mp-content h2{border-color:rgb(255 255 255/.1);color:#fff}.mp-content p,.mp-content ul{margin:.75rem 0}.mp-content ul{padding-left:1.4rem}.mp-content li{margin:.4rem 0}.mp-content strong{color:rgb(var(--gray-900, 23 25 29))}.mp-content a{text-decoration:none}.mp-content a:hover{text-decoration:underline}.mp-content code{font-size:.85em;background:rgb(var(--gray-100, 239 241 245)/.8);border:1px solid rgb(var(--gray-200, 223 225 229)/.7);padding:.1em .35em;border-radius:.375rem}html.dark .mp-content code{background:rgb(255 255 255/.06);border-color:rgb(255 255 255/.1)}.mp-content code.mp-ep-rec{background:rgb(var(--primary, 37 99 235)/.08);border-color:rgb(var(--primary, 37 99 235)/.45);font-weight:600}html.dark .mp-content code.mp-ep-rec{background:rgb(var(--primary-light, 59 130 246)/.14);border-color:rgb(var(--primary-light, 59 130 246)/.5)}.mp-content table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;font-size:.875rem;margin:1rem 0 1.5rem}.mp-content td,.mp-content th{padding:.55rem 1.25rem .55rem 0;white-space:nowrap}.mp-content th{text-align:left;font-weight:500;color:rgb(var(--gray-500, 113 115 119));border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.7)}.mp-content td{border-bottom:1px solid rgb(var(--gray-200, 223 225 229)/.45)}html.dark .mp-content th{border-color:rgb(255 255 255/.1)}html.dark .mp-content td{border-color:rgb(255 255 255/.07)}.mp-search{display:contents}.mp-search-bar{position:sticky;top:5rem;z-index:20;margin:0 0 1.75rem;background:rgb(var(--background-light, 255 255 255));padding:.75rem 0 .85rem;box-shadow:0 10px 14px -10px rgb(var(--gray-950, 11 13 17)/.28)}@media (min-width:1024px){.mp-search-bar{top:9.25rem}}html.dark .mp-search-bar{background:rgb(var(--background-dark, 10 11 16));box-shadow:0 8px 12px -10px rgb(0 0 0/.7)}.mp-search-label{margin:0 0 .5rem;padding-left:.6rem;border-left:3px solid rgb(var(--primary, 37 99 235));font-size:.9rem;font-weight:600;line-height:1.4;color:rgb(var(--primary, 37 99 235))}html.dark .mp-search-label{border-left-color:rgb(var(--primary-light, 59 130 246));color:rgb(var(--primary-light, 59 130 246))}.mp-search-input{width:100%;box-sizing:border-box;border:1px solid rgb(var(--gray-400, 159 161 165)/.3);border-radius:.75rem;padding:.7rem 1rem .7rem 2.65rem;font-size:.9rem;background-color:rgb(var(--background-light, 255 255 255));background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23717377' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-position:.9rem center;color:rgb(var(--gray-900, 23 25 29));outline:0;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease}.mp-search-input::placeholder{color:rgb(var(--gray-500, 113 115 119))}.mp-search-input:hover{border-color:rgb(var(--gray-600, 81 83 87)/.3)}.mp-search-input:focus{border-color:rgb(var(--primary, 37 99 235));box-shadow:0 0 0 3px rgb(var(--primary, 37 99 235)/.16)}html.dark .mp-search-input{background-color:rgb(var(--background-dark, 10 11 16));background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%239fa1a5' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E\");border-color:rgb(var(--gray-600, 81 83 87)/.3);color:rgb(var(--gray-100, 239 241 245))}html.dark .mp-search-input::placeholder{color:rgb(255 255 255/.5)}html.dark .mp-search-input:hover{border-color:rgb(var(--gray-500, 113 115 119)/.35)}html.dark .mp-search-input:focus{border-color:rgb(var(--primary-light, 59 130 246));box-shadow:0 0 0 3px rgb(var(--primary-light, 59 130 246)/.22)}.mp-search-empty,.mp-search-meta{color:rgb(var(--gray-500, 113 115 119))}.mp-search-meta{font-size:.75rem;margin:.75rem 0 .25rem}.mp-search-empty{font-size:.875rem;margin-top:.75rem}html.dark .mp-search-empty,html.dark .mp-search-meta{color:rgb(var(--gray-400, 159 161 165))}.mp-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem}@media (min-width:1024px){.mp-jump{display:none}}"},{"filePath":"styles/agent-prompt.css","content":"div.prompt{border:1.5px solid rgb(var(--primary, 37 99 235)/.35);background:rgb(var(--primary, 37 99 235)/.035);padding:1.25rem 1.25rem 1rem;row-gap:.75rem}html.dark div.prompt{border-color:rgb(var(--primary-light, 59 130 246)/.4);background:rgb(var(--primary-light, 59 130 246)/.06)}div.prompt [data-component-part=prompt-content-wrapper]{width:100%}div.prompt [data-component-part=prompt-actions-wrapper]{width:100%;justify-content:flex-end}div.prompt [data-component-part=prompt-description]{flex:1;font-size:14px;line-height:1.65}div.prompt [data-component-part=prompt-description]>div>*{margin:0}div.prompt [data-component-part=prompt-description]>div>*+*{margin-top:.6rem}div.prompt [data-component-part=prompt-description] strong{font-size:15px;font-weight:650;color:rgb(var(--gray-900, 23 25 29))}html.dark div.prompt [data-component-part=prompt-description] strong{color:#fff}div.prompt [data-component-part=prompt-description]>div>*+p{color:rgb(var(--gray-600, 80 82 86))}html.dark div.prompt [data-component-part=prompt-description]>div>*+p{color:rgb(var(--gray-400, 159 161 165))}div.prompt [data-component-part=prompt-description] code{font-size:.85em;background:rgb(var(--gray-100, 239 241 245)/.9);border:1px solid rgb(var(--gray-200, 223 225 229)/.7);padding:.05em .35em;border-radius:.375rem}html.dark div.prompt [data-component-part=prompt-description] code{background:rgb(255 255 255/.06);border-color:rgb(255 255 255/.1)}div.prompt [data-component-part=prompt-description] blockquote{margin:0;padding:.75rem .9rem;font-style:normal;border:1px dashed rgb(var(--gray-300, 191 193 197));border-radius:.6rem;background:rgb(var(--background-light, 255 255 255));font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;color:rgb(var(--gray-600, 80 82 86));overflow-wrap:anywhere;-webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent 100%);mask-image:linear-gradient(to bottom,#000 70%,transparent 100%)}div.prompt [data-component-part=prompt-description] blockquote ol,div.prompt [data-component-part=prompt-description] blockquote p{margin:0}div.prompt [data-component-part=prompt-description] blockquote li{padding:0}div.prompt [data-component-part=prompt-description] blockquote>*+*{margin-top:.5rem}div.prompt [data-component-part=prompt-description] blockquote code{background:0 0;border:0;padding:0;font-size:1em}div.prompt [data-component-part=prompt-description] blockquote a{color:inherit;text-decoration:none;pointer-events:none}html.dark div.prompt [data-component-part=prompt-description] blockquote{border-color:rgb(255 255 255/.15);background:rgb(var(--background-dark, 13 13 13));color:rgb(var(--gray-400, 159 161 165))}div.prompt [data-component-part=prompt-action-copy-button]{padding:.6rem 1.25rem;font-size:14px;line-height:20px;font-weight:600;border-radius:.65rem;gap:.45rem;box-shadow:0 1px 2px rgb(0 0 0/.08),0 4px 12px rgb(var(--primary, 37 99 235)/.25)}div.prompt [data-component-part=prompt-action-copy-button]::before{content:\"\";width:16px;height:16px;flex-shrink:0;background:currentColor;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E\") center/contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='14' height='14' x='8' y='8' rx='2' ry='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E\") center/contain no-repeat}div.prompt [data-component-part=prompt-action-copy-button] svg{width:12px;height:12px}@media (max-width:640px){div.prompt [data-component-part=prompt-actions-wrapper]>*{flex:1}}"}],"page":{"pagePath":"en/faq/image-direct-large-response-stall","slug":"/en/faq/image-direct-large-response-stall","pageMetadata":{"title":"Image Request Hangs With No Result, but the Log Shows a Write Failure?","description":"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.","icon":"hourglass","href":"/en/faq/image-direct-large-response-stall"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Heading,Info,Note,Step,Steps,Tab,Table,Tabs,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`symptoms`,children:`Symptoms`}),`\n`,_jsx(_components.p,{children:`You generate images on your own computer with a script, or with a Skill inside an AI coding tool (Codex, Claude Code, etc.), and see the following:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`1K and 2K images mostly come back, but `,_jsx(_components.strong,{children:`4K images or requests with several reference images often never arrive`})]}),`\n`,_jsxs(_components.li,{children:[`The program shows `,_jsx(_components.strong,{children:`no error at all`}),` and keeps waiting until your own timeout (600 s, 900 s) fires with `,_jsx(_components.code,{children:`read timed out`}),`, or until you kill it`]}),`\n`,_jsxs(_components.li,{children:[`Nothing arrives while it waits, `,_jsx(_components.strong,{children:`not a single byte`}),`, not even the response headers (no HTTP status code)`]}),`\n`,_jsxs(_components.li,{children:[`In the `,_jsx(_components.a,{href:`/en/faq/call-logs`,children:`call log`}),`, the matching request ended `,_jsx(_components.strong,{children:`30-90 seconds`}),` after submission, marked as failed with error code `,_jsx(_components.code,{children:`write_response_body_failed`}),`, and `,_jsx(_components.strong,{children:`was not billed`})]}),`\n`,_jsxs(_components.li,{children:[`The program `,_jsx(_components.strong,{children:`bypasses the proxy and connects directly`}),`: you set `,_jsx(_components.code,{children:`NO_PROXY`}),` or `,_jsx(_components.code,{children:`trust_env=False`}),`, or added a direct rule for `,_jsx(_components.code,{children:`apiyi.com`}),` in your proxy app`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`short-answer`,children:`Short Answer`}),`\n`,_jsxs(Info,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`The image was already generated. It got lost on its way back to your computer.`})}),_jsxs(_components.p,{children:[`A 4K image response is tens of MB. On some home broadband and office networks, a direct connection to overseas nodes gets cut a few dozen KB into a response that large: the server side sees the disconnect, while your computer receives nothing, so your program just keeps waiting. `,_jsx(_components.strong,{children:`Routing image requests through your proxy (VPN)`}),` usually fixes it. These failures are not billed.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`why-this-happens`,children:`Why This Happens`}),`\n`,_jsxs(_components.p,{children:[`A non-streaming image request returns its result `,_jsx(_components.strong,{children:`all at once`}),` at the end:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Image size`}),_jsx(_components.th,{children:`Response size (after base64 encoding)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`1K`}),_jsx(_components.td,{children:`1-3 MB`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`2K`}),_jsx(_components.td,{children:`3-10 MB`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:`4K`}),_jsx(_components.td,{children:`30-50 MB`})]})]})]}),`\n`,_jsx(_components.p,{children:`In the cases we investigated, the server finished the image within 40-60 seconds and started sending it back. The response headers and the first 64-135 KB had already gone out, and about 1 second later the connection was cut. The customer’s program received 0 bytes and never got any “connection closed” signal, so it waited until its own timeout. During the same period:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Small 1K and 2K images from the same computer mostly arrived normally`}),`\n`,_jsxs(_components.li,{children:[`Requests from the same account `,_jsx(_components.strong,{children:`that went out through the proxy`}),` delivered nearly every 40-50 MB 4K image`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`So the problem is that `,_jsx(_components.strong,{children:`the direct line between your computer and APIYI cannot carry large responses`}),`. The model did not fail, and the network is not fully down. A connectivity test with `,_jsx(_components.code,{children:`curl`}),` or a browser looks perfectly healthy on such a line (small requests return in well under a second), which makes this hard to spot on your own.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`This is the exact opposite of `,_jsx(_components.a,{href:`/en/faq/proxy-idle-timeout-disconnect`,children:`Image Calls Drop After About 90 Seconds Behind a Proxy?`}),`. There, the `,_jsx(_components.strong,{children:`proxy`}),` kills the connection while it sits idle waiting for the image, and the fix is to connect directly. Here, the `,_jsx(_components.strong,{children:`direct`}),` line cannot carry the large response, and the fix is to use the proxy. Which route works for you is decided by the comparison test below.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-confirm`,children:`How to Confirm`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Check the call log`,children:_jsxs(_components.p,{children:[`Find the matching time range in the `,_jsx(_components.a,{href:`/en/faq/call-logs`,children:`call log`}),`. If your program is still waiting while the log already shows a failed `,_jsx(_components.code,{children:`write_response_body_failed`}),` record, the server finished the image and started sending it back. The connection broke on the way back.`]})}),_jsx(Step,{title:`See whether larger images fail more`,children:_jsx(_components.p,{children:`With the same prompt and reference images, if 1K / 2K come back and 4K does not, this is almost certainly the cause.`})}),_jsxs(Step,{title:`Check whether your program actually uses the proxy`,children:[_jsxs(_components.p,{children:[`Many AI coding tools start Python / Node child processes that `,_jsx(_components.strong,{children:`do not read the system proxy`}),`. Even with Clash in global mode, those processes may still connect directly. Run this in the same terminal or tool:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -s`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://ipinfo.io/ip`})]}),`\n`]})})}),_jsx(_components.p,{children:`If it prints your local broadband IP, requests from that environment go out directly.`})]}),_jsx(Step,{title:`Alternate proxy and direct runs with a few 4K images`,children:_jsx(_components.p,{children:`Run them in alternating order: proxy, direct, proxy, direct. Do not run 5 of one kind and then 5 of the other, or a temporary network fluctuation can mislead you. If the proxy runs succeed reliably and the direct runs often hang, that confirms it.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`solutions`,children:`Solutions`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Route the program through the proxy (recommended)`,id:`route-the-program-through-the-proxy-recommended`,children:[_jsx(_components.p,{children:`Remove whatever setting makes the program bypass the proxy, so image requests go through it:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Remove `,_jsx(_components.code,{children:`apiyi.com`}),` from `,_jsx(_components.code,{children:`NO_PROXY`})]}),`\n`,_jsxs(_components.li,{children:[`Python `,_jsx(_components.code,{children:`requests`}),` / `,_jsx(_components.code,{children:`httpx`}),`: remove `,_jsx(_components.code,{children:`trust_env=False`})]}),`\n`,_jsxs(_components.li,{children:[`Python `,_jsx(_components.code,{children:`urllib`}),`: do not build the opener with `,_jsx(_components.code,{children:`ProxyHandler({})`})]}),`\n`,_jsxs(_components.li,{children:[`Node.js: native `,_jsx(_components.code,{children:`fetch`}),` does not use a proxy by default; specify one explicitly with a library such as `,_jsx(_components.code,{children:`ProxyAgent`})]}),`\n`]}),_jsx(_components.p,{children:`If the child process does not read the system proxy, set the proxy address in an environment variable before running it (replace the port with your proxy app’s HTTP port):`}),_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# macOS / Linux`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` HTTPS_PROXY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http://127.0.0.1:7890\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Windows PowerShell`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`HTTPS_PROXY`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"http://127.0.0.1:7890\"`})]}),`\n`]})})})]}),_jsxs(Tab,{title:`Turn on TUN mode in the proxy app`,id:`turn-on-tun-mode-in-the-proxy-app`,children:[_jsxs(_components.p,{children:[`With `,_jsx(_components.strong,{children:`TUN mode`}),` on, Clash / Clash Verge / mihomo and similar apps take over traffic from every program on the computer. Everything goes through the proxy whether or not the program reads the system proxy, which is the least effort.`]}),_jsxs(_components.p,{children:[`If you previously added a `,_jsx(_components.code,{children:`DIRECT`}),` rule for `,_jsx(_components.code,{children:`apiyi.com`}),` following `,_jsx(_components.a,{href:`/en/faq/proxy-idle-timeout-disconnect`,children:`Proxy idle disconnects`}),`, remove it. Otherwise it still connects directly in TUN mode.`]})]}),_jsx(Tab,{title:`Shrink the response for now`,id:`shrink-the-response-for-now`,children:_jsx(_components.p,{children:`If you cannot change networks, generate at 2K for now. The response drops to a few MB, and direct connections succeed far more often. Run 4K jobs later from an environment that can use the proxy.`})})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Both problems can happen at once.`}),` If, after switching to the proxy, requests start dropping in batches at 90-180 seconds, that is the proxy node’s idle timeout; see `,_jsx(_components.a,{href:`/en/faq/proxy-idle-timeout-disconnect`,children:`Image Calls Drop After About 90 Seconds Behind a Proxy?`}),`. In that case, switch to a proxy node with a longer idle timeout first, or run the image program on a server instead.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`set-a-sensible-timeout-too`,children:`Set a sensible timeout too`}),`\n`,_jsx(_components.p,{children:`In this situation your program never receives a disconnect signal, so its own timeout is the only way to notice the failure. With a 900-second timeout, you wait 15 minutes just to learn the request failed.`}),`\n`,_jsxs(_components.p,{children:[`A non-streaming image request carries no data while the image is being generated, so the read timeout cannot be shorter than the generation time. Set it to `,_jsx(_components.strong,{children:`a bit longer than a normal generation`}),`: about 300 seconds for 4K, about 180 seconds for 1K/2K. After a timeout, check the call log first to see whether the request was billed, then decide whether to retry, so you do not generate the same image twice.`]}),`\n`,_jsx(Heading,{level:`2`,id:`will-this-happen-after-deploying-to-a-server`,children:`Will This Happen After Deploying to a Server?`}),`\n`,_jsxs(_components.p,{children:[`Lines from cloud servers in mainland China or overseas to APIYI are usually far better than home broadband, so this mainly shows up in local development. If a server also sees “headers arrive, then the body breaks off halfway”, follow `,_jsx(_components.a,{href:`/en/api-capabilities/image-connection-drops`,children:`Troubleshooting Image API Connection Drops`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`common-questions`,children:`Common Questions`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Were these failed requests billed?`,id:`were-these-failed-requests-billed`,children:_jsxs(_components.p,{children:[`No. Requests recorded as `,_jsx(_components.code,{children:`write_response_body_failed`}),` in the call log are not billed. The charge shown on each log record is authoritative.`]})}),_jsx(Accordion,{title:`A direct connectivity test to api.apiyi.com works. Why blame the line?`,id:`a-direct-connectivity-test-to-api-apiyi-com-works-why-blame-the-line`,children:_jsx(_components.p,{children:`A connectivity test sends and receives only a few hundred bytes and finishes in well under a second. The problem only appears when a response of tens of MB is transferred, which a small request cannot reveal.`})}),_jsx(Accordion,{title:`Does the server keep generating after I kill my program?`,id:`does-the-server-keep-generating-after-i-kill-my-program`,children:_jsx(_components.p,{children:`Once a request is submitted, the server generates the image as usual. So if you kill the program and retry immediately, two requests may be generating at the same time. In the situation described here, though, by the time you kill the program the server has usually long finished the image and failed to send it back, so nothing is billed.`})}),_jsx(Accordion,{title:`Only 4K should be affected, so why does 2K occasionally hang too?`,id:`only-4k-should-be-affected-so-why-does-2k-occasionally-hang-too`,children:_jsx(_components.p,{children:`The larger the response, the more likely it gets cut, but there is no hard size above which it always fails. A 2K response is still a few MB, so it can be hit on a bad line too, just much less often.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`related-docs`,children:`Related Docs`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Image Calls Drop After About 90 Seconds Behind a Proxy?`,icon:`unplug`,href:`/en/faq/proxy-idle-timeout-disconnect`,children:_jsx(_components.p,{children:`The opposite problem: the proxy closes idle connections; fix it by connecting directly`})}),_jsx(Card,{title:`Troubleshooting Image API Connection Drops`,icon:`unplug`,href:`/en/api-capabilities/image-connection-drops`,children:_jsx(_components.p,{children:`Full troubleshooting for write_response_body_failed, SSL EOF, and other disconnect errors`})}),_jsx(Card,{title:`The log says the call finished and was billed, but my client never received a response — how do I troubleshoot?`,icon:`clock`,href:`/en/faq/log-duration-vs-client-wait`,children:_jsx(_components.p,{children:`Where the gap between logged duration and client wait time comes from`})}),_jsx(Card,{title:`How to view my call records?`,icon:`file-text`,href:`/en/faq/call-logs`,children:_jsx(_components.p,{children:`Check each request’s status and charge by time range`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Image Request Hangs With No Result, but the Log Shows a Write Failure?","description":"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.","icon":"hourglass","href":"/en/faq/image-direct-large-response-stall"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Symptoms","slug":"symptoms","depth":2,"children":[]},{"title":"Short Answer","slug":"short-answer","depth":2,"children":[]},{"title":"Why This Happens","slug":"why-this-happens","depth":2,"children":[]},{"title":"How to Confirm","slug":"how-to-confirm","depth":2,"children":[]},{"title":"Solutions","slug":"solutions","depth":2,"children":[{"title":"Set a sensible timeout too","slug":"set-a-sensible-timeout-too","depth":3,"children":[]}]},{"title":"Will This Happen After Deploying to a Server?","slug":"will-this-happen-after-deploying-to-a-server","depth":2,"children":[]},{"title":"Common Questions","slug":"common-questions","depth":2,"children":[]},{"title":"Related Docs","slug":"related-docs","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"apiyillc","siteName":"API易文档中心","title":"Image Request Hangs With No Result, but the Log Shows a Write Failure? - API易文档中心","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"zh":{"href":"/faq/image-direct-large-response-stall","matchLevel":1},"en":{"href":"/en/faq/image-direct-large-response-stall","matchLevel":0},"zh-Hant":{"href":"/zh-Hant/faq/image-direct-large-response-stall","matchLevel":1},"ja":{"href":"/ja/faq/image-direct-large-response-stall","matchLevel":1},"ko":{"href":"/ko/faq/image-direct-large-response-stall","matchLevel":1},"ru":{"href":"/ru/faq/image-direct-large-response-stall","matchLevel":1}}},"lastModified":"2026-10-22T09:14:46.920Z","originalFileLocation":"en/faq/image-direct-large-response-stall.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\">\u003cmeta data-mint-head name=\"application-name\" content=\"API易文档中心\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Image Request Hangs With No Result, but the Log Shows a Write Failure? - API易文档中心\">\u003cmeta data-mint-head property=\"og:description\" content=\"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"API易文档中心\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://apiyillc.mintlify.app/_mintlify/api/og/v2?division=Image+FAQ\u0026amp;title=Image+Request+Hangs+With+No+Result%2C+but+the+Log+Shows+a+Write+Failure%3F\u0026amp;description=Your+program+bypasses+the+proxy+and+connects+to+APIYI+directly.+1K%2F2K+images+work%2C+but+large+4K+images+hang+with+no+error%2C+and+the+call+log+shows+write_response\u0026amp;theme=5fe4494021add731da432849\u0026amp;signature=b25632c48afc117ab95c5a655c81be24eb2335e7d80a48145e134a8e454a9c85\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Image Request Hangs With No Result, but the Log Shows a Write Failure? - API易文档中心\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://apiyillc.mintlify.app/_mintlify/api/og/v2?division=Image+FAQ\u0026amp;title=Image+Request+Hangs+With+No+Result%2C+but+the+Log+Shows+a+Write+Failure%3F\u0026amp;description=Your+program+bypasses+the+proxy+and+connects+to+APIYI+directly.+1K%2F2K+images+work%2C+but+large+4K+images+hang+with+no+error%2C+and+the+call+log+shows+write_response\u0026amp;theme=5fe4494021add731da432849\u0026amp;signature=b25632c48afc117ab95c5a655c81be24eb2335e7d80a48145e134a8e454a9c85\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/apiyillc/sQlsuRwD6o27XLvg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"API易文档中心\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2563eb\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/en/faq/image-direct-large-response-stall.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.apiyi.com/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh-Hant\" href=\"https://docs.apiyi.com/zh-Hant/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.apiyi.com/ja/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.apiyi.com/ko/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ru\" href=\"https://docs.apiyi.com/ru/faq/image-direct-large-response-stall\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.apiyi.com/faq/image-direct-large-response-stall\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.apiyi.com/#organization\",\"name\":\"API易文档中心\",\"url\":\"https://docs.apiyi.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/apiyillc/LjCT1O0GrSur6F2v/logo/light.svg?fit=max\u0026auto=format\u0026n=LjCT1O0GrSur6F2v\u0026q=85\u0026s=4119ef17a74cc54be127f34578d8b5fa\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.apiyi.com#website\",\"name\":\"API易文档中心\",\"url\":\"https://docs.apiyi.com\",\"publisher\":{\"@id\":\"https://docs.apiyi.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall#webpage\",\"url\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\",\"name\":\"Image Request Hangs With No Result, but the Log Shows a Write Failure?\",\"description\":\"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\",\"dateModified\":\"2026-10-22T09:14:46.920Z\",\"isPartOf\":{\"@id\":\"https://docs.apiyi.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Image API (Official)\",\"item\":\"https://docs.apiyi.com/en/api-capabilities/image-api-best-practices\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Image API Essentials\",\"item\":\"https://docs.apiyi.com/en/api-capabilities/image-api-best-practices\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Image Request Hangs With No Result, but the Log Shows a Write Failure?\",\"item\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall#article\",\"headline\":\"Image Request Hangs With No Result, but the Log Shows a Write Failure?\",\"name\":\"Image Request Hangs With No Result, but the Log Shows a Write Failure?\",\"description\":\"Your program bypasses the proxy and connects to APIYI directly. 1K/2K images work, but large 4K images hang with no error, and the call log shows write_response_body_failed with no charge. Your direct line cannot carry responses of tens of MB; route image requests through your proxy.\",\"url\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall\",\"mainEntityOfPage\":{\"@id\":\"https://docs.apiyi.com/en/faq/image-direct-large-response-stall#webpage\"},\"dateModified\":\"2026-10-22T09:14:46.920Z\",\"publisher\":{\"@id\":\"https://docs.apiyi.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.apiyi.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"API易文档中心\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"API易文档中心","nav":{"global":{"anchors":[]},"languages":[{"language":"zh","pages":[{"title":"zh","href":"/faq/image-direct-large-response-stall"}]},{"language":"en","navbar":{"links":[{"href":"https://api.apiyi.com","label":"Home"},{"href":"https://imagen.apiyi.com","label":"AI Image"},{"href":"https://icover.ai","label":"AI Video"}],"primary":{"type":"button","label":"Console","href":"https://api.apiyi.com/account/profile"}},"tabs":[{"tab":"Home","icon":"house","groups":[{"group":"Basics","pages":[{"title":"APIYI - AI Model API Hub","sidebarTitle":"Introduction","icon":"house","href":"/en"},{"title":"Quick Start","icon":"rocket","href":"/en/getting-started"},{"title":"AI Developer Kit","sidebarTitle":"AI Developer Kit","icon":"bot","href":"/en/developer-kit"},{"group":"API Manual","icon":"book","pages":[{"title":"API Manual","sidebarTitle":"Manual Overview","icon":"book","href":"/en/api-manual"},{"title":"Capturing API Error Details","sidebarTitle":"Error Capture","icon":"clipboard-list","href":"/en/api-manual/error-reporting"}]},{"title":"Pricing","icon":"badge-dollar-sign","href":"/en/pricing"}]},{"group":"Basic API","icon":"box","pages":[{"title":"Popular Models","icon":"database","href":"/en/api-capabilities/model-info"},{"title":"Image \u0026 Video Generation Models","icon":"palette","href":"/en/api-capabilities/image-video-models"},{"group":"OpenAI API Calls","icon":"sparkles","pages":[{"title":"OpenAI Responses API Native Guide","sidebarTitle":"Native Calls","icon":"zap","href":"/en/api-capabilities/openai/native"},{"title":"OpenAI Chat Completions Compatible Mode","sidebarTitle":"Compatible Mode","icon":"plug","href":"/en/api-capabilities/openai/compatible"},{"title":"Choosing an Endpoint: Migrating GPT-5.4+ to Responses","sidebarTitle":"Endpoint \u0026 Migration","icon":"route","href":"/en/api-capabilities/openai/responses-migration"},{"title":"OpenAI Compatible Mode: Handling Responses","sidebarTitle":"Handling Responses","icon":"braces","href":"/en/api-capabilities/openai/response-handling"},{"title":"OpenAI Compatible Mode: Reasoning Model Output","sidebarTitle":"Reasoning Model Output","icon":"brain","href":"/en/api-capabilities/openai/reasoning-models"},{"title":"OpenAI Prompt Caching Billing Guide","sidebarTitle":"Cache Billing","icon":"database","href":"/en/api-capabilities/openai/prompt-caching"},{"title":"OpenAI Function Calling Guide","sidebarTitle":"Function Calling","icon":"wrench","href":"/en/api-capabilities/openai/function-calling"},{"title":"OpenAI API Web Search Guide","sidebarTitle":"Web Search","icon":"globe","href":"/en/api-capabilities/openai/web-search"},{"group":"OpenAI FAQ","icon":"circle-question-mark","pages":[{"title":"Does APIYI Support OpenAI Fast / Ultrafast Mode?","icon":"gauge","href":"/en/faq/openai-service-tier-fast-mode"},{"title":"How Do Streaming and Non-Streaming Requests Differ When Content Is Filtered?","sidebarTitle":"Streaming \u0026 Content Filtering","icon":"shield-half","href":"/en/faq/streaming-content-filter"},{"title":"What Does an OpenAI Model Refusal Look Like?","icon":"message-square-x","href":"/en/faq/openai-content-safety-refusal"}]}]},{"group":"Claude Official","icon":"sparkles","pages":[{"title":"Claude API Calling Basics","sidebarTitle":"Claude API Basics","icon":"sparkles","href":"/en/api-capabilities/claude"},{"title":"Claude Native Format: Streaming \u0026 Non-Streaming Responses","sidebarTitle":"Streaming \u0026 Responses","icon":"braces","href":"/en/api-capabilities/claude-response-handling"},{"title":"Claude Prompt Caching Guide","sidebarTitle":"Prompt Caching","icon":"database","href":"/en/api-capabilities/claude-prompt-caching"},{"title":"Claude Effort \u0026 Thinking Guide","sidebarTitle":"Effort \u0026 Thinking","icon":"gauge","href":"/en/api-capabilities/claude-effort-thinking"},{"title":"Claude API Web Search Guide","sidebarTitle":"Claude Web Search","icon":"globe","href":"/en/api-capabilities/claude-web-search"},{"group":"Claude FAQ","icon":"circle-question-mark","pages":[{"title":"How Do I Fix Claude's Invalid Thinking Signature Error?","icon":"file-signature","href":"/en/faq/claude-thinking-signature-invalid"},{"title":"Why Does a Claude Refusal Return Empty Content?","icon":"message-square-x","href":"/en/faq/claude-content-safety-refusal"}]}]},{"group":"Gemini Native Calls","icon":"sparkles","pages":[{"title":"Gemini Native Format Guide","sidebarTitle":"Native Calls","icon":"zap","href":"/en/api-capabilities/gemini/native"},{"title":"Interactions API vs generateContent","sidebarTitle":"Interactions API Compared","icon":"git-compare","href":"/en/api-capabilities/gemini/interactions-api"},{"title":"Gemini Native Format: Streaming \u0026 Non-Streaming Responses","sidebarTitle":"Streaming \u0026 Responses","icon":"braces","href":"/en/api-capabilities/gemini/response-handling"},{"title":"Gemini Multimodal Input \u0026 Code Execution","sidebarTitle":"Multimodal \u0026 Code Exec","icon":"images","href":"/en/api-capabilities/gemini/multimodal"},{"title":"Gemini Implicit Caching Billing Guide","sidebarTitle":"Cache Billing","icon":"database","href":"/en/api-capabilities/gemini/prompt-caching"},{"title":"Gemini Function Calling Guide","sidebarTitle":"Function Calling","icon":"wrench","href":"/en/api-capabilities/gemini/function-calling"},{"title":"Gemini API Web Search Guide","sidebarTitle":"Web Search","icon":"globe","href":"/en/api-capabilities/gemini/web-search"}]},{"group":"Grok API Calls","icon":"sparkles","pages":[{"title":"Grok Model Series Guide","sidebarTitle":"Grok Overview","icon":"rocket","href":"/en/api-capabilities/grok/overview"},{"title":"Grok Chat \u0026 Reasoning Guide","sidebarTitle":"Chat \u0026 Reasoning","icon":"message-square","href":"/en/api-capabilities/grok/chat"},{"title":"Grok Web Search \u0026 X Search Guide","sidebarTitle":"Web \u0026 X Search","icon":"globe","href":"/en/api-capabilities/grok/web-search"},{"title":"Grok Code Execution \u0026 Remote MCP Guide","sidebarTitle":"Code Execution \u0026 MCP","icon":"terminal","href":"/en/api-capabilities/grok/code-execution-mcp"},{"title":"Grok Multi-Agent Model Guide","sidebarTitle":"Multi-Agent Model","icon":"users","href":"/en/api-capabilities/grok/multi-agent"},{"title":"Grok Prompt Caching Billing Guide","sidebarTitle":"Cache Billing","icon":"database","href":"/en/api-capabilities/grok/prompt-caching"}]},{"group":"Text API Best Practices","icon":"book-check","pages":[{"title":"Long-form Output Practices","sidebarTitle":"Long-form Output","icon":"book-check","href":"/en/api-capabilities/long-form-output-practices"},{"title":"Multi-Turn Conversation Guide","sidebarTitle":"Multi-Turn Conversation","icon":"messages-square","href":"/en/api-capabilities/multi-turn-conversation"}]},{"title":"Balance Query API","icon":"wallet","href":"/en/api-capabilities/balance-query"},{"title":"Log Query API","icon":"file-text","href":"/en/api-capabilities/log-query"},{"title":"Token Management API","icon":"key","href":"/en/api-capabilities/token-management"},{"title":"Deprecated Models","icon":"triangle-alert","href":"/en/api-capabilities/deprecated-models"}]},{"group":"Image API (Official)","icon":"image","pages":[{"group":"Image API Essentials","icon":"book-check","pages":[{"title":"Image API Essentials \u0026 Best Practices","sidebarTitle":"Must-Read \u0026 Best Practices","icon":"book-check","href":"/en/api-capabilities/image-api-best-practices"},{"title":"Troubleshooting Image API Connection Drops","sidebarTitle":"Connection Drops","icon":"unplug","href":"/en/api-capabilities/image-connection-drops"},{"title":"Image Requests That Hang After the Data Has Arrived","sidebarTitle":"Requests Hanging at the End","icon":"hourglass","href":"/en/api-capabilities/image-tail-stall"},{"title":"Image Compression \u0026 Output Resolution","sidebarTitle":"Compression \u0026 Resolution","icon":"scaling","href":"/en/api-capabilities/image-compression-resolution"},{"title":"How to Get Satisfying Images","sidebarTitle":"Getting Satisfying Images","icon":"target","href":"/en/api-capabilities/image-generation-success-tips"},{"title":"Troubleshooting Safety Rejections: Find the Trigger Word by Ablation","sidebarTitle":"Safety Rejections","icon":"shield-alert","href":"/en/api-capabilities/image-safety-troubleshooting"},{"title":"Long Prompts and Two-Stage Generation: Where the 32K Limit Comes From","sidebarTitle":"Long Prompts","icon":"text-quote","href":"/en/api-capabilities/image-long-prompt"},{"title":"Advanced Image Generation: Workflow and Realism","sidebarTitle":"Advanced Workflow","icon":"workflow","href":"/en/api-capabilities/image-advanced-workflow"},{"title":"Image Prompt Doctor Skill","sidebarTitle":"Prompt Doctor Skill","description":"Packages the pre-generation prompt review into a drop-in Agent Skill for Codex, OpenClaw, hermes-agent, Claude Code and others: score a prompt against six elements, flag the vague words that hurt quality, and get a rewritten prompt you can use as-is. It can also review an actual result against the prompt that produced it. Defaults to gpt-5.6-luna.","icon":"stethoscope","href":"/en/api-capabilities/image-prompt-doctor"},{"group":"Image FAQ","icon":"circle-question-mark","pages":[{"title":"Image Request Hangs With No Result, but the Log Shows a Write Failure?","icon":"hourglass","href":"/en/faq/image-direct-large-response-stall"},{"title":"Image Calls Drop After About 90 Seconds Behind a Proxy?","description":"When you develop locally with a VPN or proxy on, image requests drop in batches after 90-180 seconds no matter how long your timeout is, and they are still billed. The proxy is closing connections that carry no data. Route api.apiyi.com directly to fix it.","icon":"unplug","href":"/en/faq/proxy-idle-timeout-disconnect"},{"title":"Why Does the Generated Image Differ Greatly from the Reference?","icon":"image","href":"/en/faq/image-result-differs-from-reference"},{"title":"How to fix the image content does not match MIME type error?","icon":"image","href":"/en/faq/image-mime-type-mismatch-with-query"},{"title":"Is There an Async Image API? Can I Query Results by Task ID?","icon":"image","href":"/en/faq/image-async-api"}]}]},{"group":"GPT-Image-2.5 / 2 Image Gen","icon":"sparkles","pages":[{"title":"GPT-Image-2.5 / 2 Image Generation/Edit","sidebarTitle":"GPT-Image-2.5 / 2 Overview","icon":"sparkles","href":"/en/api-capabilities/gpt-image-2/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/gpt-image-2-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/gpt-image-2/text-to-image"},{"title":"Image Edit API Reference","openapi":"api-reference/gpt-image-2-edit-openapi-en.yaml POST /v1/images/edits","icon":"image","href":"/en/api-capabilities/gpt-image-2/image-edit"},{"title":"GPT-Image-2.5 / 2 Series Agent Skill","icon":"blocks","href":"/en/api-capabilities/gpt-image-2/skills"},{"title":"Mask Inpainting Guide","sidebarTitle":"Mask Inpainting","icon":"brush","href":"/en/api-capabilities/gpt-image-2/mask-editing"},{"title":"GPT-Image Legacy Versions","sidebarTitle":"GPT-Image Legacy","icon":"rotate-ccw-clock","href":"/en/api-capabilities/gpt-image-2/historical-versions"},{"group":"GPT-Image FAQ","icon":"circle-question-mark","pages":[{"title":"How do I generate images with a transparent background (PNG cutouts)?","icon":"layers","href":"/en/faq/image-transparent-background"},{"title":"Why Are GPT Image Output Tokens So High?","icon":"calculator","href":"/en/faq/gpt-image-output-token-calculation"},{"title":"Codex Integration for GPT-Image Fails with Incorrect API Key","sidebarTitle":"Image Key Rejected by OpenAI","icon":"key-round","href":"/en/faq/gpt-image-incorrect-api-key-openai"}]}]},{"title":"GPT-image-2.5 / 2 Official vs Reverse","sidebarTitle":"GPT-image-2.5 / 2 Official vs Reverse","icon":"scale","href":"/en/api-capabilities/gpt-image-2/vs-gpt-image-2-all"},{"group":"GPT-Image-2.5-All Image Gen","icon":"sparkles","pages":[{"title":"GPT-Image-2.5-All Image Gen/Editing","sidebarTitle":"GPT-Image-2.5-All Overview","icon":"sparkles","href":"/en/api-capabilities/gpt-image-2-all/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/gpt-image-2-all-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/gpt-image-2-all/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/gpt-image-2-all-edit-openapi-en.yaml POST /v1/images/edits","icon":"image","href":"/en/api-capabilities/gpt-image-2-all/image-edit"},{"title":"GPT-Image-2.5-All Agent Skill","icon":"blocks","href":"/en/api-capabilities/gpt-image-2-all/skills"}]},{"group":"GPT-Image-2.5-VIP Image Gen","icon":"expand","pages":[{"title":"GPT-Image-2.5-VIP Image Gen/Editing","sidebarTitle":"GPT-Image-2.5-VIP Overview","icon":"expand","href":"/en/api-capabilities/gpt-image-2-vip/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/gpt-image-2-vip-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/gpt-image-2-vip/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/gpt-image-2-vip-edit-openapi-en.yaml POST /v1/images/edits","icon":"image","href":"/en/api-capabilities/gpt-image-2-vip/image-edit"},{"title":"GPT-Image-2.5-VIP Agent Skill","icon":"blocks","href":"/en/api-capabilities/gpt-image-2-vip/skills"}]},{"title":"Nano Banana Series Pricing","icon":"tag","href":"/en/api-capabilities/nano-banana-pricing"},{"group":"NanoBanana Best Practices","icon":"lightbulb","pages":[{"title":"Nano Banana Series Developer Guide","icon":"compass","href":"/en/api-capabilities/nano-banana-dev-guide"},{"title":"Usage Fields \u0026 Output Explained","sidebarTitle":"Usage Fields \u0026 Output Explained","icon":"receipt-text","href":"/en/api-capabilities/nano-banana-usage-metadata"},{"title":"Gemini Image Generation API Error Handling Guide","icon":"triangle-alert","href":"/en/api-capabilities/gemini-image-error-handling"},{"title":"Multi-Image Fusion Testing Guide","sidebarTitle":"Multi-Image Fusion Testing","icon":"layers","href":"/en/api-capabilities/multi-image-fusion-testing"},{"title":"Nano Banana Pro Failed-Generation Credit Reimbursement Plan","icon":"shield-check","href":"/en/api-capabilities/nano-banana-pro-guarantee"},{"title":"Nano Banana OSS Group","icon":"link","href":"/en/api-capabilities/nano-banana-oss-group"},{"group":"NB FAQ","icon":"circle-question-mark","pages":[{"title":"Image Edit Returns Unable to Process Input Image?","icon":"image-off","href":"/en/faq/gemini-empty-inlinedata"},{"title":"Why Does Gemini Image Return IMAGE_OTHER?","sidebarTitle":"IMAGE_OTHER","icon":"image-minus","href":"/en/faq/gemini-image-other"},{"title":"Why Does Gemini Image Return blockReason: OTHER?","sidebarTitle":"blockReason: OTHER","icon":"shield-alert","href":"/en/faq/gemini-image-input-blocked"},{"title":"Common Reasons for Nano Banana Image Generation Failures","icon":"image-off","href":"/en/faq/nano-banana-image-failure"},{"title":"Why Does the Gemini Image API Return NO_IMAGE?","icon":"image-off","href":"/en/faq/gemini-no-image"},{"title":"Why does my image turn reddish after editing with banana pro?","icon":"image","href":"/en/faq/banana-pro-edit-red-cast"},{"title":"How to fix distorted prints when changing outfits with Nano Banana Pro?","icon":"shirt","href":"/en/faq/nano-banana-pro-print-distortion"},{"title":"Why Does a White-Background Image Show Black Spots, Dirty Patches, or Blurry Color Blocks?","icon":"triangle-alert","href":"/en/faq/white-background-image-artifacts"}]}]},{"group":"Nano Banana 2.1 Image Gen","icon":"banana","pages":[{"title":"Nano Banana 2.1 Image Gen/Editing","icon":"banana","href":"/en/api-capabilities/gemini-nano-banana-2.1/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/gemini-nano-banana-2.1-generate-openapi-en.yaml POST /v1beta/models/gemini-nano-banana-2.1:generateContent","icon":"wand-sparkles","href":"/en/api-capabilities/gemini-nano-banana-2.1/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/gemini-nano-banana-2.1-edit-openapi-en.yaml POST /v1beta/models/gemini-nano-banana-2.1:generateContent","icon":"image","href":"/en/api-capabilities/gemini-nano-banana-2.1/image-edit"},{"title":"Nano Banana 2.1 Agent Skill","icon":"blocks","href":"/en/api-capabilities/gemini-nano-banana-2.1/skills"}]},{"group":"Nano Banana Pro Image Gen","icon":"banana","pages":[{"title":"Nano Banana Pro Image Generation","icon":"banana","href":"/en/api-capabilities/nano-banana-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/nano-banana-pro-generate-openapi-en.yaml POST /v1beta/models/gemini-3-pro-image-preview:generateContent","icon":"wand-sparkles","href":"/en/api-capabilities/nano-banana-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/nano-banana-pro-edit-openapi-en.yaml POST /v1beta/models/gemini-3-pro-image-preview:generateContent","icon":"image","href":"/en/api-capabilities/nano-banana-image/image-edit"},{"title":"Nano Banana Pro Agent Skill","icon":"blocks","href":"/en/api-capabilities/nano-banana-image/skills"}]},{"group":"Nano Banana 2 Image Gen","icon":"banana","pages":[{"title":"Nano Banana 2 Image Gen/Editing","icon":"banana","href":"/en/api-capabilities/nano-banana-2-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/nano-banana-2-generate-openapi-en.yaml POST /v1beta/models/gemini-3.1-flash-image-preview:generateContent","icon":"wand-sparkles","href":"/en/api-capabilities/nano-banana-2-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/nano-banana-2-edit-openapi-en.yaml POST /v1beta/models/gemini-3.1-flash-image-preview:generateContent","icon":"image","href":"/en/api-capabilities/nano-banana-2-image/image-edit"},{"title":"Nano Banana 2 Agent Skill","icon":"blocks","href":"/en/api-capabilities/nano-banana-2-image/skills"}]},{"group":"Nano Banana Lite Image Gen","icon":"banana","pages":[{"title":"Nano Banana Lite Image Gen/Editing","icon":"banana","href":"/en/api-capabilities/nano-banana-lite-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/nano-banana-lite-generate-openapi-en.yaml POST /v1beta/models/gemini-3.1-flash-lite-image:generateContent","icon":"wand-sparkles","href":"/en/api-capabilities/nano-banana-lite-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/nano-banana-lite-edit-openapi-en.yaml POST /v1beta/models/gemini-3.1-flash-lite-image:generateContent","icon":"image","href":"/en/api-capabilities/nano-banana-lite-image/image-edit"},{"title":"Nano Banana Lite Agent Skill","icon":"blocks","href":"/en/api-capabilities/nano-banana-lite-image/skills"}]},{"group":"FLUX Image Generation \u0026 Editing","icon":"sparkles","pages":[{"title":"FLUX Image Generation \u0026 Editing","sidebarTitle":"FLUX Overview","icon":"sparkles","href":"/en/api-capabilities/flux/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/flux-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/flux/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/flux-edit-openapi-en.yaml POST /v1/images/generations","icon":"image","href":"/en/api-capabilities/flux/image-edit"},{"title":"FLUX Historical Versions","sidebarTitle":"Historical Versions","icon":"rotate-ccw-clock","href":"/en/api-capabilities/flux/historical-versions"}]},{"group":"Seedream 5.0 Series","icon":"sparkles","pages":[{"title":"Seedream Image Generation \u0026 Editing","sidebarTitle":"Seedream Overview","icon":"sparkles","href":"/en/api-capabilities/seedream-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/seedream-image-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/seedream-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/seedream-image-edit-openapi-en.yaml POST /v1/images/generations","icon":"image","href":"/en/api-capabilities/seedream-image/image-edit"},{"title":"Seedream Historical Versions","sidebarTitle":"Historical Versions","icon":"rotate-ccw-clock","href":"/en/api-capabilities/seedream-image/historical-versions"}]},{"group":"Grok Imagine Official Image Gen","icon":"sparkles","pages":[{"title":"Grok Imagine Official Image Generation","sidebarTitle":"Grok Imagine Official Overview","icon":"sparkles","href":"/en/api-capabilities/grok-imagine-image-official/overview"},{"title":"Grok Imagine Official Text-to-Image API Reference","sidebarTitle":"Text-to-Image","openapi":"api-reference/grok-imagine-image-official-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/grok-imagine-image-official/text-to-image"}]},{"group":"Grok Imagine Reverse Image Gen \u0026 Editing","icon":"sparkles","pages":[{"title":"Grok Imagine Reverse Image Gen \u0026 Editing","sidebarTitle":"Grok Imagine Reverse Overview","icon":"sparkles","href":"/en/api-capabilities/grok-imagine-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/grok-imagine-image-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/grok-imagine-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/grok-imagine-image-edit-openapi-en.yaml POST /v1/images/edits","icon":"image","href":"/en/api-capabilities/grok-imagine-image/image-edit"}]},{"group":"MAI-Image 2.6 Image Gen \u0026 Editing","icon":"sparkles","pages":[{"title":"MAI-Image 2.6 Image Gen \u0026 Editing","sidebarTitle":"MAI-Image 2.6 Overview","icon":"sparkles","href":"/en/api-capabilities/mai-image/overview"},{"title":"Text-to-Image API Reference","openapi":"api-reference/mai-image-generate-openapi-en.yaml POST /v1/images/generations","icon":"wand-sparkles","href":"/en/api-capabilities/mai-image/text-to-image"},{"title":"Image Editing API Reference","openapi":"api-reference/mai-image-edit-openapi-en.yaml POST /v1/images/edits","icon":"image","href":"/en/api-capabilities/mai-image/image-edit"}]},{"title":"Image API Integration Practice: Build Your Own Async Queue","sidebarTitle":"Self-Hosted Async Queue","icon":"list-checks","href":"/en/api-capabilities/image-async-queue"}]},{"group":"Video API (Official)","icon":"video","pages":[{"group":"Seedance 2.0 / 2.5 (Volcengine)","icon":"film","pages":[{"title":"Seedance 2.0 / 2.5 Video Generation","sidebarTitle":"Seedance 2.0 / 2.5 Overview","icon":"film","href":"/en/api-capabilities/seedance2/overview"},{"title":"Seedance 2.0 / 2.5 Video Generation API Reference","sidebarTitle":"Video Generation","openapi":"api-reference/seedance2-video-openapi-en.yaml POST /seedance/api/v3/contents/generations/tasks","icon":"video","href":"/en/api-capabilities/seedance2/video-generation"},{"title":"Seedance 2.0 Video Agent Skill","icon":"blocks","href":"/en/api-capabilities/seedance2/skills"},{"title":"Seedance 2.0 Asset Library (Character-Consistent Video)","sidebarTitle":"Asset Library","icon":"images","href":"/en/api-capabilities/seedance2/asset-library"},{"title":"Asset-Referenced Video Generation in Code","sidebarTitle":"Asset Reference Guide","icon":"clapperboard","href":"/en/api-capabilities/seedance2/asset-reference"},{"title":"Asset-First: Faster, More Reliable Image and Video Inputs","sidebarTitle":"Asset-First Workflow","icon":"gauge","href":"/en/api-capabilities/seedance2/asset-first-workflow"},{"group":"SD FAQ","icon":"circle-question-mark","pages":[{"title":"Seedance Says First/Last Frame Cannot Be Mixed with Reference Media","sidebarTitle":"First Frame Mixed with Reference","icon":"layers","href":"/en/faq/seedance-first-frame-mixed-with-reference"},{"title":"Seedance Says invalid image format, but the Link Opens in a Browser","sidebarTitle":"Image Link Opens but Fails","icon":"link","href":"/en/faq/seedance-image-url-invalid-format"},{"title":"Seedance 2.5: Reference-to-Video vs. Video Editing","icon":"split","href":"/en/faq/seedance2-reference-vs-edit"},{"title":"Can I Cancel a Seedance Video Task After Submission?","icon":"video","href":"/en/faq/seedance-video-task-cancel"},{"title":"How do I look up a Seedance video's real cost by task_id?","icon":"receipt","href":"/en/faq/seedance-task-cost-lookup"},{"title":"Does Seedance 2.0 auto-upload face references to the asset library? Does it trigger the deepfake filter?","icon":"banana","href":"/en/faq/seedance2-asset-face-reference"},{"title":"Why Does Seedance 2.0 / 2.5 Block Face Assets?","icon":"scan-face","href":"/en/faq/seedance2-face-asset-whitelist"}]}]},{"group":"Wan3.0 Video Generation (Alibaba)","icon":"video","pages":[{"title":"Wan3.0 Video Generation (Alibaba Tongyi Wanxiang)","sidebarTitle":"Overview","icon":"video","href":"/en/api-capabilities/wan3/overview"},{"title":"Wan3.0 Video Generation API Reference","sidebarTitle":"Video Generation","openapi":"api-reference/wan3-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"wand-sparkles","href":"/en/api-capabilities/wan3/video-generation"}]},{"group":"Wan2.7 Video Generation (Alibaba)","icon":"videotape","pages":[{"title":"Wan Video Generation (Alibaba Cloud Tongyi Wanxiang)","sidebarTitle":"Wan Overview","icon":"video","href":"/en/api-capabilities/wan/overview"},{"title":"Wan2.7 Text-to-Video API Reference","sidebarTitle":"Text-to-Video","openapi":"api-reference/wan-text-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"wand-sparkles","href":"/en/api-capabilities/wan/text-to-video"},{"title":"Wan2.7 Image-to-Video API Reference","sidebarTitle":"Image-to-Video","openapi":"api-reference/wan-image-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"image","href":"/en/api-capabilities/wan/image-to-video"},{"title":"Wan2.7 Reference-to-Video API Reference","sidebarTitle":"Reference-to-Video","openapi":"api-reference/wan-reference-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"users","href":"/en/api-capabilities/wan/reference-to-video"},{"title":"Wan2.7 Video Edit API Reference","sidebarTitle":"Video Edit","openapi":"api-reference/wan-video-edit-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"scissors","href":"/en/api-capabilities/wan/video-edit"},{"title":"Wan2.7 and HappyHorse Video Agent Skill","icon":"blocks","href":"/en/api-capabilities/wan/skills"},{"title":"Wan Historical Versions (Wan2.6)","sidebarTitle":"Historical Versions","icon":"rotate-ccw-clock","href":"/en/api-capabilities/wan/historical-versions"}]},{"group":"HappyHorse Video Generation (Alibaba)","icon":"monitor-play","pages":[{"title":"HappyHorse Video Generation (Alibaba Cloud)","sidebarTitle":"HappyHorse Overview","icon":"monitor-play","href":"/en/api-capabilities/happyhorse/overview"},{"title":"HappyHorse Text-to-Video API Reference","sidebarTitle":"Text-to-Video","openapi":"api-reference/happyhorse-text-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"wand-sparkles","href":"/en/api-capabilities/happyhorse/text-to-video"},{"title":"HappyHorse Image-to-Video API Reference","sidebarTitle":"Image-to-Video","openapi":"api-reference/happyhorse-image-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"image","href":"/en/api-capabilities/happyhorse/image-to-video"},{"title":"HappyHorse Reference-to-Video API Reference","sidebarTitle":"Reference-to-Video","openapi":"api-reference/happyhorse-reference-to-video-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"users","href":"/en/api-capabilities/happyhorse/reference-to-video"},{"title":"HappyHorse Video Edit API Reference","sidebarTitle":"Video Edit","openapi":"api-reference/happyhorse-video-edit-openapi-en.yaml POST /wan/api/v1/services/aigc/video-generation/video-synthesis","icon":"scissors","href":"/en/api-capabilities/happyhorse/video-edit"},{"title":"HappyHorse Video Agent Skill","icon":"blocks","href":"/en/api-capabilities/happyhorse/skills"}]},{"group":"VEO 3.1 (Google)","icon":"clapperboard","pages":[{"title":"VEO 3.1 Official Video Generation","sidebarTitle":"VEO 3.1 Official Overview","icon":"video","href":"/en/api-capabilities/veo-3-1-official/overview"},{"title":"VEO 3.1 Official Text-to-Video API","sidebarTitle":"Text-to-Video","openapi":"api-reference/veo-3-1-official-text-to-video-openapi-en.yaml POST /v1/videos","icon":"wand-sparkles","href":"/en/api-capabilities/veo-3-1-official/text-to-video"},{"title":"VEO 3.1 Official Image-to-Video API","sidebarTitle":"Image-to-Video","openapi":"api-reference/veo-3-1-official-image-to-video-openapi-en.yaml POST /v1/videos","icon":"image","href":"/en/api-capabilities/veo-3-1-official/image-to-video"},{"title":"VEO 3.1 Official vs Reverse Channel Comparison","sidebarTitle":"Official vs Reverse","icon":"scale","href":"/en/api-capabilities/veo-3-1-official/vs-veo-reverse"}]},{"group":"Grok Imagine Video (xAI)","icon":"camera","pages":[{"title":"Grok Imagine Video Generation","sidebarTitle":"Grok Imagine Video Overview","icon":"video","href":"/en/api-capabilities/grok-imagine-video/overview"},{"title":"Grok Imagine Video Generation API Reference","sidebarTitle":"Video Generation","openapi":"api-reference/grok-imagine-video-openapi-en.yaml POST /v1/videos","icon":"wand-sparkles","href":"/en/api-capabilities/grok-imagine-video/video-generation"}]},{"group":"MiniMax H3 Video Generation (Self-hosted)","icon":"film","pages":[{"title":"MiniMax-H3 Video Generation","sidebarTitle":"MiniMax-H3 Overview","icon":"video","href":"/en/api-capabilities/minimax-h3/overview"},{"title":"MiniMax-H3 Video Generation API Reference","sidebarTitle":"Video Generation","openapi":"api-reference/minimax-h3-video-openapi-en.yaml POST /hailuo/v2/video_generation","icon":"video","href":"/en/api-capabilities/minimax-h3/video-generation"}]},{"group":"Oxygen Video Generation (AZ8)","icon":"clapperboard","pages":[{"title":"Oxygen Video Generation","sidebarTitle":"Oxygen Overview","icon":"video","href":"/en/api-capabilities/oxygen/overview"},{"title":"Oxygen Video Generation API Reference","sidebarTitle":"Video Generation","openapi":"api-reference/oxygen-video-openapi-en.yaml POST /videos","icon":"video","href":"/en/api-capabilities/oxygen/video-generation"}]}]},{"group":"Multimodal Understanding API","icon":"eye","pages":[{"title":"Vision Understanding (Image Recognition) API","icon":"eye","href":"/en/api-capabilities/vision-understanding"},{"title":"Video Understanding API","icon":"video","href":"/en/api-capabilities/video-understanding"},{"group":"Vision FAQ","icon":"circle-question-mark","pages":[{"title":"Image Understanding Requests Keep Timing Out — Is the Image Too Large?","icon":"image","href":"/en/faq/vision-image-too-large"}]}]},{"group":"Text Generation","icon":"file-text","pages":[{"title":"Text Generation (Chat Completions)","icon":"message-square","href":"/en/api-capabilities/text-generation"},{"group":"Gemini 4 Argon","icon":"sparkles","pages":[{"title":"Gemini 4 Argon Text Generation","sidebarTitle":"Gemini 4 Argon Overview","icon":"sparkles","href":"/en/api-capabilities/gemini-4-argon/overview"}]},{"group":"GPT-6 Astra","icon":"sparkles","pages":[{"title":"GPT-6 Astra Text Generation","sidebarTitle":"GPT-6 Astra Overview","icon":"sparkles","href":"/en/api-capabilities/gpt-6-astra/overview"}]},{"group":"DeepSeek V4 Flash Vision","icon":"eye","pages":[{"title":"DeepSeek V4 Flash Vision","sidebarTitle":"Overview","icon":"eye","href":"/en/api-capabilities/deepseek-v4-flash-vision/overview"},{"title":"DeepSeek V4 Flash Vision Chat API Reference","sidebarTitle":"Chat Playground","openapi":"api-reference/deepseek-v4-flash-vision-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/deepseek-v4-flash-vision/chat-completions"},{"title":"DeepSeek V4 Flash Vision Messages API Reference","sidebarTitle":"Messages Playground","openapi":"api-reference/deepseek-v4-flash-vision-messages-openapi-en.yaml POST /v1/messages","icon":"terminal","href":"/en/api-capabilities/deepseek-v4-flash-vision/messages"}]},{"group":"DeepSeek V4 Flash","icon":"zap","pages":[{"title":"DeepSeek V4 Flash Text Generation","sidebarTitle":"Overview","icon":"zap","href":"/en/api-capabilities/deepseek-v4-flash/overview"},{"title":"DeepSeek V4 Flash Chat API Reference","sidebarTitle":"Chat Playground","openapi":"api-reference/deepseek-v4-flash-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/deepseek-v4-flash/chat-completions"},{"title":"DeepSeek V4 Flash Responses API Reference","sidebarTitle":"Responses Playground","openapi":"api-reference/deepseek-v4-flash-responses-openapi-en.yaml POST /v1/responses","icon":"git-fork","href":"/en/api-capabilities/deepseek-v4-flash/responses"}]},{"group":"DeepSeek Search \u0026 Fetch","icon":"search","pages":[{"title":"DeepSeek Web Search and Fetch API","sidebarTitle":"Overview","icon":"search","href":"/en/api-capabilities/deepseek-search-fetch/overview"},{"title":"DeepSeek Web Search API Reference","sidebarTitle":"Search Playground","openapi":"api-reference/deepseek-search-openapi-en.yaml POST /v1/tools/search","icon":"terminal","href":"/en/api-capabilities/deepseek-search-fetch/search-api"},{"title":"DeepSeek Web Fetch API Reference","sidebarTitle":"Fetch Playground","openapi":"api-reference/deepseek-fetch-openapi-en.yaml POST /v1/tools/fetch","icon":"terminal","href":"/en/api-capabilities/deepseek-search-fetch/fetch-api"}]},{"group":"Seed 2.1 Turbo","icon":"zap","pages":[{"title":"Seed 2.1 Turbo Text Generation","sidebarTitle":"Overview","icon":"message-square","href":"/en/api-capabilities/dola-seed-2-1-turbo/overview"},{"title":"Seed 2.1 Turbo Chat API Reference","sidebarTitle":"Chat Playground","openapi":"api-reference/dola-seed-2-1-turbo-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/dola-seed-2-1-turbo/chat-completions"},{"title":"Seed 2.1 Turbo Responses API Reference","sidebarTitle":"Responses Playground","openapi":"api-reference/dola-seed-2-1-turbo-responses-openapi-en.yaml POST /v1/responses","icon":"messages-square","href":"/en/api-capabilities/dola-seed-2-1-turbo/responses"}]},{"group":"Gemini Flash Series","icon":"sparkles","pages":[{"title":"Gemini 3.8 Flash Text Generation","sidebarTitle":"Gemini 3.8 Flash Overview","icon":"sparkles","href":"/en/api-capabilities/gemini-3-8-flash/overview"},{"title":"Gemini 3.6 Flash Text Generation","sidebarTitle":"Gemini 3.6 Flash Overview","icon":"sparkles","href":"/en/api-capabilities/gemini-3-6-flash/overview"},{"title":"Gemini 3.6 Flash Native API Reference","sidebarTitle":"3.6 Native Playground","openapi":"api-reference/gemini-3-6-flash-native-openapi-en.yaml POST /v1beta/models/gemini-3.6-flash:generateContent","icon":"terminal","href":"/en/api-capabilities/gemini-3-6-flash/generate-content"},{"title":"Gemini 3.6 Flash Chat API Reference","sidebarTitle":"3.6 Chat Playground","openapi":"api-reference/gemini-3-6-flash-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/gemini-3-6-flash/chat-completions"}]},{"group":"Gemini 3.5 Flash-Lite","icon":"feather","pages":[{"title":"Gemini 3.5 Flash-Lite Text Generation","sidebarTitle":"Overview","icon":"feather","href":"/en/api-capabilities/gemini-3-5-flash-lite/overview"},{"title":"Gemini 3.5 Flash-Lite Native API Reference","sidebarTitle":"Native Playground","openapi":"api-reference/gemini-3-5-flash-lite-native-openapi-en.yaml POST /v1beta/models/gemini-3.5-flash-lite:generateContent","icon":"terminal","href":"/en/api-capabilities/gemini-3-5-flash-lite/generate-content"},{"title":"Gemini 3.5 Flash-Lite Chat API Reference","sidebarTitle":"Chat Playground","openapi":"api-reference/gemini-3-5-flash-lite-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/gemini-3-5-flash-lite/chat-completions"}]},{"group":"Qwen3 Series","icon":"puzzle","pages":[{"title":"Qwen3.8-Max Text Generation","sidebarTitle":"Overview","icon":"puzzle","href":"/en/api-capabilities/qwen-3-8/overview"},{"title":"Qwen3.8-Max Chat API Reference","sidebarTitle":"Chat Playground","openapi":"api-reference/qwen-3-8-max-chat-openapi-en.yaml POST /v1/chat/completions","icon":"terminal","href":"/en/api-capabilities/qwen-3-8/chat-completions"},{"title":"Qwen3.6 Text Model Series (Legacy)","sidebarTitle":"Qwen3.6 (Legacy)","icon":"puzzle","href":"/en/api-capabilities/qwen-3-6/overview"}]},{"title":"Kimi K2.5 Text Generation","sidebarTitle":"Kimi K2.5","icon":"bot","href":"/en/api-capabilities/kimi-k2-5"}]},{"group":"Audio API (Official)","icon":"audio-lines","pages":[{"title":"Realtime Voice (WebSocket)","sidebarTitle":"Realtime Voice Overview","icon":"audio-lines","href":"/en/api-capabilities/realtime/overview"}]},{"group":"Retrieval \u0026 Safety","icon":"search","pages":[{"title":"Text Embedding API","icon":"vector-square","href":"/en/api-capabilities/text-embedding"},{"title":"Embedding Tuning in Practice","sidebarTitle":"Embedding Tuning","icon":"sliders-horizontal","href":"/en/api-capabilities/embedding-best-practices"},{"group":"Rerank","icon":"list-ordered","pages":[{"title":"bge-reranker-v2-m3 Text Reranking","sidebarTitle":"Overview","icon":"list-ordered","href":"/en/api-capabilities/rerank/overview"},{"title":"Rerank API Reference","sidebarTitle":"Playground","openapi":"api-reference/bge-reranker-v2-m3-rerank-openapi-en.yaml POST /v1/rerank","icon":"terminal","href":"/en/api-capabilities/rerank/rerank-api"},{"title":"RAG Tuning in Practice","sidebarTitle":"RAG Tuning","icon":"sliders-horizontal","href":"/en/api-capabilities/rerank/rag-best-practices"}]},{"title":"Text Moderation","icon":"shield-check","href":"/en/api-capabilities/text-moderation"}]}]},{"tab":"Use Cases","icon":"layout-grid","pages":[{"title":"Use Cases","href":"/en/scenarios"}]},{"tab":"FAQ","icon":"circle-question-mark","groups":[{"group":"Overview","pages":[{"title":"FAQ Overview","sidebarTitle":"FAQ","icon":"circle-question-mark","href":"/en/faq"}]},{"group":"Site Features","icon":"compass","pages":[{"title":"Tokens \u0026 Groups","icon":"key","href":"/en/faq/token-and-groups"},{"title":"What is a Group? User Group vs Token Group Explained","icon":"layers","href":"/en/faq/groups-explained"},{"title":"How Do the Codex, ClaudeCode, and Default Groups Differ?","icon":"code","href":"/en/faq/codex-claudecode-default-groups"},{"title":"Is There One-Click Integration?","icon":"plug","href":"/en/faq/one-click-integration"}]},{"group":"Tokens \u0026 Logs","icon":"key","pages":[{"title":"What Is a Personal Access Token and How Do I Replace the System Token?","icon":"key-round","href":"/en/faq/personal-access-token"},{"title":"How to create a KEY?","icon":"key","href":"/en/faq/token-management"},{"title":"Do I Need to Set Available Models for Tokens?","icon":"list-check","href":"/en/faq/token-model-whitelist"},{"title":"How Do I Manage API Keys Securely?","icon":"shield-check","href":"/en/faq/key-security-management"},{"title":"What's the Difference Between Token Billing Modes?","icon":"calculator","href":"/en/faq/token-billing-modes"},{"title":"How to view my call records?","icon":"file-text","href":"/en/faq/call-logs"},{"title":"Where Can I Find the Request ID?","icon":"search","href":"/en/faq/request-id-troubleshooting"},{"title":"How do I read the billing amounts in the logs?","icon":"receipt","href":"/en/faq/log-billing-explained"},{"title":"How long are call logs kept, and when are they cleared?","icon":"clock","href":"/en/faq/log-retention-policy"},{"title":"What should I know about log timezone settings and data export?","icon":"globe","href":"/en/faq/log-timezone-and-export"},{"title":"Can I View Detailed Logs in the Backend for Troubleshooting?","icon":"toggle-right","href":"/en/faq/user-logs-control"},{"title":"How do I investigate unexpected API Key usage?","icon":"key","href":"/en/faq/troubleshoot-key-usage"}]},{"group":"Enterprise Services","icon":"building-2","pages":[{"title":"What Is the Enterprise Group? When Should You Use It?","icon":"building-2","href":"/en/faq/enterprise-group-vertex-fallback"},{"title":"Is There a Faster or Enterprise Route for Image Generation?","icon":"route","href":"/en/faq/image-generation-fast-enterprise-route"},{"title":"Is APIYI's Enterprise Service Trustworthy? Are the Models Authentic?","icon":"badge-check","href":"/en/faq/enterprise-trust"},{"title":"What's the difference between enterprise and individual users?","icon":"building-2","href":"/en/faq/enterprise-vs-individual"},{"title":"How do enterprise customers recharge?","icon":"landmark","href":"/en/faq/enterprise-recharge"},{"title":"How can university customers reimburse worry-free?","icon":"graduation-cap","href":"/en/faq/university-reimbursement"},{"title":"Does APIYI offer SLA guarantees?","icon":"shield-check","href":"/en/faq/sla-guarantee"},{"title":"Does an Agent Mini-Program Need Algorithm Filing?","icon":"file-check","href":"/en/faq/agent-miniapp-algorithm-filing"},{"title":"How Do I Handle Compliance for a China-Facing Product Using Overseas Models?","icon":"scale","href":"/en/faq/overseas-model-compliance"}]},{"group":"Billing \u0026 Security","icon":"shield","pages":[{"title":"Prices Match the Official Rates — Why Buy from APIYI?","icon":"badge-percent","href":"/en/faq/official-pricing-advantages"},{"title":"How can APIYI price below the official rates?","icon":"trending-down","href":"/en/faq/why-cheaper-than-official"},{"title":"What Does the Model 'Multiplier' Mean?","icon":"calculator","href":"/en/faq/model-multiplier"},{"title":"How Much Computing Power Does 100 RMB Get?","icon":"calculator","href":"/en/faq/rmb-to-computing-power"},{"title":"What is the pre-deduction mechanism for API calls?","icon":"calculator","href":"/en/faq/pre-deduction-quota"},{"title":"Does APIYI Support Cache Billing?","icon":"database","href":"/en/faq/cache-billing"},{"title":"What Payment Methods Does APIYI Support?","icon":"credit-card","href":"/en/faq/payment-methods"},{"title":"What recharge promotions are available?","icon":"gift","href":"/en/faq/recharge-promotions"},{"title":"Does my APIYI balance expire? What is the validity period?","icon":"hourglass","href":"/en/faq/balance-validity-period"},{"title":"How to Set Up Balance Alerts?","icon":"bell","href":"/en/faq/balance-alerts"},{"title":"Why can't I run requests with remaining balance?","icon":"credit-card","href":"/en/faq/balance-insufficient"},{"title":"What if my invoice amount is less than $100?","icon":"receipt","href":"/en/faq/invoice-minimum-amount"},{"title":"I entered the wrong invoice details. Can the invoice be reissued?","icon":"receipt","href":"/en/faq/invoice-reissue"},{"title":"What Is APIYI's Refund Policy?","icon":"receipt","href":"/en/faq/refund-policy"},{"title":"How do I apply for an agent partnership? Can I earn rebates by inviting friends?","icon":"users","href":"/en/faq/referral-program"},{"title":"How is content safety and compliance ensured?","icon":"shield-check","href":"/en/faq/content-safety"},{"title":"How does APIYI ensure data security?","icon":"shield","href":"/en/faq/data-security"}]},{"group":"Models \u0026 API","icon":"cpu","pages":[{"title":"Why Does Hermes Show Only Some Models in Its Model List?","icon":"list","href":"/en/faq/hermes-model-list-mismatch"},{"title":"Does APIYI Support the Files API?","icon":"file-up","href":"/en/faq/files-api-not-supported"},{"title":"Does APIYI Support OpenAI Fast / Ultrafast Mode?","icon":"gauge","href":"/en/faq/openai-service-tier-fast-mode"},{"title":"Image Understanding Requests Keep Timing Out — Is the Image Too Large?","icon":"image","href":"/en/faq/vision-image-too-large"},{"title":"Why Do My Logs Show Haiku When Claude Code Is Set to Opus?","icon":"terminal","href":"/en/faq/claude-code-haiku-background-model"},{"title":"Why Does My Terminal Say apiyi Command Not Found?","icon":"terminal","href":"/en/faq/apiyi-cli-command-not-found"},{"title":"Why Does a Claude Refusal Return Empty Content?","icon":"message-square-x","href":"/en/faq/claude-content-safety-refusal"},{"title":"How Do I Fix Claude's Invalid Thinking Signature Error?","icon":"file-signature","href":"/en/faq/claude-thinking-signature-invalid"},{"title":"How Do I Fix Gemini Thought Signature 400 Errors in Tool Calls?","icon":"file-signature","href":"/en/faq/gemini-thought-signature-missing"},{"title":"What Does an OpenAI Model Refusal Look Like?","icon":"message-square-x","href":"/en/faq/openai-content-safety-refusal"},{"title":"How Do Streaming and Non-Streaming Requests Differ When Content Is Filtered?","sidebarTitle":"Streaming \u0026 Content Filtering","icon":"shield-half","href":"/en/faq/streaming-content-filter"},{"title":"Do Google Models Run on AI Studio or Vertex?","icon":"split","href":"/en/faq/google-upstream-aistudio-vertex"},{"title":"Why Does a White-Background Image Show Black Spots, Dirty Patches, or Blurry Color Blocks?","icon":"triangle-alert","href":"/en/faq/white-background-image-artifacts"},{"title":"How do I generate images with a transparent background (PNG cutouts)?","icon":"layers","href":"/en/faq/image-transparent-background"},{"title":"How to Choose the Right AI Model?","icon":"compass","href":"/en/faq/model-selection-guide"},{"title":"Is there a conversational API that outputs both text and generated images?","sidebarTitle":"Text + image in one API","icon":"images","href":"/en/faq/text-and-image-in-one-api"},{"title":"Why can't I use some models?","icon":"lock","href":"/en/faq/model-availability"},{"title":"How Can I Troubleshoot Model API Errors?","icon":"alert-triangle","href":"/en/faq/model-error-troubleshooting"},{"title":"Seedance Says invalid image format, but the Link Opens in a Browser","sidebarTitle":"Image Link Opens but Fails","icon":"link","href":"/en/faq/seedance-image-url-invalid-format"},{"title":"Seedance Says First/Last Frame Cannot Be Mixed with Reference Media","sidebarTitle":"First Frame Mixed with Reference","icon":"layers","href":"/en/faq/seedance-first-frame-mixed-with-reference"},{"title":"Can I Cancel a Seedance Video Task After Submission?","icon":"video","href":"/en/faq/seedance-video-task-cancel"},{"title":"How do I look up a Seedance video's real cost by task_id?","icon":"receipt","href":"/en/faq/seedance-task-cost-lookup"},{"title":"Seedance 2.5: Reference-to-Video vs. Video Editing","icon":"split","href":"/en/faq/seedance2-reference-vs-edit"},{"title":"Why do official web apps and the API give different results?","icon":"layers","href":"/en/faq/webapp-vs-api-difference"},{"title":"Why Don't AI Models Know Their Own Version?","icon":"circle-question-mark","href":"/en/faq/model-version-identity"},{"title":"Why Does Claude Claim to Be Qwen or DeepSeek?","icon":"venetian-mask","href":"/en/faq/claude-identity-confusion"},{"title":"What does the -c suffix in model names mean?","icon":"tag","href":"/en/faq/model-name-suffix-c"},{"title":"How to Configure Base URL? Differences Between /v1, Root Domain, and /v1beta","icon":"link","href":"/en/faq/base-url-config"},{"title":"What's the difference between streaming and non-streaming calls?","sidebarTitle":"Streaming vs Non-streaming","icon":"audio-lines","href":"/en/faq/streaming-vs-non-streaming"},{"title":"How do I avoid API timeouts?","icon":"timer","href":"/en/faq/timeout-configuration"},{"title":"The log says the call finished and was billed, but my client never received a response — how do I troubleshoot?","icon":"stethoscope","href":"/en/faq/log-duration-vs-client-wait"},{"title":"What Are the API Concurrency Limits?","icon":"gauge","href":"/en/faq/api-concurrency"},{"title":"What is max_tokens? What Happens If Not Set?","icon":"sliders-horizontal","href":"/en/faq/max-tokens"},{"title":"Common Reasons for Nano Banana Image Generation Failures","icon":"image-off","href":"/en/faq/nano-banana-image-failure"},{"title":"Why Does the Gemini Image API Return NO_IMAGE?","icon":"image-off","href":"/en/faq/gemini-no-image"},{"title":"Why Does Gemini Image Return blockReason: OTHER?","sidebarTitle":"blockReason: OTHER","icon":"shield-alert","href":"/en/faq/gemini-image-input-blocked"},{"title":"Image Edit Returns Unable to Process Input Image?","icon":"image-off","href":"/en/faq/gemini-empty-inlinedata"},{"title":"Why Does Gemini Image Return IMAGE_OTHER?","sidebarTitle":"IMAGE_OTHER","icon":"image-minus","href":"/en/faq/gemini-image-other"},{"title":"Why does my image turn reddish after editing with banana pro?","icon":"image","href":"/en/faq/banana-pro-edit-red-cast"},{"title":"How to fix distorted prints when changing outfits with Nano Banana Pro?","icon":"shirt","href":"/en/faq/nano-banana-pro-print-distortion"},{"title":"Why Does the Generated Image Differ Greatly from the Reference?","icon":"image","href":"/en/faq/image-result-differs-from-reference"},{"title":"How to fix the image content does not match MIME type error?","icon":"image","href":"/en/faq/image-mime-type-mismatch-with-query"},{"title":"Is There an Async Image API? Can I Query Results by Task ID?","icon":"image","href":"/en/faq/image-async-api"},{"title":"Why Are GPT Image Output Tokens So High?","icon":"calculator","href":"/en/faq/gpt-image-output-token-calculation"},{"title":"Codex Integration for GPT-Image Fails with Incorrect API Key","sidebarTitle":"Image Key Rejected by OpenAI","icon":"key-round","href":"/en/faq/gpt-image-incorrect-api-key-openai"},{"title":"Does Seedance 2.0 auto-upload face references to the asset library? Does it trigger the deepfake filter?","icon":"banana","href":"/en/faq/seedance2-asset-face-reference"},{"title":"Why Does Seedance 2.0 / 2.5 Block Face Assets?","icon":"scan-face","href":"/en/faq/seedance2-face-asset-whitelist"},{"title":"Does the API Have Memory Like ChatGPT?","icon":"brain","href":"/en/faq/api-memory"}]},{"group":"Network \u0026 Connection","icon":"wifi","pages":[{"title":"Do I Need a Proxy to Use the API?","icon":"wifi","href":"/en/faq/network-proxy"},{"title":"Python Raises SSLEOFError but curl Works?","icon":"shield-alert","href":"/en/faq/openssl-pq-handshake-eof"},{"title":"Where are APIYI's Servers? Which Server Should I Choose?","icon":"server","href":"/en/faq/server-location"},{"title":"CDN Image/Video Downloads Slow or Timing Out — What to Do?","icon":"gauge","href":"/en/faq/cdn-download-slow"},{"title":"Is http the Same as HTTP/1.1?","icon":"network","href":"/en/faq/http-vs-http11"},{"title":"How Can I Reduce Image API Latency?","icon":"gauge","href":"/en/faq/image-api-network-latency-optimization"},{"title":"Website or API Returns 502 — What Should I Do?","icon":"refresh-cw","href":"/en/faq/website-502-error"},{"title":"Script Gets 502 but Nothing in the Call Logs?","icon":"unplug","href":"/en/faq/proxy-empty-502"},{"title":"Image Calls Drop After About 90 Seconds Behind a Proxy?","description":"When you develop locally with a VPN or proxy on, image requests drop in batches after 90-180 seconds no matter how long your timeout is, and they are still billed. The proxy is closing connections that carry no data. Route api.apiyi.com directly to fix it.","icon":"unplug","href":"/en/faq/proxy-idle-timeout-disconnect"},{"title":"Image Request Hangs With No Result, but the Log Shows a Write Failure?","icon":"hourglass","href":"/en/faq/image-direct-large-response-stall"}]},{"group":"Account \u0026 Login","icon":"user","pages":[{"title":"How Do I Keep My Account Secure? Why Bind 2FA and a Passkey?","description":"Add a second verification step to your APIYI account: bind a Passkey (fingerprint/face) or 2FA (authenticator code). Even if your password leaks, no one can sign in without the second factor. Every user should bind one — it takes a few minutes.","icon":"shield-check","href":"/en/faq/account-security-2fa-passkey"},{"title":"Which email providers does APIYI support for registration?","icon":"mail","href":"/en/faq/email-registration"},{"title":"How do I sign in with a Passkey?","icon":"fingerprint-pattern","href":"/en/faq/passkey-login"},{"title":"GitHub Login Shows 'Account Already Bound'?","icon":"github","href":"/en/faq/github-bindng-bindng-error"},{"title":"What If I Forgot My Password?","icon":"lock","href":"/en/faq/forgot-password"},{"title":"Why is my API Key invalid?","icon":"key","href":"/en/faq/invalid-api-key"},{"title":"How Do I Delete My Account?","icon":"trash","href":"/en/faq/account-deletion"}]}]},{"tab":"Live Updates","icon":"activity","pages":[{"title":"Live Updates","href":"/en/live"}]},{"tab":"Announcements","icon":"megaphone","pages":[{"title":"Announcements","href":"/en/changelog"}]},{"tab":"Promotions","icon":"gift","pages":[{"title":"Promotions","href":"/en/faq/recharge-promotions"}]},{"tab":"Model Pricing","icon":"circle-dollar-sign","pages":[{"title":"Model Pricing","href":"/en/models"}]}]},{"language":"zh-Hant","banner":{"content":"本頁由程式自動轉換為繁體中文,用詞以台灣正體為準;如有歧義請以[簡體中文版](/)為準。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 整合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 開發者套件(中文)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"使用者口碑 / Wall of Love","items":[{"label":"使用者口碑(中文)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"首頁"},{"href":"https://imagen.apiyi.com","label":"AI出圖"},{"href":"https://icover.ai","label":"AI影片"}],"primary":{"type":"button","label":"控制台","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"zh-Hant","href":"/zh-Hant/faq/image-direct-large-response-stall"}]},{"language":"ja","banner":{"content":"このページは AI により翻訳されています。内容に相違がある場合は[English 版](/en)を正としてください。","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI統合","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI開発者キット(中国語)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"ユーザーの声 / Wall of Love","items":[{"label":"ユーザーの声(中国語)","href":"/wall-of-love"},{"label":"Wall of Love(英語)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"ホーム"},{"href":"https://imagen.apiyi.com","label":"AI画像生成"},{"href":"https://icover.ai","label":"AI動画生成"}],"primary":{"type":"button","label":"コンソール","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"ja","href":"/ja/faq/image-direct-large-response-stall"}]},{"language":"ko","banner":{"content":"이 페이지는 AI로 번역되었습니다. 내용이 다를 경우 [English 버전](/en)을 기준으로 하십시오.","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI 통합","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"AI 개발자 키트(중국어)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"사용자 후기 / Wall of Love","items":[{"label":"사용자 후기(중국어)","href":"/wall-of-love"},{"label":"Wall of Love (영문)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"홈"},{"href":"https://imagen.apiyi.com","label":"AI 이미지 생성"},{"href":"https://icover.ai","label":"AI 동영상 생성"}],"primary":{"type":"button","label":"콘솔","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"ko","href":"/ko/faq/image-direct-large-response-stall"}]},{"language":"ru","banner":{"content":"Эта страница переведена с помощью ИИ. При расхождениях ориентируйтесь на [английскую версию](/en).","dismissible":true},"footer":{"socials":{"website":"https://api.apiyi.com"},"links":[{"header":"AI-интеграция","items":[{"label":"skill.md","href":"https://docs.apiyi.com/skill.md"},{"label":"llms.txt","href":"https://docs.apiyi.com/llms.txt"},{"label":"llms-full.txt","href":"https://docs.apiyi.com/llms-full.txt"},{"label":"model-registry.json","href":"https://docs.apiyi.com/model-registry.json"},{"label":"Набор AI-разработчика (кит.)","href":"/developer-kit"},{"label":"AI Developer Kit (EN)","href":"/en/developer-kit"}]},{"header":"Отзывы пользователей / Wall of Love","items":[{"label":"Отзывы пользователей (на китайском)","href":"/wall-of-love"},{"label":"Wall of Love (EN)","href":"/en/wall-of-love"}]}]},"navbar":{"links":[{"href":"https://api.apiyi.com","label":"Главная"},{"href":"https://imagen.apiyi.com","label":"Генерация изображений"},{"href":"https://icover.ai","label":"Генерация видео"}],"primary":{"type":"button","label":"Консоль","href":"https://api.apiyi.com/account/profile"}},"pages":[{"title":"ru","href":"/ru/faq/image-direct-large-response-stall"}]}]},"title":"Image Request Hangs With No Result, but the Log Shows a Write Failure? - API易文档中心","buildId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","deploymentId":"dpl_9DauxEjb9gzCtcuhPQFbquJvx7FJ","dynamics":["10e4515597"],"chunks":["BannerMarkdown-TG4bywHJ.js","dist-Bd0qg17S.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-D-31Aetf.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}