@henjicc/ai-sdk 0.2.8 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.md +157 -141
  2. package/README.md +497 -455
  3. package/dist/capabilities/embedding/bailian.d.ts +23 -0
  4. package/dist/capabilities/embedding/bailian.js +10 -0
  5. package/dist/capabilities/embedding/bigmodel.d.ts +9 -0
  6. package/dist/capabilities/embedding/bigmodel.js +5 -0
  7. package/dist/capabilities/embedding/index.d.ts +1 -0
  8. package/dist/capabilities/embedding/index.js +1 -0
  9. package/dist/capabilities/embedding/ppio.d.ts +7 -0
  10. package/dist/capabilities/embedding/ppio.js +5 -0
  11. package/dist/capabilities/embedding/siliconflow.d.ts +21 -0
  12. package/dist/capabilities/embedding/siliconflow.js +10 -0
  13. package/dist/capabilities/embedding/volcengine.d.ts +10 -0
  14. package/dist/capabilities/embedding/volcengine.js +6 -0
  15. package/dist/capabilities/rerank/bailian.d.ts +21 -0
  16. package/dist/capabilities/rerank/bailian.js +14 -0
  17. package/dist/capabilities/rerank/bigmodel.d.ts +9 -0
  18. package/dist/capabilities/rerank/bigmodel.js +5 -0
  19. package/dist/capabilities/rerank/index.d.ts +1 -0
  20. package/dist/capabilities/rerank/index.js +1 -0
  21. package/dist/capabilities/rerank/ppio.d.ts +7 -0
  22. package/dist/capabilities/rerank/ppio.js +5 -0
  23. package/dist/capabilities/rerank/siliconflow.d.ts +21 -0
  24. package/dist/capabilities/rerank/siliconflow.js +10 -0
  25. package/dist/capabilities/retrieval/http.d.ts +3 -0
  26. package/dist/capabilities/retrieval/http.js +48 -0
  27. package/dist/capabilities/retrieval/module.d.ts +11 -0
  28. package/dist/capabilities/retrieval/module.js +110 -0
  29. package/dist/capabilities/retrieval/types.d.ts +54 -0
  30. package/dist/capabilities/retrieval/types.js +1 -0
  31. package/dist/capabilities/retrieval/validation.d.ts +10 -0
  32. package/dist/capabilities/retrieval/validation.js +65 -0
  33. package/dist/capabilities/types.d.ts +1 -1
  34. package/dist/catalog/apimart/gpt-image-2.5.model.d.ts +2 -0
  35. package/dist/catalog/apimart/gpt-image-2.5.model.js +51 -0
  36. package/dist/catalog/fal/gpt-image-2.5.model.d.ts +2 -0
  37. package/dist/catalog/fal/gpt-image-2.5.model.js +53 -0
  38. package/dist/catalog/fal/ic-light-v2.model.js +9 -13
  39. package/dist/catalog/grsai/gpt-image-2.5.model.d.ts +2 -0
  40. package/dist/catalog/grsai/gpt-image-2.5.model.js +54 -0
  41. package/dist/catalog/grsai/gptImage25Sizes.d.ts +1 -0
  42. package/dist/catalog/grsai/gptImage25Sizes.js +76 -0
  43. package/dist/catalog/index.js +112 -104
  44. package/dist/catalog/kie/gpt-image-2.5.model.d.ts +2 -0
  45. package/dist/catalog/kie/gpt-image-2.5.model.js +38 -0
  46. package/dist/catalog/shared/gptImage25.d.ts +16 -0
  47. package/dist/catalog/shared/gptImage25.js +48 -0
  48. package/dist/catalog/shared/gptImage25Pricing.d.ts +12 -0
  49. package/dist/catalog/shared/gptImage25Pricing.js +508 -0
  50. package/dist/llm/defaults.d.ts +1 -1
  51. package/dist/llm/defaults.js +1 -1
  52. package/dist/llm/discovery.d.ts +2 -0
  53. package/dist/llm/discovery.js +16 -5
  54. package/dist/llm/modelCatalogEntries.js +32 -0
  55. package/dist/llm/providerPresets.d.ts +3 -1
  56. package/dist/llm/providerPresets.js +6 -3
  57. package/dist/llm/providerReasoningRequest.js +14 -1
  58. package/dist/llm/siliconflow/index.d.ts +21 -0
  59. package/dist/llm/siliconflow/index.js +32 -0
  60. package/dist/llm/siliconflow/preset.d.ts +6 -0
  61. package/dist/llm/siliconflow/preset.js +33 -0
  62. package/dist/packs/models/apimart/gpt-image-2.5.d.ts +6 -0
  63. package/dist/packs/models/apimart/gpt-image-2.5.js +7 -0
  64. package/dist/packs/models/fal/gpt-image-2.5.d.ts +6 -0
  65. package/dist/packs/models/fal/gpt-image-2.5.js +7 -0
  66. package/dist/packs/models/grsai/gpt-image-2.5.d.ts +6 -0
  67. package/dist/packs/models/grsai/gpt-image-2.5.js +7 -0
  68. package/dist/packs/models/kie/gpt-image-2.5.d.ts +6 -0
  69. package/dist/packs/models/kie/gpt-image-2.5.js +7 -0
  70. package/dist/packs/provider-packs/apimart.d.ts +1 -1
  71. package/dist/packs/provider-packs/apimart.js +21 -20
  72. package/dist/packs/provider-packs/fal.d.ts +1 -1
  73. package/dist/packs/provider-packs/fal.js +37 -36
  74. package/dist/packs/provider-packs/grsai.d.ts +1 -1
  75. package/dist/packs/provider-packs/grsai.js +6 -5
  76. package/dist/packs/provider-packs/kie.d.ts +1 -1
  77. package/dist/packs/provider-packs/kie.js +28 -27
  78. package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.d.ts → qwen-image-edit-2511-multiple-angles.d.ts} +1 -1
  79. package/dist/packs/tool-models/fal/{qwen-image-edit-2509-multiple-angles.js → qwen-image-edit-2511-multiple-angles.js} +1 -1
  80. package/dist/packs/tool-packs/fal-multi-angle-tools.js +1 -1
  81. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2511-multiple-angles.model.d.ts +2 -0
  82. package/dist/tool-packs/fal-multi-angle/models/{qwen-image-edit-2509-multiple-angles.model.js → qwen-image-edit-2511-multiple-angles.model.js} +20 -17
  83. package/docs/README.md +26 -26
  84. package/docs/consumers.md +56 -48
  85. package/docs/llm-adaptation/README.md +139 -137
  86. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +103 -91
  87. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +75 -75
  88. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/MiniMax.md +84 -84
  89. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +85 -85
  90. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +232 -232
  91. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +87 -87
  92. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274Qwen.md +84 -84
  93. package/docs/llm-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +88 -88
  94. package/docs/model-adaptation/Bria-Eraser/Bria-Eraser_Fal.md +32 -32
  95. package/docs/model-adaptation/Bria-/345/210/233/346/204/217/346/224/276/345/244/247/Bria-/345/210/233/346/204/217/346/224/276/345/244/247_Fal.md +31 -31
  96. package/docs/model-adaptation/ControlLight/ControlLight_Fal.md +85 -85
  97. package/docs/model-adaptation/FLUX-2-/345/244/232/350/247/222/345/272/246/FLUX-2-/345/244/232/350/247/222/345/272/246_Fal.md +107 -107
  98. package/docs/model-adaptation/Finegrain-Eraser/Finegrain-Eraser_Fal.md +31 -31
  99. package/docs/model-adaptation/Flux-Pro-Erase/Flux-Pro-Erase_Fal.md +34 -34
  100. package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +43 -43
  101. package/docs/model-adaptation/Fun-ASR-Flash-2026-06-15/Fun-ASR-Flash-2026-06-15_/347/231/276/347/202/274.md +41 -41
  102. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +37 -37
  103. package/docs/model-adaptation/Fun-ASR-Realtime-2026-02-28/Fun-ASR-Realtime-2026-02-28_/347/231/276/347/202/274.md +39 -39
  104. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +207 -207
  105. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_APIMart.md +173 -173
  106. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Fal.md +94 -94
  107. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Grsai.md +137 -137
  108. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_KIE.md +93 -93
  109. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -0
  110. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -0
  111. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +53 -0
  112. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -0
  113. package/docs/model-adaptation/GPT-OSS-20B/GPT-OSS-20B_Groq.md +62 -62
  114. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_APIMart.md +124 -124
  115. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_Fal.md +84 -84
  116. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_KIE.md +129 -129
  117. package/docs/model-adaptation/Grok-Imagine/Grok-Imagine_KIE.md +36 -36
  118. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_APIMart.md +250 -250
  119. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_Fal.md +84 -84
  120. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_KIE.md +105 -105
  121. package/docs/model-adaptation/Hailuo-02/Hailuo-02_Fal.md +93 -93
  122. package/docs/model-adaptation/Hailuo-02/Hailuo-02_KIE.md +56 -56
  123. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_Fal.md +88 -88
  124. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_KIE.md +51 -51
  125. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_/346/264/276/346/254/247/344/272/221.md +70 -70
  126. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +97 -94
  127. package/docs/model-adaptation/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +41 -41
  128. package/docs/model-adaptation/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261_Fal.md +72 -72
  129. package/docs/model-adaptation/Image-Apps-v2-/346/211/251/345/233/276/Image-Apps-v2-/346/211/251/345/233/276_Fal.md +93 -93
  130. package/docs/model-adaptation/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215_Fal.md +86 -86
  131. package/docs/model-adaptation/Image-Apps-v2-/351/207/215/346/211/223/345/205/211/Image-Apps-v2-/351/207/215/346/211/223/345/205/211_Fal.md +84 -84
  132. package/docs/model-adaptation/Kling-3.0/Kling-3.0_APIMart.md +112 -112
  133. package/docs/model-adaptation/Kling-3.0/Kling-3.0_Fal.md +89 -89
  134. package/docs/model-adaptation/Kling-3.0/Kling-3.0_KIE.md +106 -106
  135. package/docs/model-adaptation/Kling-3.0/Kling-3.0_/346/264/276/346/254/247/344/272/221.md +119 -119
  136. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_APIMart.md +125 -125
  137. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_Fal.md +107 -107
  138. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_KIE.md +143 -143
  139. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_APIMart.md +85 -85
  140. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_Fal.md +83 -83
  141. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_KIE.md +84 -84
  142. package/docs/model-adaptation/Midjourney/Midjourney_APIMart.md +396 -396
  143. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_APIMart.md +234 -234
  144. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_Fal.md +108 -108
  145. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_KIE.md +111 -111
  146. package/docs/model-adaptation/MiniMax-Speech/MiniMax-Speech_/346/264/276/346/254/247/344/272/221.md +170 -170
  147. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_APIMart.md +89 -89
  148. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Fal.md +99 -99
  149. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Grsai.md +82 -82
  150. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_KIE.md +70 -70
  151. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_APIMart.md +79 -79
  152. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_Grsai.md +65 -65
  153. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_KIE.md +64 -64
  154. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_APIMart.md +83 -83
  155. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Fal.md +89 -89
  156. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Grsai.md +82 -82
  157. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_KIE.md +64 -64
  158. package/docs/model-adaptation/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244_Fal.md +79 -79
  159. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_APIMart.md +117 -117
  160. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_Fal.md +84 -84
  161. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_KIE.md +103 -103
  162. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_/347/231/276/347/202/274.md +138 -138
  163. package/docs/model-adaptation/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246_Fal.md +57 -0
  164. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +47 -47
  165. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +39 -39
  166. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +39 -39
  167. package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +40 -40
  168. package/docs/model-adaptation/Qwen3-ASR-Flash-2026-02-10/Qwen3-ASR-Flash-2026-02-10_/347/231/276/347/202/274.md +33 -33
  169. package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +41 -41
  170. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +35 -35
  171. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime-2026-02-10/Qwen3-ASR-Flash-Realtime-2026-02-10_/347/231/276/347/202/274.md +37 -37
  172. package/docs/model-adaptation/README.md +313 -295
  173. package/docs/model-adaptation/SeedASR-2.0-File/SeedASR-2.0-File_/347/201/253/345/261/261/345/274/225/346/223/216.md +115 -115
  174. package/docs/model-adaptation/SeedASR-2.0-Realtime/SeedASR-2.0-Realtime_/347/201/253/345/261/261/345/274/225/346/223/216.md +143 -143
  175. package/docs/model-adaptation/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +45 -45
  176. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_APIMart.md +121 -121
  177. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_Fal.md +97 -97
  178. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_KIE.md +86 -86
  179. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_APIMart.md +89 -89
  180. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_Fal.md +95 -95
  181. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_KIE.md +78 -78
  182. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_APIMart.md +89 -89
  183. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_Fal.md +96 -96
  184. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_KIE.md +78 -78
  185. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_APIMart.md +212 -212
  186. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_Fal.md +94 -94
  187. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_KIE.md +89 -89
  188. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_APIMart.md +106 -106
  189. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_Fal.md +91 -91
  190. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_KIE.md +89 -89
  191. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_/347/201/253/345/261/261/345/274/225/346/223/216.md +108 -108
  192. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_APIMart.md +194 -194
  193. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_Fal.md +100 -100
  194. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_KIE.md +141 -141
  195. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_/347/201/253/345/261/261/345/274/225/346/223/216.md +137 -137
  196. package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +69 -69
  197. package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +72 -72
  198. package/docs/model-adaptation/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +87 -87
  199. package/docs/model-adaptation/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247_Fal.md +34 -34
  200. package/docs/model-adaptation/Wan-2.5-Preview/Wan-2.5-Preview_/346/264/276/346/254/247/344/272/221.md +82 -82
  201. package/docs/model-adaptation/Wan-2.6/Wan-2.6_/346/264/276/346/254/247/344/272/221.md +84 -84
  202. package/docs/model-adaptation/Wan-2.7/Wan-2.7_/346/264/276/346/254/247/344/272/221.md +122 -122
  203. package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +76 -76
  204. package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +75 -75
  205. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_APIMart.md +88 -88
  206. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_Fal.md +95 -95
  207. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_KIE.md +71 -71
  208. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/347/231/276/347/202/274.md +122 -122
  209. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/351/255/224/346/220/255.md +97 -97
  210. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +238 -238
  211. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Fal.md +172 -172
  212. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Groq.md +121 -121
  213. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Grsai.md +217 -217
  214. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/KIE.md +131 -131
  215. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/200/231/351/200/211/344/276/233/345/272/224/345/225/206/350/260/203/347/240/224-/345/233/276/347/211/207/345/267/245/345/205/267.md +151 -151
  216. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/277/253/351/200/237/351/200/202/351/205/215/344/276/233/345/272/224/345/225/206.md +65 -65
  217. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//346/264/276/346/254/247/344/272/221.md +147 -138
  218. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +181 -171
  219. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +237 -227
  220. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/241/205/345/237/272/346/265/201/345/212/250.md +140 -75
  221. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//351/255/224/346/220/255.md +207 -207
  222. package/docs/model-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +338 -311
  223. package/docs/model-adaptation//351/200/217/350/247/206/345/217/230/346/215/242//351/200/217/350/247/206/345/217/230/346/215/242_Fal.md +59 -59
  224. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Electron.md +77 -77
  225. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Tauri.md +81 -81
  226. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/UXP.md +169 -169
  227. package/docs//346/216/245/345/205/245/346/214/207/345/215/227//344/276/233/345/272/224/345/225/206/345/237/237/345/220/215.md +83 -83
  228. package/docs//346/216/245/345/205/245/346/214/207/345/215/227//351/224/231/350/257/257/345/244/204/347/220/206.md +72 -72
  229. package/examples/form-renderer/README.md +17 -17
  230. package/examples/form-renderer/cli.ts +32 -32
  231. package/examples/form-renderer/index.ts +144 -144
  232. package/examples/form-renderer/package.json +16 -16
  233. package/examples/form-renderer/tsconfig.json +14 -14
  234. package/examples/llm-chat/README.md +32 -32
  235. package/examples/llm-chat/index.ts +100 -100
  236. package/examples/llm-chat/package.json +19 -19
  237. package/examples/llm-chat/tsconfig.json +14 -14
  238. package/examples/minimal-node/README.md +31 -31
  239. package/examples/minimal-node/index.ts +138 -138
  240. package/examples/minimal-node/package.json +17 -17
  241. package/examples/minimal-node/tsconfig.json +14 -14
  242. package/package.json +255 -195
  243. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2509-multiple-angles.model.d.ts +0 -2
  244. package/docs/model-adaptation/Qwen-Image-Edit-2509-/345/244/232/350/247/222/345/272/246/Qwen-Image-Edit-2509-/345/244/232/350/247/222/345/272/246_Fal.md +0 -116
@@ -1,396 +1,396 @@
1
- # Midjourney · APIMart
2
-
3
- | 项目 | 内容 |
4
- |---|---|
5
- | 最后更新 | 2026-08-22 |
6
- | 模态 | 图片(另含图生视频) |
7
- | 供应商 | APIMart(聚合平台)——本清单中 **Midjourney 唯一可用供应商** |
8
- | 平台模型 ID | `midjourney`(新路由 `/v1/midjourney/...` 会自动注入 `model=midjourney`,请求体无需再传 `model`) |
9
- | 接口形态 | **异步任务**:提交返回 `task_id`,轮询查询 |
10
- | 文档可见性 | 公开,无需登录 |
11
- | 价格可见性 | 公开,无需登录(**75 个价格档位**) |
12
-
13
- > ⚠️ **本模型能力面极大**:18 个端点、17 种 action、完整的「四宫格 → 选图 → 二次操作」工作流。
14
- > 当前代码已覆盖可独立发起的图片 / 视频生成入口;依赖父任务结果卡片的连续操作,以及返回文本的 Describe,按第 20 节的架构边界处理。下方第 3 节仍保留平台完整能力清单,后续扩展时逐条对照。
15
-
16
- > **Henji 产品呈现**:平台的 Imagine、Edit、Blend 仍按各自端点和请求契约执行,但图片功能在产品中合并为一个“Midjourney”模型,通过顶层“模式”切换;通用比例、速度、质量、数量保持标准顶层控件,MJ 专属低频项收进单行“MJ 设置”特殊面板。Midjourney 视频因输出模态不同继续作为独立模型。
17
-
18
- ## 1. 接入协议
19
-
20
- - **Base URL**:`https://api.apimart.ai`
21
- - **鉴权**:`Authorization: Bearer <API_KEY>`
22
- - **默认入口**:`POST /v1/midjourney/generations`(等同 `imagine`)
23
- - **查询**(两个接口,返回结构不同):
24
- - `GET /v1/tasks/{task_id}` —— **统一任务接口**,状态为 `pending` / `processing` / `completed` / `failed`,结果在 `result.images[].url`
25
- - `GET /v1/midjourney/{task_id}` —— **MJ 风格接口**,返回 `grid_image_url`、`image_urls`、`buttons`。**需要读 `buttons[].customId` 做二次操作时必须用这个**
26
- - **轮询节奏**:3–5 秒一次。查询接口不单独计费,但不要无 sleep 死循环
27
- - **任务保留**:默认 **3 天**,过后查询返回 404,但**生成的图片 / 视频 URL 仍可访问**
28
- - **权限**:普通用户只能查自己的任务,查他人任务返回 403
29
-
30
- ### 端到端流程
31
-
32
- ```
33
- ① POST /v1/midjourney/generations 提交 Imagine
34
- ② GET /v1/tasks/{task_id} 轮询直到 completed
35
- ③ GET /v1/midjourney/{task_id} 需要按钮时读取 buttons
36
- ④ 二次操作:/upscale /variation /reroll /zoom /pan /inpaint …
37
- ⑤ /inpaint 进入 MODAL 后 → /modal 提交 mask + prompt
38
- ```
39
-
40
- ## 2. 任务状态(MJ 风格)
41
-
42
- | status | 含义 | 终态 |
43
- |---|---|---|
44
- | `NOT_START` | 已建行,系统未确认(瞬时态) | 否 |
45
- | `SUBMITTED` | 系统接受,排队中 | 否 |
46
- | `IN_PROGRESS` | 系统处理中 | 否 |
47
- | `MODAL` | **等待调 `/modal` 补参**(局部重绘中间态,不是错误) | 否 |
48
- | `SUCCESS` | 完成 | ✓ |
49
- | `FAILURE` | 失败 → **自动退款**(`quota` 归 0,`fail_reason` 含原因) | ✓ |
50
-
51
- `grid_image_url` 是四宫格合成大图;`image_urls` 是裁剪后的 4 张单图 URL 数组。
52
-
53
- ## 3. 完整能力清单(17 个 action / 18 个端点)
54
-
55
- | 能力 | 端点 | action | 必填 |
56
- |---|---|---|---|
57
- | 文生图 / 垫图(默认入口) | `POST /v1/midjourney/generations` | `IMAGINE` | `prompt` |
58
- | 文生图(显式入口) | `POST /v1/midjourney/generations/imagine` | `IMAGINE` | `prompt` |
59
- | 多图融合 | `POST /v1/midjourney/generations/blend` | `BLEND` | `image_urls`(2–4 张) |
60
- | 图生文(反推 prompt) | `POST /v1/midjourney/generations/describe` | `DESCRIBE` | `image_urls`(1 张) |
61
- | 图片编辑(整图改写) | `POST /v1/midjourney/generations/edits` | `EDITS` | `prompt` + `image_urls` |
62
- | 放大选图 U1–U4 | `POST /v1/midjourney/generations/upscale` | `UPSCALE` | `task_id` + (`index` 或 `custom_id`) |
63
- | 弱变体 V1–V4 | `POST /v1/midjourney/generations/variation` | `VARIATION` | `task_id` + (`index` 或 `custom_id`) |
64
- | 强变体 | `POST /v1/midjourney/generations/high-variation` | `HIGH_VARIATION` | `task_id` + (`index` 或 `custom_id`) |
65
- | 微调变体(同弱变体,独立计费 key) | `POST /v1/midjourney/generations/low-variation` | `LOW_VARIATION` | `task_id` + (`index` 或 `custom_id`) |
66
- | 重新生成(整网格重抽) | `POST /v1/midjourney/generations/reroll` | `REROLL` | `task_id` |
67
- | 缩放扩展(Zoom Out) | `POST /v1/midjourney/generations/zoom` | `ZOOM` | `task_id` |
68
- | 平移扩展(接图 / 全景) | `POST /v1/midjourney/generations/pan` | `PAN` | `task_id` + (`direction` 或 `custom_id`) |
69
- | 局部重绘入口 | `POST /v1/midjourney/generations/inpaint` | `INPAINT` | `task_id` |
70
- | 局部重绘补参 | `POST /v1/midjourney/generations/modal` | `MODAL` | `task_id` |
71
- | 重塑(强) | `POST /v1/midjourney/generations/remix-strong` | `REMIX_STRONG` | `task_id` + `index` |
72
- | 重塑(弱) | `POST /v1/midjourney/generations/remix-subtle` | `REMIX_SUBTLE` | `task_id` + `index` |
73
- | 图生视频 | `POST /v1/midjourney/generations/video` | `VIDEO` | `image_urls` 或 `task_id` |
74
- | 任务查询 | `GET /v1/tasks/{task_id}` · `GET /v1/midjourney/{task_id}` | — | — |
75
-
76
- > 定价页还有 `shorten` 的价格档位,但文档站未提供 shorten 端点页面,接入前需向平台确认。
77
-
78
- ---
79
-
80
- ## 4. Imagine(`/generations`、`/generations/imagine`)
81
-
82
- ### 4.1 基础字段
83
-
84
- | 字段 | 类型 | 必填 | 说明 |
85
- |---|---|---|---|
86
- | `prompt` | string | 是 | 提示词,支持原生 MJ 参数(如 `--ar 16:9 --v 6.1`) |
87
- | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
88
- | `image_urls` | string[] | 否 | 垫图 URL(图生图场景),支持 URL 或 base64 |
89
- | `metadata` | object | 否 | 自定义元数据,随任务保存,便于业务侧追踪 |
90
- | `nsfw_check` | boolean | 否 | 默认 `false`。`true` 时用 `omni-moderation-latest` 预审提示词与输入图 |
91
-
92
- ### 4.2 结构化 MJ 参数(可写在 body,也可写在 prompt;**body 优先级高于 prompt**)
93
-
94
- | 字段 | 类型 | 等价 MJ 参数 | 说明 |
95
- |---|---|---|---|
96
- | `size` | string | `--ar` | 宽高比,如 `"16:9"`、`"1:1"`、`"9:16"` |
97
- | `quality` | string | `--q` | `"0.25"` / `"0.5"` / `"1"` / `"2"` |
98
- | `style` | string | `--style` | 风格,如 `"raw"` |
99
- | `version` | string | `--v` | 版本号。与 `niji: true` 搭配 `"7"` / `"6"` 时归一化为 Niji 版本 |
100
- | `seed` | int | `--seed` | 随机种子。**本项目规则:绝对不显示**,不下发 |
101
- | `negative_prompt` | string | `--no` | 负面提示词。**本项目规则:绝对不显示**,不下发 |
102
- | `stylize` | int | `--s` | 风格化强度 0–1000 |
103
- | `chaos` | int | `--c` | 混乱度 0–100 |
104
- | `weird` | int | `--w` | 怪异度 0–3000 |
105
- | `tile` | bool | `--tile` | 平铺模式 |
106
- | `niji` | bool | `--niji` | Niji 开关。推荐 `niji: true` + `version: "7"` / `"6"` |
107
- | `iw` | float | `--iw` | 图片权重 0–3(垫图时使用,默认 1;>1 更贴原图,<1 更自由) |
108
- | `cw` | int | `--cw` | 角色权重 0–100 |
109
- | `sw` | int | `--sw` | 风格权重 0–1000 |
110
- | `cref` | string | `--cref` | 角色参考图 URL |
111
- | `sref` | string | `--sref` | 风格参考图 URL |
112
- | `dref` | string | `--dref` | 深度参考图 URL |
113
- | `dw` | float | `--dw` | 深度权重 0–100 |
114
- | `repeat` | int | `--repeat` | 重复生成次数 2–40 |
115
- | `raw` | bool | `--raw` | 原始风格(v5.1+) |
116
- | `draft` | bool | `--draft` | 草图模式(v7+) |
117
- | `hd` | bool | `--hd` | HD 高清(**仅 v8.1 / v8.2**;未传 `version` 时后端自动补 `--v 8.1`) |
118
- | `stop` | int | `--stop` | 提前停止 10–100(**仅 v5–6.1 / niji 5–6**) |
119
- | `extra` | string | 任意 `--xxx` | 逃生口,原样追加到 prompt 末尾 |
120
-
121
- **线上已验证可用版本**:`8.2`、`8.1`、`7`、`6.1`、`5.2`、`5.1`、`niji 7`、`niji 6`。
122
-
123
- ---
124
-
125
- ## 5. Blend(多图融合)
126
-
127
- **完全靠图融合,不支持 `prompt`。**
128
-
129
- | 字段 | 类型 | 必填 | 说明 |
130
- |---|---|---|---|
131
- | `image_urls` | string[] | 是 | **2–4 张**,后端自动转 base64;单图 ≤ 12 MiB。少于 2 或多于 4 返回 400 |
132
- | `dimensions` | string | 否 | 三档比例 `SQUARE`(1:1,默认) / `PORTRAIT`(2:3) / `LANDSCAPE`(3:2);传了 `size` 时被覆盖 |
133
- | `size` | string | 否 | 自由比例,任意 `w:h`(如 `16:9`、`21:9`),**优先级高于 `dimensions`** |
134
- | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
135
- | `metadata` | object | 否 | 自定义元数据 |
136
-
137
- 比例优先级:`size` > `dimensions` > 默认 `SQUARE`。blend **没有独立版本参数**。
138
-
139
- ## 6. Describe(图生文)
140
-
141
- | 字段 | 类型 | 必填 | 说明 |
142
- |---|---|---|---|
143
- | `image_urls` | string[] | 是 | 单张图(数组形式,多传只取第一张);单图 ≤ 12 MiB |
144
- | `speed` | string | 否 | `relax` / `fast` / `turbo` |
145
- | `metadata` | object | 否 | — |
146
-
147
- **结果不在 `image_urls`**:文字结果在查询结果的 `prompt` / `description` 字段,**不返回 `image_urls` / `grid_image_url`**。反推为 4 段带编号建议,用 `\n` 分隔、数字 emoji `1️⃣2️⃣3️⃣4️⃣` 前缀。通常 1–3 s 返回,但**仍走标准异步流,必须轮询**。describe 为独立处理通道,不占用普通生图并发额度。缺图或单图超 12 MiB 返回 400。
148
-
149
- ## 7. Edits(图片编辑)
150
-
151
- 基于已有图 + prompt **改写整张图**(背景替换、风格迁移、内容修改)。
152
-
153
- | 字段 | 类型 | 必填 | 说明 |
154
- |---|---|---|---|
155
- | `prompt` | string | 是 | 编辑指令 |
156
- | `image_urls` | string[] | 是 | 待编辑图;单图 ≤ 12 MiB |
157
- | `speed` | string | 否 | `relax` / `fast` / `turbo` |
158
- | `metadata` | object | 否 | — |
159
-
160
- 结构化参数与 Imagine 完全一致(body 优先,拼到 prompt 末尾并覆盖同名手写 flag)。
161
-
162
- ## 8. Upscale(放大选图 U1–U4)
163
-
164
- | 字段 | 类型 | 说明 |
165
- |---|---|---|
166
- | `task_id` | string | 父任务 ID(须为 imagine / variation / reroll 等 **SUCCESS** 任务) |
167
- | `index` | int | 选第几张(U1–U4),`1`–`4`;与 `custom_id` 二选一 |
168
- | `custom_id` | string | 直接传按钮 ID;**两者都传时 `custom_id` 优先** |
169
- | `speed` | string | `relax` / `fast` / `turbo`(本地合成,实际无影响) |
170
- | `metadata` | object | — |
171
-
172
- **行为**:从父任务已有 4 张图里截取,**本地合成、通常毫秒级 SUCCESS**,`image_urls` 只有 1 个元素。父任务非 SUCCESS 返回 400(`task is not in SUCCESS state`);`index` 越界返回 400。
173
-
174
- **HD upscale**:普通 upscale 只是截取;如果后续要对单图做 zoom / inpaint 等精细操作,文档建议改用 **HD upscale**(执行真实放大,输出 **2x 高清单图**,约 60–120 s),产出的单图能更稳定地支持后续操作。
175
-
176
- ## 9. Variation / High Variation / Low Variation
177
-
178
- | 端点 | 力度 | 父任务 |
179
- |---|---|---|
180
- | `/variation` | 弱变体(varySubtle,等价 V1–V4) | imagine 四宫格 |
181
- | `/high-variation` | **强变体**(varyStrong,对应 Vary (Strong)),偏离原图更多 | 通常为 Upscale 后的单图任务 |
182
- | `/low-variation` | 弱变体,**与 Variation 行为完全一致**,仅计费 key 不同 | 通常为 Upscale 后的单图任务 |
183
-
184
- 三者参数相同:`task_id`(须 SUCCESS)、`index`(`1`–`4`)或 `custom_id`(二选一)、`speed`、`metadata`、`nsfw_check`。
185
-
186
- Variation 成功后返回**新的四宫格** `grid_image_url` + 4 张 `image_urls`。来源任务的 `version` / `niji` 会自动继承(影响计费 fallback)。新接入推荐直接用 `/variation`,不用 `/low-variation`。
187
-
188
- ## 10. Reroll(重新生成)
189
-
190
- 基于父任务 prompt 重新抽 4 张图(等价 🔄 按钮),**整网格重抽,无需 `index`**。
191
-
192
- | 字段 | 说明 |
193
- |---|---|
194
- | `task_id` | 原任务 ID |
195
- | `custom_id` | 可选,直接指定 reroll 按钮 ID |
196
- | `speed` / `metadata` / `nsfw_check` | 同上 |
197
-
198
- ## 11. Zoom(缩放扩展 / Outpaint)
199
-
200
- 对**已 upscale 的单图**执行 Zoom Out:原图保留,向外补背景。
201
-
202
- | 字段 | 说明 |
203
- |---|---|
204
- | `task_id` | 须为 Upscale 后的单图任务 |
205
- | `zoom_ratio` | 决定档位:**< 2 → `Zoom Out 1.5x`(Outpaint);未传或 ≥ 2 → `Zoom Out 2x`(CustomZoom)**,两者均直接出图 |
206
- | `index` | 可选,选父任务第几张(`1`–`4`,默认 `1`);单图通常不用动 |
207
- | `custom_id` | 可选,直接指定 Zoom 按钮 ID |
208
- | `speed` / `metadata` / `nsfw_check` | 同上 |
209
-
210
- ## 12. Pan(平移扩展 / 拼全景)
211
-
212
- 对已 upscale 的单图向指定方向「接图」扩展,可连续 pan 拼全景。**仅 v6 / v6.1 / v7 / v8.1 / v8.2 / niji6 支持。**
213
-
214
- | 字段 | 说明 |
215
- |---|---|
216
- | `task_id` | 须为 Upscale 后的单图任务 |
217
- | `direction` | `left` / `right` / `up` / `down` |
218
- | `custom_id` | 可选,指定后不必再传 `direction` |
219
- | `index` | 可选(`1`–`4`),backend 自动转 0-based |
220
- | `speed` / `metadata` / `nsfw_check` | 同上 |
221
-
222
- ## 13. Inpaint + Modal(局部重绘,两步)
223
-
224
- ### 13.1 `/inpaint`
225
-
226
- 等价 `Vary (Region)`。**父任务必须是 SUCCESS 的 upscale 单图;四宫格直接 inpaint 会报错,需先 upscale。**
227
-
228
- | 字段 | 说明 |
229
- |---|---|
230
- | `task_id` | 原任务 ID(一般为 Upscale 后的单图任务) |
231
- | `custom_id` | 可选,直接指定 `Vary (Region)` 按钮 ID |
232
- | `index` | 可选(`1`–`4`,默认 `1`) |
233
- | `speed` / `metadata` / `nsfw_check` | 同上 |
234
-
235
- 提交成功后返回 `status: "modal"`——**这是合法非终态,不是错误**。
236
-
237
- ### 13.2 `/modal`
238
-
239
- | 字段 | 说明 |
240
- |---|---|
241
- | `task_id` | **inpaint 步骤返回的本地任务 ID**(须为 MODAL 状态) |
242
- | `prompt` | 局部重绘提示词;留空则继承父任务 prompt |
243
- | `mask_url` | 遮罩图 URL 或 base64。**局部重绘时必填**;不传则走「外扩」模式 |
244
- | `speed` / `metadata` / `nsfw_check` | 同上 |
245
-
246
- **mask 要求**:PNG 透明背景(也支持 `data:image/png;base64,...`);建议与父图同分辨率(系统也会自动 resize);**透明区域 = 要重绘的位置,白色区域 = 保留原图**;单图 ≤ 12 MiB;URL 必须公网可达(私网会被 SSRF 拦截)。
247
-
248
- > ⚠️ 进入 MODAL 后 **30 分钟内必须调 `/modal`**,否则后台自动 CANCEL + 退款。
249
-
250
- ## 14. Remix(重塑,仅 v8.1 / v8.2)
251
-
252
- v8 操作面板**移除了 U1–U4 / zoom / outpaint / inpaint**。对应替代:变化 → Variation / High Variation;重塑 → 本接口;重新生成 → Reroll。
253
-
254
- | 端点 | op | 改动幅度 |
255
- |---|---|---|
256
- | `/remix-strong` | `remixStrong` | 大幅改动,构图 / 风格都可能变(类似 High Variation) |
257
- | `/remix-subtle` | `remixSubtle` | 小幅改动,保持主体 / 色调(类似 Variation) |
258
-
259
- | 字段 | 类型 | 必填 | 说明 |
260
- |---|---|---|---|
261
- | `task_id` | string | 是 | 父任务(**v8.1 / v8.2 imagine SUCCESS**)。v7 / v6 父图请改用 Variation / High Variation |
262
- | `index` | int | 是 | 选父图第几张(`1`–`4`) |
263
- | `prompt` | string | 否 | 重塑用的新 prompt;空则继承父图 prompt |
264
- | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
265
-
266
- ## 15. Video(图生视频)
267
-
268
- **固定 FAST 模式,无 speed 维度;不支持纯文生视频(t2v),必须给首帧。时长固定约 5 秒。**
269
-
270
- | 字段 | 类型 | 必填 | 默认 | 说明 |
271
- |---|---|---|---|---|
272
- | `image_urls` | string[] | △ | — | 起始帧(1 张,≤ 12 MiB);与 `task_id` 二选一 |
273
- | `task_id` | string | △ | — | 复用已有 imagine SUCCESS;与 `image_urls` 二选一 |
274
- | `prompt` | string | 否 | 继承父任务 | 视频提示词;为空时必须有 `task_id` |
275
- | `index` | int | 否 | — | 从 imagine 4 张图选哪张作首帧(**`0`–`3`**,注意是 0-based,与其他端点的 1-based 不同),配合 `task_id` |
276
- | `video_type` | string | 否 | `vid_1.1_i2v_480` | 见下表 |
277
- | `animate_mode` | string | 否 | `manual` | `manual` / `auto`;**`auto` 必须给 `task_id` + `index`** |
278
- | `motion` | string | 否 | `high` | `low` / `high`,运动幅度,**不影响计费** |
279
- | `batch_size` | int | 否 | `1` | 必须 `1` / `2` / `4`,其他值视为 1。**计费 × N** |
280
- | `end_url` | string | 否 | — | 结束帧;设了后 `video_type` 自动升级为 `start_end_*` |
281
-
282
- ### `video_type` 合法值
283
-
284
- | 值 | 分辨率 | 模式 | 命中价格 |
285
- |---|---|---|---|
286
- | `vid_1.1_i2v_480` | 480p | 基础 i2v(默认) | `midjourney@video` |
287
- | `vid_1.1_i2v_720` | 720p | 基础 i2v | `midjourney@video-720p` |
288
- | `vid_1.1_i2v_start_end_480` | 480p | 起止帧(传 `end_url` 时自动升级) | `midjourney@video` |
289
- | `vid_1.1_i2v_start_end_720` | 720p | 起止帧(传 `end_url` 时自动升级) | `midjourney@video-720p` |
290
-
291
- **不接受带 `extend` 的取值。** 计费提醒:出片只要 1 段就用 `batch_size=1`,不要默认开 4(成本翻 N 倍)。
292
-
293
- ## 16. 错误码与重试策略
294
-
295
- | code | 含义 | 重试策略 |
296
- |---|---|---|
297
- | `1` / `200` | 成功 | — |
298
- | `4` VALIDATION_ERROR | 参数错 | ❌ 不要重试,修正参数 |
299
- | `3` NOT_FOUND | 无可用实例 / task_id 不存在 | 实例不可用可稍后重试;task_id 不存在不要重试 |
300
- | `9` FAILURE | 服务拒绝 / 内部错误 | ⏳ 指数退避(1s, 4s, 16s) |
301
- | `21` MODAL | 非终态 | ✅ 继续调 `/modal` |
302
- | `24` BANNED_PROMPT | 敏感词 | ❌ 不要重试,改 prompt;**已自动退款** |
303
- | `429` | 限流 | ⏳ 指数退避 + jitter |
304
- | `5xx` / 网络错 | 服务端 / 网络 | ⏳ 指数退避,网络错可立即重试 1 次 |
305
-
306
- 通用 HTTP 错误:400 `invalid_request_error`、401 `authentication_error`、402 `payment_required`、404 `not_found`、429 `rate_limit_error`。
307
-
308
- ## 17. 价格
309
-
310
- 来源:[APIMart 定价中心](https://apimart.ai/zh/pricing) → `MIDJOURNEY (midjourney)`(2026-08-22 读取,**75 个价格档位**,1 Credit ≈ $0.1)。
311
-
312
- 计费 key 形如 `midjourney@<action>[-version][-speed]`。
313
-
314
- **基础价(relax / 未传 speed,不追加 speed 后缀)**
315
-
316
- | 动作 | 我们的价格 | 官方价 | 节省 |
317
- |---|---|---|---|
318
- | 默认 / `imagine` / `imagine-niji6` / `imagine-niji7` / `imagine-v5.1` / `imagine-v5.2` / `imagine-v6.1` / `imagine-v7` / `imagine-v8.1` / `imagine-v8.2` | 0.4504 Credits/次 ≈ **$0.04504/次** | $0.0563 | 20% |
319
- | `blend` / `describe` / `edits` / `high_variation` / `low_variation` / `inpaint` / `modal` / `pan` / `remix_strong` / `remix_subtle` / `reroll` / `shorten` / `upscale` / `variation` / `zoom` | 0.5504 Credits/次 ≈ **$0.05504/次** | $0.0688 | 20% |
320
-
321
- **Fast 档**:所有动作 0.5504 Credits/次 ≈ **$0.05504/次**(imagine 从 0.4504 涨到 0.5504)。
322
-
323
- **Turbo 档**:所有动作 1 Credits/次 ≈ **$0.1/次**(官方价 $0.125,节省 20%)。
324
-
325
- **视频**
326
-
327
- | 规格 | 我们的价格 | 官方价 | 节省 |
328
- |---|---|---|---|
329
- | `video`(480p) | 2 Credits/次 ≈ **$0.2/次** | $0.25 | 20% |
330
- | `video-720p` | 4 Credits/次 ≈ **$0.4/次** | $0.5 | 20% |
331
-
332
- 视频实扣 = 单价 × `batch_size`。
333
-
334
- ## 18. 接入注意(文档「最佳实践」要点)
335
-
336
- - **垫图**:用户上传的图先存自己的 OSS / CDN 再传 URL,不要直接传 base64(浪费带宽);第三方 URL 可能过期,先转存;压缩到 < 5 MiB(平台上限 12 MiB);PNG / JPG / WebP 均可,推荐高质量 JPG;分辨率 1024–2048 px 足够。
337
- - **prompt 设计**:主体在前,结构化参数显式给出(body 字段比依赖默认值更可控),避免抽象词与引号。
338
- - **并发**:平台对每分钟提交数有上限,超出 429;任务长时间停在 `SUBMITTED` 通常是排队中。
339
- - **监控参考阈值**:近 1h SUCCESS 率 > 95%;平均完成耗时 < 90 s;MODAL 停留任务数接近 0;`code=24` 比例 < 5%。
340
- - **长时间 `NOT_START`**:平台会自动超时退款,无需手动处理。
341
-
342
- ## 19. 适配要点(对本项目)
343
-
344
- - 本项目默认**绝对不显示**:`seed`、负面提示词。Midjourney 的 body 中**这两个字段都存在**(`seed` → `--seed`、`negative_prompt` → `--no`),必须主动不注册、不下发;同时要注意用户可能在 prompt 里手写 `--seed` / `--no`,这属于用户自己写的 prompt 文本,按原样传递。
345
- - **不要把这 17 个 action 压缩成一个「图片生成」模型**。至少要区分:一次性生成类(imagine / blend / describe / edits / video)与依赖父任务的二次操作类(upscale / variation / high-variation / low-variation / reroll / zoom / pan / inpaint+modal / remix)。后者必须持有前序任务的 `task_id`(部分还需 `index` 或 `custom_id`),产品上需要「结果卡片 → 继续操作」的交互载体。
346
- - **两个查询接口不等价**:要做二次操作就必须用 `/v1/midjourney/{task_id}` 拿 `buttons[].customId`。
347
- - **index 基准不统一**:绝大多数端点 `index` 是 `1`–`4`,但 `/video` 的 `index` 是 `0`–`3`。
348
- - **MODAL 是合法非终态**,状态机不能把它当失败;且有 30 分钟超时。
349
- - **v8 与 v6/v7 的可用操作不同**:v8.1/8.2 没有 U1–U4 / zoom / outpaint / inpaint,只有 Variation / Remix / Reroll。UI 需按父任务版本裁剪可用操作。
350
- - `speed` 直接决定价格档位(relax / fast / turbo 三档差 2 倍以上),必须让用户可见或固定为一档。
351
- - `batch_size` 在视频端点上直接乘倍计费,默认必须是 1。
352
-
353
- ## 20. 当前代码覆盖与架构边界
354
-
355
- 本轮适配后的生成模型定义如下:
356
-
357
- | 项目模型 ID | 平台入口 | 当前覆盖 |
358
- |---|---|---|
359
- | `midjourney` | `/v1/midjourney/generations` | Imagine、垫图、版本 / Niji、速度、比例、质量、风格化、参考图权重、重复生成等结构化参数 |
360
- | `midjourney-blend` | `/v1/midjourney/generations/blend` | 2–4 图融合、比例、速度 |
361
- | `midjourney-edit` | `/v1/midjourney/generations/edits` | 图片编辑及与 Imagine 一致的结构化参数 |
362
- | `midjourney-video` | `/v1/midjourney/generations/video` | 上传首帧或复用 `task_id`、任务图索引、首尾帧、自动 / 手动动画、运动幅度、批量数 |
363
-
364
- 以下能力不是遗漏的请求字段,而是当前通用生成模型抽象无法安全表达的不同产品流程,因此没有伪装成普通模型:
365
-
366
- - `describe` 返回文本,不返回媒体 URL;需要先增加文本结果类型及其展示 / 持久化链路。
367
- - `upscale`、`variation`、`high-variation`、`low-variation`、`reroll`、`zoom`、`pan`、`remix-*` 依赖父任务、按钮 `customId` 和版本限制;应作为生成结果卡片上的后续动作接入。
368
- - `inpaint` → `modal` 是带 30 分钟时限的两阶段状态机;必须先让运行时正确保存并恢复 `MODAL` 中间态,再接遮罩编辑界面。
369
-
370
- 因此,当前代码层面的独立生成入口已经闭环;上述连续操作应在新增「结果后续操作」应用能力时统一实现,不能继续堆进模型 schema。
371
-
372
- ## 21. 原始链接索引
373
-
374
- | 信息 | 链接 | 是否需登录 |
375
- |---|---|---|
376
- | Midjourney API 总览(路由表、流程图、错误) | https://docs.apimart.ai/cn/api-reference/images/midjourney/generation | 否 |
377
- | Imagine | https://docs.apimart.ai/cn/api-reference/images/midjourney/imagine | 否 |
378
- | Blend | https://docs.apimart.ai/cn/api-reference/images/midjourney/blend | 否 |
379
- | Describe | https://docs.apimart.ai/cn/api-reference/images/midjourney/describe | 否 |
380
- | Edits | https://docs.apimart.ai/cn/api-reference/images/midjourney/edits | 否 |
381
- | Upscale | https://docs.apimart.ai/cn/api-reference/images/midjourney/upscale | 否 |
382
- | Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/variation | 否 |
383
- | High Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/high-variation | 否 |
384
- | Low Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/low-variation | 否 |
385
- | Reroll | https://docs.apimart.ai/cn/api-reference/images/midjourney/reroll | 否 |
386
- | Zoom | https://docs.apimart.ai/cn/api-reference/images/midjourney/zoom | 否 |
387
- | Pan | https://docs.apimart.ai/cn/api-reference/images/midjourney/pan | 否 |
388
- | Inpaint | https://docs.apimart.ai/cn/api-reference/images/midjourney/inpaint | 否 |
389
- | Modal | https://docs.apimart.ai/cn/api-reference/images/midjourney/modal | 否 |
390
- | Remix | https://docs.apimart.ai/cn/api-reference/images/midjourney/remix | 否 |
391
- | Video | https://docs.apimart.ai/cn/api-reference/images/midjourney/video | 否 |
392
- | 任务查询 | https://docs.apimart.ai/cn/api-reference/images/midjourney/query | 否 |
393
- | 最佳实践(轮询 / 重试 / 排错) | https://docs.apimart.ai/cn/api-reference/images/midjourney/best-practices | 否 |
394
- | 端到端工作流 | https://docs.apimart.ai/cn/api-reference/images/midjourney/workflow | 否 |
395
- | 定价中心(搜 MIDJOURNEY,75 个档位) | https://apimart.ai/zh/pricing | 否 |
396
- | API Key 管理 | https://apimart.ai/keys | **是** |
1
+ # Midjourney · APIMart
2
+
3
+ | 项目 | 内容 |
4
+ |---|---|
5
+ | 最后更新 | 2026-08-22 |
6
+ | 模态 | 图片(另含图生视频) |
7
+ | 供应商 | APIMart(聚合平台)——本清单中 **Midjourney 唯一可用供应商** |
8
+ | 平台模型 ID | `midjourney`(新路由 `/v1/midjourney/...` 会自动注入 `model=midjourney`,请求体无需再传 `model`) |
9
+ | 接口形态 | **异步任务**:提交返回 `task_id`,轮询查询 |
10
+ | 文档可见性 | 公开,无需登录 |
11
+ | 价格可见性 | 公开,无需登录(**75 个价格档位**) |
12
+
13
+ > ⚠️ **本模型能力面极大**:18 个端点、17 种 action、完整的「四宫格 → 选图 → 二次操作」工作流。
14
+ > 当前代码已覆盖可独立发起的图片 / 视频生成入口;依赖父任务结果卡片的连续操作,以及返回文本的 Describe,按第 20 节的架构边界处理。下方第 3 节仍保留平台完整能力清单,后续扩展时逐条对照。
15
+
16
+ > **Henji 产品呈现**:平台的 Imagine、Edit、Blend 仍按各自端点和请求契约执行,但图片功能在产品中合并为一个“Midjourney”模型,通过顶层“模式”切换;通用比例、速度、质量、数量保持标准顶层控件,MJ 专属低频项收进单行“MJ 设置”特殊面板。Midjourney 视频因输出模态不同继续作为独立模型。
17
+
18
+ ## 1. 接入协议
19
+
20
+ - **Base URL**:`https://api.apimart.ai`
21
+ - **鉴权**:`Authorization: Bearer <API_KEY>`
22
+ - **默认入口**:`POST /v1/midjourney/generations`(等同 `imagine`)
23
+ - **查询**(两个接口,返回结构不同):
24
+ - `GET /v1/tasks/{task_id}` —— **统一任务接口**,状态为 `pending` / `processing` / `completed` / `failed`,结果在 `result.images[].url`
25
+ - `GET /v1/midjourney/{task_id}` —— **MJ 风格接口**,返回 `grid_image_url`、`image_urls`、`buttons`。**需要读 `buttons[].customId` 做二次操作时必须用这个**
26
+ - **轮询节奏**:3–5 秒一次。查询接口不单独计费,但不要无 sleep 死循环
27
+ - **任务保留**:默认 **3 天**,过后查询返回 404,但**生成的图片 / 视频 URL 仍可访问**
28
+ - **权限**:普通用户只能查自己的任务,查他人任务返回 403
29
+
30
+ ### 端到端流程
31
+
32
+ ```
33
+ ① POST /v1/midjourney/generations 提交 Imagine
34
+ ② GET /v1/tasks/{task_id} 轮询直到 completed
35
+ ③ GET /v1/midjourney/{task_id} 需要按钮时读取 buttons
36
+ ④ 二次操作:/upscale /variation /reroll /zoom /pan /inpaint …
37
+ ⑤ /inpaint 进入 MODAL 后 → /modal 提交 mask + prompt
38
+ ```
39
+
40
+ ## 2. 任务状态(MJ 风格)
41
+
42
+ | status | 含义 | 终态 |
43
+ |---|---|---|
44
+ | `NOT_START` | 已建行,系统未确认(瞬时态) | 否 |
45
+ | `SUBMITTED` | 系统接受,排队中 | 否 |
46
+ | `IN_PROGRESS` | 系统处理中 | 否 |
47
+ | `MODAL` | **等待调 `/modal` 补参**(局部重绘中间态,不是错误) | 否 |
48
+ | `SUCCESS` | 完成 | ✓ |
49
+ | `FAILURE` | 失败 → **自动退款**(`quota` 归 0,`fail_reason` 含原因) | ✓ |
50
+
51
+ `grid_image_url` 是四宫格合成大图;`image_urls` 是裁剪后的 4 张单图 URL 数组。
52
+
53
+ ## 3. 完整能力清单(17 个 action / 18 个端点)
54
+
55
+ | 能力 | 端点 | action | 必填 |
56
+ |---|---|---|---|
57
+ | 文生图 / 垫图(默认入口) | `POST /v1/midjourney/generations` | `IMAGINE` | `prompt` |
58
+ | 文生图(显式入口) | `POST /v1/midjourney/generations/imagine` | `IMAGINE` | `prompt` |
59
+ | 多图融合 | `POST /v1/midjourney/generations/blend` | `BLEND` | `image_urls`(2–4 张) |
60
+ | 图生文(反推 prompt) | `POST /v1/midjourney/generations/describe` | `DESCRIBE` | `image_urls`(1 张) |
61
+ | 图片编辑(整图改写) | `POST /v1/midjourney/generations/edits` | `EDITS` | `prompt` + `image_urls` |
62
+ | 放大选图 U1–U4 | `POST /v1/midjourney/generations/upscale` | `UPSCALE` | `task_id` + (`index` 或 `custom_id`) |
63
+ | 弱变体 V1–V4 | `POST /v1/midjourney/generations/variation` | `VARIATION` | `task_id` + (`index` 或 `custom_id`) |
64
+ | 强变体 | `POST /v1/midjourney/generations/high-variation` | `HIGH_VARIATION` | `task_id` + (`index` 或 `custom_id`) |
65
+ | 微调变体(同弱变体,独立计费 key) | `POST /v1/midjourney/generations/low-variation` | `LOW_VARIATION` | `task_id` + (`index` 或 `custom_id`) |
66
+ | 重新生成(整网格重抽) | `POST /v1/midjourney/generations/reroll` | `REROLL` | `task_id` |
67
+ | 缩放扩展(Zoom Out) | `POST /v1/midjourney/generations/zoom` | `ZOOM` | `task_id` |
68
+ | 平移扩展(接图 / 全景) | `POST /v1/midjourney/generations/pan` | `PAN` | `task_id` + (`direction` 或 `custom_id`) |
69
+ | 局部重绘入口 | `POST /v1/midjourney/generations/inpaint` | `INPAINT` | `task_id` |
70
+ | 局部重绘补参 | `POST /v1/midjourney/generations/modal` | `MODAL` | `task_id` |
71
+ | 重塑(强) | `POST /v1/midjourney/generations/remix-strong` | `REMIX_STRONG` | `task_id` + `index` |
72
+ | 重塑(弱) | `POST /v1/midjourney/generations/remix-subtle` | `REMIX_SUBTLE` | `task_id` + `index` |
73
+ | 图生视频 | `POST /v1/midjourney/generations/video` | `VIDEO` | `image_urls` 或 `task_id` |
74
+ | 任务查询 | `GET /v1/tasks/{task_id}` · `GET /v1/midjourney/{task_id}` | — | — |
75
+
76
+ > 定价页还有 `shorten` 的价格档位,但文档站未提供 shorten 端点页面,接入前需向平台确认。
77
+
78
+ ---
79
+
80
+ ## 4. Imagine(`/generations`、`/generations/imagine`)
81
+
82
+ ### 4.1 基础字段
83
+
84
+ | 字段 | 类型 | 必填 | 说明 |
85
+ |---|---|---|---|
86
+ | `prompt` | string | 是 | 提示词,支持原生 MJ 参数(如 `--ar 16:9 --v 6.1`) |
87
+ | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
88
+ | `image_urls` | string[] | 否 | 垫图 URL(图生图场景),支持 URL 或 base64 |
89
+ | `metadata` | object | 否 | 自定义元数据,随任务保存,便于业务侧追踪 |
90
+ | `nsfw_check` | boolean | 否 | 默认 `false`。`true` 时用 `omni-moderation-latest` 预审提示词与输入图 |
91
+
92
+ ### 4.2 结构化 MJ 参数(可写在 body,也可写在 prompt;**body 优先级高于 prompt**)
93
+
94
+ | 字段 | 类型 | 等价 MJ 参数 | 说明 |
95
+ |---|---|---|---|
96
+ | `size` | string | `--ar` | 宽高比,如 `"16:9"`、`"1:1"`、`"9:16"` |
97
+ | `quality` | string | `--q` | `"0.25"` / `"0.5"` / `"1"` / `"2"` |
98
+ | `style` | string | `--style` | 风格,如 `"raw"` |
99
+ | `version` | string | `--v` | 版本号。与 `niji: true` 搭配 `"7"` / `"6"` 时归一化为 Niji 版本 |
100
+ | `seed` | int | `--seed` | 随机种子。**本项目规则:绝对不显示**,不下发 |
101
+ | `negative_prompt` | string | `--no` | 负面提示词。**本项目规则:绝对不显示**,不下发 |
102
+ | `stylize` | int | `--s` | 风格化强度 0–1000 |
103
+ | `chaos` | int | `--c` | 混乱度 0–100 |
104
+ | `weird` | int | `--w` | 怪异度 0–3000 |
105
+ | `tile` | bool | `--tile` | 平铺模式 |
106
+ | `niji` | bool | `--niji` | Niji 开关。推荐 `niji: true` + `version: "7"` / `"6"` |
107
+ | `iw` | float | `--iw` | 图片权重 0–3(垫图时使用,默认 1;>1 更贴原图,<1 更自由) |
108
+ | `cw` | int | `--cw` | 角色权重 0–100 |
109
+ | `sw` | int | `--sw` | 风格权重 0–1000 |
110
+ | `cref` | string | `--cref` | 角色参考图 URL |
111
+ | `sref` | string | `--sref` | 风格参考图 URL |
112
+ | `dref` | string | `--dref` | 深度参考图 URL |
113
+ | `dw` | float | `--dw` | 深度权重 0–100 |
114
+ | `repeat` | int | `--repeat` | 重复生成次数 2–40 |
115
+ | `raw` | bool | `--raw` | 原始风格(v5.1+) |
116
+ | `draft` | bool | `--draft` | 草图模式(v7+) |
117
+ | `hd` | bool | `--hd` | HD 高清(**仅 v8.1 / v8.2**;未传 `version` 时后端自动补 `--v 8.1`) |
118
+ | `stop` | int | `--stop` | 提前停止 10–100(**仅 v5–6.1 / niji 5–6**) |
119
+ | `extra` | string | 任意 `--xxx` | 逃生口,原样追加到 prompt 末尾 |
120
+
121
+ **线上已验证可用版本**:`8.2`、`8.1`、`7`、`6.1`、`5.2`、`5.1`、`niji 7`、`niji 6`。
122
+
123
+ ---
124
+
125
+ ## 5. Blend(多图融合)
126
+
127
+ **完全靠图融合,不支持 `prompt`。**
128
+
129
+ | 字段 | 类型 | 必填 | 说明 |
130
+ |---|---|---|---|
131
+ | `image_urls` | string[] | 是 | **2–4 张**,后端自动转 base64;单图 ≤ 12 MiB。少于 2 或多于 4 返回 400 |
132
+ | `dimensions` | string | 否 | 三档比例 `SQUARE`(1:1,默认) / `PORTRAIT`(2:3) / `LANDSCAPE`(3:2);传了 `size` 时被覆盖 |
133
+ | `size` | string | 否 | 自由比例,任意 `w:h`(如 `16:9`、`21:9`),**优先级高于 `dimensions`** |
134
+ | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
135
+ | `metadata` | object | 否 | 自定义元数据 |
136
+
137
+ 比例优先级:`size` > `dimensions` > 默认 `SQUARE`。blend **没有独立版本参数**。
138
+
139
+ ## 6. Describe(图生文)
140
+
141
+ | 字段 | 类型 | 必填 | 说明 |
142
+ |---|---|---|---|
143
+ | `image_urls` | string[] | 是 | 单张图(数组形式,多传只取第一张);单图 ≤ 12 MiB |
144
+ | `speed` | string | 否 | `relax` / `fast` / `turbo` |
145
+ | `metadata` | object | 否 | — |
146
+
147
+ **结果不在 `image_urls`**:文字结果在查询结果的 `prompt` / `description` 字段,**不返回 `image_urls` / `grid_image_url`**。反推为 4 段带编号建议,用 `\n` 分隔、数字 emoji `1️⃣2️⃣3️⃣4️⃣` 前缀。通常 1–3 s 返回,但**仍走标准异步流,必须轮询**。describe 为独立处理通道,不占用普通生图并发额度。缺图或单图超 12 MiB 返回 400。
148
+
149
+ ## 7. Edits(图片编辑)
150
+
151
+ 基于已有图 + prompt **改写整张图**(背景替换、风格迁移、内容修改)。
152
+
153
+ | 字段 | 类型 | 必填 | 说明 |
154
+ |---|---|---|---|
155
+ | `prompt` | string | 是 | 编辑指令 |
156
+ | `image_urls` | string[] | 是 | 待编辑图;单图 ≤ 12 MiB |
157
+ | `speed` | string | 否 | `relax` / `fast` / `turbo` |
158
+ | `metadata` | object | 否 | — |
159
+
160
+ 结构化参数与 Imagine 完全一致(body 优先,拼到 prompt 末尾并覆盖同名手写 flag)。
161
+
162
+ ## 8. Upscale(放大选图 U1–U4)
163
+
164
+ | 字段 | 类型 | 说明 |
165
+ |---|---|---|
166
+ | `task_id` | string | 父任务 ID(须为 imagine / variation / reroll 等 **SUCCESS** 任务) |
167
+ | `index` | int | 选第几张(U1–U4),`1`–`4`;与 `custom_id` 二选一 |
168
+ | `custom_id` | string | 直接传按钮 ID;**两者都传时 `custom_id` 优先** |
169
+ | `speed` | string | `relax` / `fast` / `turbo`(本地合成,实际无影响) |
170
+ | `metadata` | object | — |
171
+
172
+ **行为**:从父任务已有 4 张图里截取,**本地合成、通常毫秒级 SUCCESS**,`image_urls` 只有 1 个元素。父任务非 SUCCESS 返回 400(`task is not in SUCCESS state`);`index` 越界返回 400。
173
+
174
+ **HD upscale**:普通 upscale 只是截取;如果后续要对单图做 zoom / inpaint 等精细操作,文档建议改用 **HD upscale**(执行真实放大,输出 **2x 高清单图**,约 60–120 s),产出的单图能更稳定地支持后续操作。
175
+
176
+ ## 9. Variation / High Variation / Low Variation
177
+
178
+ | 端点 | 力度 | 父任务 |
179
+ |---|---|---|
180
+ | `/variation` | 弱变体(varySubtle,等价 V1–V4) | imagine 四宫格 |
181
+ | `/high-variation` | **强变体**(varyStrong,对应 Vary (Strong)),偏离原图更多 | 通常为 Upscale 后的单图任务 |
182
+ | `/low-variation` | 弱变体,**与 Variation 行为完全一致**,仅计费 key 不同 | 通常为 Upscale 后的单图任务 |
183
+
184
+ 三者参数相同:`task_id`(须 SUCCESS)、`index`(`1`–`4`)或 `custom_id`(二选一)、`speed`、`metadata`、`nsfw_check`。
185
+
186
+ Variation 成功后返回**新的四宫格** `grid_image_url` + 4 张 `image_urls`。来源任务的 `version` / `niji` 会自动继承(影响计费 fallback)。新接入推荐直接用 `/variation`,不用 `/low-variation`。
187
+
188
+ ## 10. Reroll(重新生成)
189
+
190
+ 基于父任务 prompt 重新抽 4 张图(等价 🔄 按钮),**整网格重抽,无需 `index`**。
191
+
192
+ | 字段 | 说明 |
193
+ |---|---|
194
+ | `task_id` | 原任务 ID |
195
+ | `custom_id` | 可选,直接指定 reroll 按钮 ID |
196
+ | `speed` / `metadata` / `nsfw_check` | 同上 |
197
+
198
+ ## 11. Zoom(缩放扩展 / Outpaint)
199
+
200
+ 对**已 upscale 的单图**执行 Zoom Out:原图保留,向外补背景。
201
+
202
+ | 字段 | 说明 |
203
+ |---|---|
204
+ | `task_id` | 须为 Upscale 后的单图任务 |
205
+ | `zoom_ratio` | 决定档位:**< 2 → `Zoom Out 1.5x`(Outpaint);未传或 ≥ 2 → `Zoom Out 2x`(CustomZoom)**,两者均直接出图 |
206
+ | `index` | 可选,选父任务第几张(`1`–`4`,默认 `1`);单图通常不用动 |
207
+ | `custom_id` | 可选,直接指定 Zoom 按钮 ID |
208
+ | `speed` / `metadata` / `nsfw_check` | 同上 |
209
+
210
+ ## 12. Pan(平移扩展 / 拼全景)
211
+
212
+ 对已 upscale 的单图向指定方向「接图」扩展,可连续 pan 拼全景。**仅 v6 / v6.1 / v7 / v8.1 / v8.2 / niji6 支持。**
213
+
214
+ | 字段 | 说明 |
215
+ |---|---|
216
+ | `task_id` | 须为 Upscale 后的单图任务 |
217
+ | `direction` | `left` / `right` / `up` / `down` |
218
+ | `custom_id` | 可选,指定后不必再传 `direction` |
219
+ | `index` | 可选(`1`–`4`),backend 自动转 0-based |
220
+ | `speed` / `metadata` / `nsfw_check` | 同上 |
221
+
222
+ ## 13. Inpaint + Modal(局部重绘,两步)
223
+
224
+ ### 13.1 `/inpaint`
225
+
226
+ 等价 `Vary (Region)`。**父任务必须是 SUCCESS 的 upscale 单图;四宫格直接 inpaint 会报错,需先 upscale。**
227
+
228
+ | 字段 | 说明 |
229
+ |---|---|
230
+ | `task_id` | 原任务 ID(一般为 Upscale 后的单图任务) |
231
+ | `custom_id` | 可选,直接指定 `Vary (Region)` 按钮 ID |
232
+ | `index` | 可选(`1`–`4`,默认 `1`) |
233
+ | `speed` / `metadata` / `nsfw_check` | 同上 |
234
+
235
+ 提交成功后返回 `status: "modal"`——**这是合法非终态,不是错误**。
236
+
237
+ ### 13.2 `/modal`
238
+
239
+ | 字段 | 说明 |
240
+ |---|---|
241
+ | `task_id` | **inpaint 步骤返回的本地任务 ID**(须为 MODAL 状态) |
242
+ | `prompt` | 局部重绘提示词;留空则继承父任务 prompt |
243
+ | `mask_url` | 遮罩图 URL 或 base64。**局部重绘时必填**;不传则走「外扩」模式 |
244
+ | `speed` / `metadata` / `nsfw_check` | 同上 |
245
+
246
+ **mask 要求**:PNG 透明背景(也支持 `data:image/png;base64,...`);建议与父图同分辨率(系统也会自动 resize);**透明区域 = 要重绘的位置,白色区域 = 保留原图**;单图 ≤ 12 MiB;URL 必须公网可达(私网会被 SSRF 拦截)。
247
+
248
+ > ⚠️ 进入 MODAL 后 **30 分钟内必须调 `/modal`**,否则后台自动 CANCEL + 退款。
249
+
250
+ ## 14. Remix(重塑,仅 v8.1 / v8.2)
251
+
252
+ v8 操作面板**移除了 U1–U4 / zoom / outpaint / inpaint**。对应替代:变化 → Variation / High Variation;重塑 → 本接口;重新生成 → Reroll。
253
+
254
+ | 端点 | op | 改动幅度 |
255
+ |---|---|---|
256
+ | `/remix-strong` | `remixStrong` | 大幅改动,构图 / 风格都可能变(类似 High Variation) |
257
+ | `/remix-subtle` | `remixSubtle` | 小幅改动,保持主体 / 色调(类似 Variation) |
258
+
259
+ | 字段 | 类型 | 必填 | 说明 |
260
+ |---|---|---|---|
261
+ | `task_id` | string | 是 | 父任务(**v8.1 / v8.2 imagine SUCCESS**)。v7 / v6 父图请改用 Variation / High Variation |
262
+ | `index` | int | 是 | 选父图第几张(`1`–`4`) |
263
+ | `prompt` | string | 否 | 重塑用的新 prompt;空则继承父图 prompt |
264
+ | `speed` | string | 否 | `relax`(默认)/ `fast` / `turbo` |
265
+
266
+ ## 15. Video(图生视频)
267
+
268
+ **固定 FAST 模式,无 speed 维度;不支持纯文生视频(t2v),必须给首帧。时长固定约 5 秒。**
269
+
270
+ | 字段 | 类型 | 必填 | 默认 | 说明 |
271
+ |---|---|---|---|---|
272
+ | `image_urls` | string[] | △ | — | 起始帧(1 张,≤ 12 MiB);与 `task_id` 二选一 |
273
+ | `task_id` | string | △ | — | 复用已有 imagine SUCCESS;与 `image_urls` 二选一 |
274
+ | `prompt` | string | 否 | 继承父任务 | 视频提示词;为空时必须有 `task_id` |
275
+ | `index` | int | 否 | — | 从 imagine 4 张图选哪张作首帧(**`0`–`3`**,注意是 0-based,与其他端点的 1-based 不同),配合 `task_id` |
276
+ | `video_type` | string | 否 | `vid_1.1_i2v_480` | 见下表 |
277
+ | `animate_mode` | string | 否 | `manual` | `manual` / `auto`;**`auto` 必须给 `task_id` + `index`** |
278
+ | `motion` | string | 否 | `high` | `low` / `high`,运动幅度,**不影响计费** |
279
+ | `batch_size` | int | 否 | `1` | 必须 `1` / `2` / `4`,其他值视为 1。**计费 × N** |
280
+ | `end_url` | string | 否 | — | 结束帧;设了后 `video_type` 自动升级为 `start_end_*` |
281
+
282
+ ### `video_type` 合法值
283
+
284
+ | 值 | 分辨率 | 模式 | 命中价格 |
285
+ |---|---|---|---|
286
+ | `vid_1.1_i2v_480` | 480p | 基础 i2v(默认) | `midjourney@video` |
287
+ | `vid_1.1_i2v_720` | 720p | 基础 i2v | `midjourney@video-720p` |
288
+ | `vid_1.1_i2v_start_end_480` | 480p | 起止帧(传 `end_url` 时自动升级) | `midjourney@video` |
289
+ | `vid_1.1_i2v_start_end_720` | 720p | 起止帧(传 `end_url` 时自动升级) | `midjourney@video-720p` |
290
+
291
+ **不接受带 `extend` 的取值。** 计费提醒:出片只要 1 段就用 `batch_size=1`,不要默认开 4(成本翻 N 倍)。
292
+
293
+ ## 16. 错误码与重试策略
294
+
295
+ | code | 含义 | 重试策略 |
296
+ |---|---|---|
297
+ | `1` / `200` | 成功 | — |
298
+ | `4` VALIDATION_ERROR | 参数错 | ❌ 不要重试,修正参数 |
299
+ | `3` NOT_FOUND | 无可用实例 / task_id 不存在 | 实例不可用可稍后重试;task_id 不存在不要重试 |
300
+ | `9` FAILURE | 服务拒绝 / 内部错误 | ⏳ 指数退避(1s, 4s, 16s) |
301
+ | `21` MODAL | 非终态 | ✅ 继续调 `/modal` |
302
+ | `24` BANNED_PROMPT | 敏感词 | ❌ 不要重试,改 prompt;**已自动退款** |
303
+ | `429` | 限流 | ⏳ 指数退避 + jitter |
304
+ | `5xx` / 网络错 | 服务端 / 网络 | ⏳ 指数退避,网络错可立即重试 1 次 |
305
+
306
+ 通用 HTTP 错误:400 `invalid_request_error`、401 `authentication_error`、402 `payment_required`、404 `not_found`、429 `rate_limit_error`。
307
+
308
+ ## 17. 价格
309
+
310
+ 来源:[APIMart 定价中心](https://apimart.ai/zh/pricing) → `MIDJOURNEY (midjourney)`(2026-08-22 读取,**75 个价格档位**,1 Credit ≈ $0.1)。
311
+
312
+ 计费 key 形如 `midjourney@<action>[-version][-speed]`。
313
+
314
+ **基础价(relax / 未传 speed,不追加 speed 后缀)**
315
+
316
+ | 动作 | 我们的价格 | 官方价 | 节省 |
317
+ |---|---|---|---|
318
+ | 默认 / `imagine` / `imagine-niji6` / `imagine-niji7` / `imagine-v5.1` / `imagine-v5.2` / `imagine-v6.1` / `imagine-v7` / `imagine-v8.1` / `imagine-v8.2` | 0.4504 Credits/次 ≈ **$0.04504/次** | $0.0563 | 20% |
319
+ | `blend` / `describe` / `edits` / `high_variation` / `low_variation` / `inpaint` / `modal` / `pan` / `remix_strong` / `remix_subtle` / `reroll` / `shorten` / `upscale` / `variation` / `zoom` | 0.5504 Credits/次 ≈ **$0.05504/次** | $0.0688 | 20% |
320
+
321
+ **Fast 档**:所有动作 0.5504 Credits/次 ≈ **$0.05504/次**(imagine 从 0.4504 涨到 0.5504)。
322
+
323
+ **Turbo 档**:所有动作 1 Credits/次 ≈ **$0.1/次**(官方价 $0.125,节省 20%)。
324
+
325
+ **视频**
326
+
327
+ | 规格 | 我们的价格 | 官方价 | 节省 |
328
+ |---|---|---|---|
329
+ | `video`(480p) | 2 Credits/次 ≈ **$0.2/次** | $0.25 | 20% |
330
+ | `video-720p` | 4 Credits/次 ≈ **$0.4/次** | $0.5 | 20% |
331
+
332
+ 视频实扣 = 单价 × `batch_size`。
333
+
334
+ ## 18. 接入注意(文档「最佳实践」要点)
335
+
336
+ - **垫图**:用户上传的图先存自己的 OSS / CDN 再传 URL,不要直接传 base64(浪费带宽);第三方 URL 可能过期,先转存;压缩到 < 5 MiB(平台上限 12 MiB);PNG / JPG / WebP 均可,推荐高质量 JPG;分辨率 1024–2048 px 足够。
337
+ - **prompt 设计**:主体在前,结构化参数显式给出(body 字段比依赖默认值更可控),避免抽象词与引号。
338
+ - **并发**:平台对每分钟提交数有上限,超出 429;任务长时间停在 `SUBMITTED` 通常是排队中。
339
+ - **监控参考阈值**:近 1h SUCCESS 率 > 95%;平均完成耗时 < 90 s;MODAL 停留任务数接近 0;`code=24` 比例 < 5%。
340
+ - **长时间 `NOT_START`**:平台会自动超时退款,无需手动处理。
341
+
342
+ ## 19. 适配要点(对本项目)
343
+
344
+ - 本项目默认**绝对不显示**:`seed`、负面提示词。Midjourney 的 body 中**这两个字段都存在**(`seed` → `--seed`、`negative_prompt` → `--no`),必须主动不注册、不下发;同时要注意用户可能在 prompt 里手写 `--seed` / `--no`,这属于用户自己写的 prompt 文本,按原样传递。
345
+ - **不要把这 17 个 action 压缩成一个「图片生成」模型**。至少要区分:一次性生成类(imagine / blend / describe / edits / video)与依赖父任务的二次操作类(upscale / variation / high-variation / low-variation / reroll / zoom / pan / inpaint+modal / remix)。后者必须持有前序任务的 `task_id`(部分还需 `index` 或 `custom_id`),产品上需要「结果卡片 → 继续操作」的交互载体。
346
+ - **两个查询接口不等价**:要做二次操作就必须用 `/v1/midjourney/{task_id}` 拿 `buttons[].customId`。
347
+ - **index 基准不统一**:绝大多数端点 `index` 是 `1`–`4`,但 `/video` 的 `index` 是 `0`–`3`。
348
+ - **MODAL 是合法非终态**,状态机不能把它当失败;且有 30 分钟超时。
349
+ - **v8 与 v6/v7 的可用操作不同**:v8.1/8.2 没有 U1–U4 / zoom / outpaint / inpaint,只有 Variation / Remix / Reroll。UI 需按父任务版本裁剪可用操作。
350
+ - `speed` 直接决定价格档位(relax / fast / turbo 三档差 2 倍以上),必须让用户可见或固定为一档。
351
+ - `batch_size` 在视频端点上直接乘倍计费,默认必须是 1。
352
+
353
+ ## 20. 当前代码覆盖与架构边界
354
+
355
+ 本轮适配后的生成模型定义如下:
356
+
357
+ | 项目模型 ID | 平台入口 | 当前覆盖 |
358
+ |---|---|---|
359
+ | `midjourney` | `/v1/midjourney/generations` | Imagine、垫图、版本 / Niji、速度、比例、质量、风格化、参考图权重、重复生成等结构化参数 |
360
+ | `midjourney-blend` | `/v1/midjourney/generations/blend` | 2–4 图融合、比例、速度 |
361
+ | `midjourney-edit` | `/v1/midjourney/generations/edits` | 图片编辑及与 Imagine 一致的结构化参数 |
362
+ | `midjourney-video` | `/v1/midjourney/generations/video` | 上传首帧或复用 `task_id`、任务图索引、首尾帧、自动 / 手动动画、运动幅度、批量数 |
363
+
364
+ 以下能力不是遗漏的请求字段,而是当前通用生成模型抽象无法安全表达的不同产品流程,因此没有伪装成普通模型:
365
+
366
+ - `describe` 返回文本,不返回媒体 URL;需要先增加文本结果类型及其展示 / 持久化链路。
367
+ - `upscale`、`variation`、`high-variation`、`low-variation`、`reroll`、`zoom`、`pan`、`remix-*` 依赖父任务、按钮 `customId` 和版本限制;应作为生成结果卡片上的后续动作接入。
368
+ - `inpaint` → `modal` 是带 30 分钟时限的两阶段状态机;必须先让运行时正确保存并恢复 `MODAL` 中间态,再接遮罩编辑界面。
369
+
370
+ 因此,当前代码层面的独立生成入口已经闭环;上述连续操作应在新增「结果后续操作」应用能力时统一实现,不能继续堆进模型 schema。
371
+
372
+ ## 21. 原始链接索引
373
+
374
+ | 信息 | 链接 | 是否需登录 |
375
+ |---|---|---|
376
+ | Midjourney API 总览(路由表、流程图、错误) | https://docs.apimart.ai/cn/api-reference/images/midjourney/generation | 否 |
377
+ | Imagine | https://docs.apimart.ai/cn/api-reference/images/midjourney/imagine | 否 |
378
+ | Blend | https://docs.apimart.ai/cn/api-reference/images/midjourney/blend | 否 |
379
+ | Describe | https://docs.apimart.ai/cn/api-reference/images/midjourney/describe | 否 |
380
+ | Edits | https://docs.apimart.ai/cn/api-reference/images/midjourney/edits | 否 |
381
+ | Upscale | https://docs.apimart.ai/cn/api-reference/images/midjourney/upscale | 否 |
382
+ | Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/variation | 否 |
383
+ | High Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/high-variation | 否 |
384
+ | Low Variation | https://docs.apimart.ai/cn/api-reference/images/midjourney/low-variation | 否 |
385
+ | Reroll | https://docs.apimart.ai/cn/api-reference/images/midjourney/reroll | 否 |
386
+ | Zoom | https://docs.apimart.ai/cn/api-reference/images/midjourney/zoom | 否 |
387
+ | Pan | https://docs.apimart.ai/cn/api-reference/images/midjourney/pan | 否 |
388
+ | Inpaint | https://docs.apimart.ai/cn/api-reference/images/midjourney/inpaint | 否 |
389
+ | Modal | https://docs.apimart.ai/cn/api-reference/images/midjourney/modal | 否 |
390
+ | Remix | https://docs.apimart.ai/cn/api-reference/images/midjourney/remix | 否 |
391
+ | Video | https://docs.apimart.ai/cn/api-reference/images/midjourney/video | 否 |
392
+ | 任务查询 | https://docs.apimart.ai/cn/api-reference/images/midjourney/query | 否 |
393
+ | 最佳实践(轮询 / 重试 / 排错) | https://docs.apimart.ai/cn/api-reference/images/midjourney/best-practices | 否 |
394
+ | 端到端工作流 | https://docs.apimart.ai/cn/api-reference/images/midjourney/workflow | 否 |
395
+ | 定价中心(搜 MIDJOURNEY,75 个档位) | https://apimart.ai/zh/pricing | 否 |
396
+ | API Key 管理 | https://apimart.ai/keys | **是** |