ai 6.0.31 → 6.0.33

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 (252) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/index.js +12 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +12 -2
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/internal/index.js +1 -1
  7. package/dist/internal/index.mjs +1 -1
  8. package/docs/00-introduction/index.mdx +76 -0
  9. package/docs/02-foundations/01-overview.mdx +43 -0
  10. package/docs/02-foundations/02-providers-and-models.mdx +163 -0
  11. package/docs/02-foundations/03-prompts.mdx +620 -0
  12. package/docs/02-foundations/04-tools.mdx +160 -0
  13. package/docs/02-foundations/05-streaming.mdx +62 -0
  14. package/docs/02-foundations/index.mdx +43 -0
  15. package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
  16. package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
  17. package/docs/02-getting-started/02-nextjs-app-router.mdx +556 -0
  18. package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
  19. package/docs/02-getting-started/04-svelte.mdx +627 -0
  20. package/docs/02-getting-started/05-nuxt.mdx +566 -0
  21. package/docs/02-getting-started/06-nodejs.mdx +512 -0
  22. package/docs/02-getting-started/07-expo.mdx +766 -0
  23. package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
  24. package/docs/02-getting-started/index.mdx +44 -0
  25. package/docs/03-agents/01-overview.mdx +96 -0
  26. package/docs/03-agents/02-building-agents.mdx +367 -0
  27. package/docs/03-agents/03-workflows.mdx +370 -0
  28. package/docs/03-agents/04-loop-control.mdx +350 -0
  29. package/docs/03-agents/05-configuring-call-options.mdx +286 -0
  30. package/docs/03-agents/index.mdx +40 -0
  31. package/docs/03-ai-sdk-core/01-overview.mdx +33 -0
  32. package/docs/03-ai-sdk-core/05-generating-text.mdx +600 -0
  33. package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +662 -0
  34. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1102 -0
  35. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +375 -0
  36. package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +144 -0
  37. package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
  38. package/docs/03-ai-sdk-core/30-embeddings.mdx +247 -0
  39. package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
  40. package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
  41. package/docs/03-ai-sdk-core/36-transcription.mdx +173 -0
  42. package/docs/03-ai-sdk-core/37-speech.mdx +167 -0
  43. package/docs/03-ai-sdk-core/40-middleware.mdx +480 -0
  44. package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
  45. package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
  46. package/docs/03-ai-sdk-core/55-testing.mdx +218 -0
  47. package/docs/03-ai-sdk-core/60-telemetry.mdx +313 -0
  48. package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
  49. package/docs/03-ai-sdk-core/index.mdx +88 -0
  50. package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
  51. package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
  52. package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
  53. package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
  54. package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
  55. package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
  56. package/docs/04-ai-sdk-ui/05-completion.mdx +186 -0
  57. package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
  58. package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
  59. package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
  60. package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
  61. package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
  62. package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
  63. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
  64. package/docs/04-ai-sdk-ui/index.mdx +64 -0
  65. package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
  66. package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
  67. package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
  68. package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
  69. package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
  70. package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +158 -0
  71. package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
  72. package/docs/05-ai-sdk-rsc/08-error-handling.mdx +96 -0
  73. package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
  74. package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
  75. package/docs/05-ai-sdk-rsc/index.mdx +58 -0
  76. package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
  77. package/docs/06-advanced/02-stopping-streams.mdx +184 -0
  78. package/docs/06-advanced/03-backpressure.mdx +173 -0
  79. package/docs/06-advanced/04-caching.mdx +169 -0
  80. package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
  81. package/docs/06-advanced/06-rate-limiting.mdx +60 -0
  82. package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +213 -0
  83. package/docs/06-advanced/08-model-as-router.mdx +120 -0
  84. package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
  85. package/docs/06-advanced/09-sequential-generations.mdx +55 -0
  86. package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
  87. package/docs/06-advanced/index.mdx +11 -0
  88. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2142 -0
  89. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3215 -0
  90. package/docs/07-reference/01-ai-sdk-core/03-generate-object.mdx +780 -0
  91. package/docs/07-reference/01-ai-sdk-core/04-stream-object.mdx +1140 -0
  92. package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +190 -0
  93. package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +171 -0
  94. package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
  95. package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +227 -0
  96. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +138 -0
  97. package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +214 -0
  98. package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +203 -0
  99. package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +449 -0
  100. package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +148 -0
  101. package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +168 -0
  102. package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +144 -0
  103. package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +196 -0
  104. package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +175 -0
  105. package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +410 -0
  106. package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
  107. package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
  108. package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
  109. package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +55 -0
  110. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
  111. package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
  112. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
  113. package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
  114. package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
  115. package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +182 -0
  116. package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +121 -0
  117. package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
  118. package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
  119. package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
  120. package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +46 -0
  121. package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
  122. package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
  123. package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
  124. package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
  125. package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
  126. package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
  127. package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
  128. package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
  129. package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
  130. package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +43 -0
  131. package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
  132. package/docs/07-reference/01-ai-sdk-core/index.mdx +159 -0
  133. package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +446 -0
  134. package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +179 -0
  135. package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +178 -0
  136. package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +230 -0
  137. package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
  138. package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +151 -0
  139. package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +113 -0
  140. package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +73 -0
  141. package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
  142. package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
  143. package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
  144. package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
  145. package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
  146. package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
  147. package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
  148. package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
  149. package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +48 -0
  150. package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +78 -0
  151. package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
  152. package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
  153. package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
  154. package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
  155. package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
  156. package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
  157. package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +262 -0
  158. package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
  159. package/docs/07-reference/04-stream-helpers/01-ai-stream.mdx +89 -0
  160. package/docs/07-reference/04-stream-helpers/02-streaming-text-response.mdx +79 -0
  161. package/docs/07-reference/04-stream-helpers/05-stream-to-response.mdx +108 -0
  162. package/docs/07-reference/04-stream-helpers/07-openai-stream.mdx +77 -0
  163. package/docs/07-reference/04-stream-helpers/08-anthropic-stream.mdx +79 -0
  164. package/docs/07-reference/04-stream-helpers/09-aws-bedrock-stream.mdx +91 -0
  165. package/docs/07-reference/04-stream-helpers/10-aws-bedrock-anthropic-stream.mdx +96 -0
  166. package/docs/07-reference/04-stream-helpers/10-aws-bedrock-messages-stream.mdx +96 -0
  167. package/docs/07-reference/04-stream-helpers/11-aws-bedrock-cohere-stream.mdx +93 -0
  168. package/docs/07-reference/04-stream-helpers/12-aws-bedrock-llama-2-stream.mdx +93 -0
  169. package/docs/07-reference/04-stream-helpers/13-cohere-stream.mdx +78 -0
  170. package/docs/07-reference/04-stream-helpers/14-google-generative-ai-stream.mdx +85 -0
  171. package/docs/07-reference/04-stream-helpers/15-hugging-face-stream.mdx +84 -0
  172. package/docs/07-reference/04-stream-helpers/16-langchain-adapter.mdx +98 -0
  173. package/docs/07-reference/04-stream-helpers/16-llamaindex-adapter.mdx +70 -0
  174. package/docs/07-reference/04-stream-helpers/17-mistral-stream.mdx +81 -0
  175. package/docs/07-reference/04-stream-helpers/18-replicate-stream.mdx +83 -0
  176. package/docs/07-reference/04-stream-helpers/19-inkeep-stream.mdx +80 -0
  177. package/docs/07-reference/04-stream-helpers/index.mdx +103 -0
  178. package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +30 -0
  179. package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +27 -0
  180. package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
  181. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
  182. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +25 -0
  183. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content.mdx +26 -0
  184. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
  185. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
  186. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
  187. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +25 -0
  188. package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
  189. package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
  190. package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
  191. package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
  192. package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
  193. package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
  194. package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
  195. package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
  196. package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +25 -0
  197. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
  198. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
  199. package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
  200. package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +25 -0
  201. package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
  202. package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
  203. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +26 -0
  204. package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
  205. package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
  206. package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
  207. package/docs/07-reference/05-ai-sdk-errors/index.mdx +38 -0
  208. package/docs/07-reference/index.mdx +34 -0
  209. package/docs/08-migration-guides/00-versioning.mdx +46 -0
  210. package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
  211. package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
  212. package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
  213. package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
  214. package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
  215. package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
  216. package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
  217. package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
  218. package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
  219. package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
  220. package/docs/08-migration-guides/index.mdx +22 -0
  221. package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
  222. package/docs/09-troubleshooting/02-client-side-function-calls-not-invoked.mdx +22 -0
  223. package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
  224. package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
  225. package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
  226. package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
  227. package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
  228. package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
  229. package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
  230. package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
  231. package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
  232. package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
  233. package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
  234. package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
  235. package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
  236. package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
  237. package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
  238. package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
  239. package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
  240. package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
  241. package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
  242. package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
  243. package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
  244. package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
  245. package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
  246. package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +72 -0
  247. package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
  248. package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
  249. package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
  250. package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
  251. package/docs/09-troubleshooting/index.mdx +11 -0
  252. package/package.json +8 -4
@@ -0,0 +1,341 @@
1
+ ---
2
+ title: Image Generation
3
+ description: Learn how to generate images with the AI SDK.
4
+ ---
5
+
6
+ # Image Generation
7
+
8
+ The AI SDK provides the [`generateImage`](/docs/reference/ai-sdk-core/generate-image)
9
+ function to generate images based on a given prompt using an image model.
10
+
11
+ ```tsx
12
+ import { generateImage } from 'ai';
13
+ import { openai } from '@ai-sdk/openai';
14
+
15
+ const { image } = await generateImage({
16
+ model: openai.image('dall-e-3'),
17
+ prompt: 'Santa Claus driving a Cadillac',
18
+ });
19
+ ```
20
+
21
+ You can access the image data using the `base64` or `uint8Array` properties:
22
+
23
+ ```tsx
24
+ const base64 = image.base64; // base64 image data
25
+ const uint8Array = image.uint8Array; // Uint8Array image data
26
+ ```
27
+
28
+ ## Settings
29
+
30
+ ### Size and Aspect Ratio
31
+
32
+ Depending on the model, you can either specify the size or the aspect ratio.
33
+
34
+ ##### Size
35
+
36
+ The size is specified as a string in the format `{width}x{height}`.
37
+ Models only support a few sizes, and the supported sizes are different for each model and provider.
38
+
39
+ ```tsx highlight={"7"}
40
+ import { generateImage } from 'ai';
41
+ import { openai } from '@ai-sdk/openai';
42
+
43
+ const { image } = await generateImage({
44
+ model: openai.image('dall-e-3'),
45
+ prompt: 'Santa Claus driving a Cadillac',
46
+ size: '1024x1024',
47
+ });
48
+ ```
49
+
50
+ ##### Aspect Ratio
51
+
52
+ The aspect ratio is specified as a string in the format `{width}:{height}`.
53
+ Models only support a few aspect ratios, and the supported aspect ratios are different for each model and provider.
54
+
55
+ ```tsx highlight={"7"}
56
+ import { generateImage } from 'ai';
57
+ import { vertex } from '@ai-sdk/google-vertex';
58
+
59
+ const { image } = await generateImage({
60
+ model: vertex.image('imagen-4.0-generate-001'),
61
+ prompt: 'Santa Claus driving a Cadillac',
62
+ aspectRatio: '16:9',
63
+ });
64
+ ```
65
+
66
+ ### Generating Multiple Images
67
+
68
+ `generateImage` also supports generating multiple images at once:
69
+
70
+ ```tsx highlight={"7"}
71
+ import { generateImage } from 'ai';
72
+ import { openai } from '@ai-sdk/openai';
73
+
74
+ const { images } = await generateImage({
75
+ model: openai.image('dall-e-2'),
76
+ prompt: 'Santa Claus driving a Cadillac',
77
+ n: 4, // number of images to generate
78
+ });
79
+ ```
80
+
81
+ <Note>
82
+ `generateImage` will automatically call the model as often as needed (in
83
+ parallel) to generate the requested number of images.
84
+ </Note>
85
+
86
+ Each image model has an internal limit on how many images it can generate in a single API call. The AI SDK manages this automatically by batching requests appropriately when you request multiple images using the `n` parameter. By default, the SDK uses provider-documented limits (for example, DALL-E 3 can only generate 1 image per call, while DALL-E 2 supports up to 10).
87
+
88
+ If needed, you can override this behavior using the `maxImagesPerCall` setting when generating your image. This is particularly useful when working with new or custom models where the default batch size might not be optimal:
89
+
90
+ ```tsx
91
+ const { images } = await generateImage({
92
+ model: openai.image('dall-e-2'),
93
+ prompt: 'Santa Claus driving a Cadillac',
94
+ maxImagesPerCall: 5, // Override the default batch size
95
+ n: 10, // Will make 2 calls of 5 images each
96
+ });
97
+ ```
98
+
99
+ ### Providing a Seed
100
+
101
+ You can provide a seed to the `generateImage` function to control the output of the image generation process.
102
+ If supported by the model, the same seed will always produce the same image.
103
+
104
+ ```tsx highlight={"7"}
105
+ import { generateImage } from 'ai';
106
+ import { openai } from '@ai-sdk/openai';
107
+
108
+ const { image } = await generateImage({
109
+ model: openai.image('dall-e-3'),
110
+ prompt: 'Santa Claus driving a Cadillac',
111
+ seed: 1234567890,
112
+ });
113
+ ```
114
+
115
+ ### Provider-specific Settings
116
+
117
+ Image models often have provider- or even model-specific settings.
118
+ You can pass such settings to the `generateImage` function
119
+ using the `providerOptions` parameter. The options for the provider
120
+ (`openai` in the example below) become request body properties.
121
+
122
+ ```tsx highlight={"9"}
123
+ import { generateImage } from 'ai';
124
+ import { openai } from '@ai-sdk/openai';
125
+
126
+ const { image } = await generateImage({
127
+ model: openai.image('dall-e-3'),
128
+ prompt: 'Santa Claus driving a Cadillac',
129
+ size: '1024x1024',
130
+ providerOptions: {
131
+ openai: { style: 'vivid', quality: 'hd' },
132
+ },
133
+ });
134
+ ```
135
+
136
+ ### Abort Signals and Timeouts
137
+
138
+ `generateImage` accepts an optional `abortSignal` parameter of
139
+ type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
140
+ that you can use to abort the image generation process or set a timeout.
141
+
142
+ ```ts highlight={"7"}
143
+ import { openai } from '@ai-sdk/openai';
144
+ import { generateImage } from 'ai';
145
+
146
+ const { image } = await generateImage({
147
+ model: openai.image('dall-e-3'),
148
+ prompt: 'Santa Claus driving a Cadillac',
149
+ abortSignal: AbortSignal.timeout(1000), // Abort after 1 second
150
+ });
151
+ ```
152
+
153
+ ### Custom Headers
154
+
155
+ `generateImage` accepts an optional `headers` parameter of type `Record<string, string>`
156
+ that you can use to add custom headers to the image generation request.
157
+
158
+ ```ts highlight={"7"}
159
+ import { openai } from '@ai-sdk/openai';
160
+ import { generateImage } from 'ai';
161
+
162
+ const { image } = await generateImage({
163
+ model: openai.image('dall-e-3'),
164
+ prompt: 'Santa Claus driving a Cadillac',
165
+ headers: { 'X-Custom-Header': 'custom-value' },
166
+ });
167
+ ```
168
+
169
+ ### Warnings
170
+
171
+ If the model returns warnings, e.g. for unsupported parameters, they will be available in the `warnings` property of the response.
172
+
173
+ ```tsx
174
+ const { image, warnings } = await generateImage({
175
+ model: openai.image('dall-e-3'),
176
+ prompt: 'Santa Claus driving a Cadillac',
177
+ });
178
+ ```
179
+
180
+ ### Additional provider-specific meta data
181
+
182
+ Some providers expose additional meta data for the result overall or per image.
183
+
184
+ ```tsx
185
+ const prompt = 'Santa Claus driving a Cadillac';
186
+
187
+ const { image, providerMetadata } = await generateImage({
188
+ model: openai.image('dall-e-3'),
189
+ prompt,
190
+ });
191
+
192
+ const revisedPrompt = providerMetadata.openai.images[0]?.revisedPrompt;
193
+
194
+ console.log({
195
+ prompt,
196
+ revisedPrompt,
197
+ });
198
+ ```
199
+
200
+ The outer key of the returned `providerMetadata` is the provider name. The inner values are the metadata. An `images` key is always present in the metadata and is an array with the same length as the top level `images` key.
201
+
202
+ ### Error Handling
203
+
204
+ When `generateImage` cannot generate a valid image, it throws a [`AI_NoImageGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-image-generated-error).
205
+
206
+ This error occurs when the AI provider fails to generate an image. It can arise due to the following reasons:
207
+
208
+ - The model failed to generate a response
209
+ - The model generated a response that could not be parsed
210
+
211
+ The error preserves the following information to help you log the issue:
212
+
213
+ - `responses`: Metadata about the image model responses, including timestamp, model, and headers.
214
+ - `cause`: The cause of the error. You can use this for more detailed error handling
215
+
216
+ ```ts
217
+ import { generateImage, NoImageGeneratedError } from 'ai';
218
+
219
+ try {
220
+ await generateImage({ model, prompt });
221
+ } catch (error) {
222
+ if (NoImageGeneratedError.isInstance(error)) {
223
+ console.log('NoImageGeneratedError');
224
+ console.log('Cause:', error.cause);
225
+ console.log('Responses:', error.responses);
226
+ }
227
+ }
228
+ ```
229
+
230
+ ## Image Middleware
231
+
232
+ You can enhance image models, e.g. to set default values or implement logging, using
233
+ `wrapImageModel` and `ImageModelV3Middleware`.
234
+
235
+ Here is an example that sets a default size when none is provided:
236
+
237
+ ```ts
238
+ import { generateImage, wrapImageModel } from 'ai';
239
+ import { openai } from '@ai-sdk/openai';
240
+
241
+ const model = wrapImageModel({
242
+ model: openai.image('gpt-image-1'),
243
+ middleware: {
244
+ specificationVersion: 'v3',
245
+ transformParams: async ({ params }) => ({
246
+ ...params,
247
+ size: params.size ?? '1024x1024',
248
+ }),
249
+ },
250
+ });
251
+
252
+ const { image } = await generateImage({
253
+ model,
254
+ prompt: 'Santa Claus driving a Cadillac',
255
+ });
256
+ ```
257
+
258
+ ## Generating Images with Language Models
259
+
260
+ Some language models such as Google `gemini-2.5-flash-image-preview` support multi-modal outputs including images.
261
+ With such models, you can access the generated images using the `files` property of the response.
262
+
263
+ ```ts
264
+ import { google } from '@ai-sdk/google';
265
+ import { generateText } from 'ai';
266
+
267
+ const result = await generateText({
268
+ model: google('gemini-2.5-flash-image-preview'),
269
+ prompt: 'Generate an image of a comic cat',
270
+ });
271
+
272
+ for (const file of result.files) {
273
+ if (file.mediaType.startsWith('image/')) {
274
+ // The file object provides multiple data formats:
275
+ // Access images as base64 string, Uint8Array binary data, or check type
276
+ // - file.base64: string (data URL format)
277
+ // - file.uint8Array: Uint8Array (binary data)
278
+ // - file.mediaType: string (e.g. "image/png")
279
+ }
280
+ }
281
+ ```
282
+
283
+ ## Image Models
284
+
285
+ | Provider | Model | Support sizes (`width x height`) or aspect ratios (`width : height`) |
286
+ | ------------------------------------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
287
+ | [xAI Grok](/providers/ai-sdk-providers/xai#image-models) | `grok-2-image` | 1024x768 (default) |
288
+ | [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `gpt-image-1` | 1024x1024, 1536x1024, 1024x1536 |
289
+ | [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `dall-e-3` | 1024x1024, 1792x1024, 1024x1792 |
290
+ | [OpenAI](/providers/ai-sdk-providers/openai#image-models) | `dall-e-2` | 256x256, 512x512, 1024x1024 |
291
+ | [Amazon Bedrock](/providers/ai-sdk-providers/amazon-bedrock#image-models) | `amazon.nova-canvas-v1:0` | 320-4096 (multiples of 16), 1:4 to 4:1, max 4.2M pixels |
292
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux/dev` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
293
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux-lora` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
294
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/fast-sdxl` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
295
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/flux-pro/v1.1-ultra` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
296
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/ideogram/v2` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
297
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/recraft-v3` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
298
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/stable-diffusion-3.5-large` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
299
+ | [Fal](/providers/ai-sdk-providers/fal#image-models) | `fal-ai/hyper-sdxl` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
300
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sd3.5` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 |
301
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1.1-pro` | 256-1440 (multiples of 32) |
302
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1-schnell` | 256-1440 (multiples of 32) |
303
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-1-dev` | 256-1440 (multiples of 32) |
304
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `black-forest-labs/FLUX-pro` | 256-1440 (multiples of 32) |
305
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sd3.5-medium` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 |
306
+ | [DeepInfra](/providers/ai-sdk-providers/deepinfra#image-models) | `stabilityai/sdxl-turbo` | 1:1, 16:9, 1:9, 3:2, 2:3, 4:5, 5:4, 9:16, 9:21 |
307
+ | [Replicate](/providers/ai-sdk-providers/replicate) | `black-forest-labs/flux-schnell` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 |
308
+ | [Replicate](/providers/ai-sdk-providers/replicate) | `recraft-ai/recraft-v3` | 1024x1024, 1365x1024, 1024x1365, 1536x1024, 1024x1536, 1820x1024, 1024x1820, 1024x2048, 2048x1024, 1434x1024, 1024x1434, 1024x1280, 1280x1024, 1024x1707, 1707x1024 |
309
+ | [Google](/providers/ai-sdk-providers/google#image-models) | `imagen-4.0-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
310
+ | [Google](/providers/ai-sdk-providers/google#image-models) | `imagen-4.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
311
+ | [Google](/providers/ai-sdk-providers/google#image-models) | `imagen-4.0-ultra-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
312
+ | [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
313
+ | [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
314
+ | [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-4.0-ultra-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
315
+ | [Google Vertex](/providers/ai-sdk-providers/google-vertex#image-models) | `imagen-3.0-fast-generate-001` | 1:1, 3:4, 4:3, 9:16, 16:9 |
316
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/flux-1-dev-fp8` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 |
317
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/flux-1-schnell-fp8` | 1:1, 2:3, 3:2, 4:5, 5:4, 16:9, 9:16, 9:21, 21:9 |
318
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/playground-v2-5-1024px-aesthetic` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 |
319
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/japanese-stable-diffusion-xl` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 |
320
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/playground-v2-1024px-aesthetic` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 |
321
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/SSD-1B` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 |
322
+ | [Fireworks](/providers/ai-sdk-providers/fireworks#image-models) | `accounts/fireworks/models/stable-diffusion-xl-1024-v1-0` | 640x1536, 768x1344, 832x1216, 896x1152, 1024x1024, 1152x896, 1216x832, 1344x768, 1536x640 |
323
+ | [Luma](/providers/ai-sdk-providers/luma#image-models) | `photon-1` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
324
+ | [Luma](/providers/ai-sdk-providers/luma#image-models) | `photon-flash-1` | 1:1, 3:4, 4:3, 9:16, 16:9, 9:21, 21:9 |
325
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `stabilityai/stable-diffusion-xl-base-1.0` | 512x512, 768x768, 1024x1024 |
326
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-dev` | 512x512, 768x768, 1024x1024 |
327
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-dev-lora` | 512x512, 768x768, 1024x1024 |
328
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-schnell` | 512x512, 768x768, 1024x1024 |
329
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-canny` | 512x512, 768x768, 1024x1024 |
330
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-depth` | 512x512, 768x768, 1024x1024 |
331
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-redux` | 512x512, 768x768, 1024x1024 |
332
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1.1-pro` | 512x512, 768x768, 1024x1024 |
333
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-pro` | 512x512, 768x768, 1024x1024 |
334
+ | [Together.ai](/providers/ai-sdk-providers/togetherai#image-models) | `black-forest-labs/FLUX.1-schnell-Free` | 512x512, 768x768, 1024x1024 |
335
+ | [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-kontext-pro` | From 3:7 (portrait) to 7:3 (landscape) |
336
+ | [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-kontext-max` | From 3:7 (portrait) to 7:3 (landscape) |
337
+ | [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.1-ultra` | From 3:7 (portrait) to 7:3 (landscape) |
338
+ | [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.1` | From 3:7 (portrait) to 7:3 (landscape) |
339
+ | [Black Forest Labs](/providers/ai-sdk-providers/black-forest-labs#image-models) | `flux-pro-1.0-fill` | From 3:7 (portrait) to 7:3 (landscape) |
340
+
341
+ Above are a small subset of the image models supported by the AI SDK providers. For more, see the respective provider documentation.
@@ -0,0 +1,173 @@
1
+ ---
2
+ title: Transcription
3
+ description: Learn how to transcribe audio with the AI SDK.
4
+ ---
5
+
6
+ # Transcription
7
+
8
+ <Note type="warning">Transcription is an experimental feature.</Note>
9
+
10
+ The AI SDK provides the [`transcribe`](/docs/reference/ai-sdk-core/transcribe)
11
+ function to transcribe audio using a transcription model.
12
+
13
+ ```ts
14
+ import { experimental_transcribe as transcribe } from 'ai';
15
+ import { openai } from '@ai-sdk/openai';
16
+ import { readFile } from 'fs/promises';
17
+
18
+ const transcript = await transcribe({
19
+ model: openai.transcription('whisper-1'),
20
+ audio: await readFile('audio.mp3'),
21
+ });
22
+ ```
23
+
24
+ The `audio` property can be a `Uint8Array`, `ArrayBuffer`, `Buffer`, `string` (base64 encoded audio data), or a `URL`.
25
+
26
+ To access the generated transcript:
27
+
28
+ ```ts
29
+ const text = transcript.text; // transcript text e.g. "Hello, world!"
30
+ const segments = transcript.segments; // array of segments with start and end times, if available
31
+ const language = transcript.language; // language of the transcript e.g. "en", if available
32
+ const durationInSeconds = transcript.durationInSeconds; // duration of the transcript in seconds, if available
33
+ ```
34
+
35
+ ## Settings
36
+
37
+ ### Provider-Specific settings
38
+
39
+ Transcription models often have provider or model-specific settings which you can set using the `providerOptions` parameter.
40
+
41
+ ```ts highlight="8-12"
42
+ import { experimental_transcribe as transcribe } from 'ai';
43
+ import { openai } from '@ai-sdk/openai';
44
+ import { readFile } from 'fs/promises';
45
+
46
+ const transcript = await transcribe({
47
+ model: openai.transcription('whisper-1'),
48
+ audio: await readFile('audio.mp3'),
49
+ providerOptions: {
50
+ openai: {
51
+ timestampGranularities: ['word'],
52
+ },
53
+ },
54
+ });
55
+ ```
56
+
57
+ ### Abort Signals and Timeouts
58
+
59
+ `transcribe` accepts an optional `abortSignal` parameter of
60
+ type [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)
61
+ that you can use to abort the transcription process or set a timeout.
62
+
63
+ ```ts highlight="8"
64
+ import { openai } from '@ai-sdk/openai';
65
+ import { experimental_transcribe as transcribe } from 'ai';
66
+ import { readFile } from 'fs/promises';
67
+
68
+ const transcript = await transcribe({
69
+ model: openai.transcription('whisper-1'),
70
+ audio: await readFile('audio.mp3'),
71
+ abortSignal: AbortSignal.timeout(1000), // Abort after 1 second
72
+ });
73
+ ```
74
+
75
+ ### Custom Headers
76
+
77
+ `transcribe` accepts an optional `headers` parameter of type `Record<string, string>`
78
+ that you can use to add custom headers to the transcription request.
79
+
80
+ ```ts highlight="8"
81
+ import { openai } from '@ai-sdk/openai';
82
+ import { experimental_transcribe as transcribe } from 'ai';
83
+ import { readFile } from 'fs/promises';
84
+
85
+ const transcript = await transcribe({
86
+ model: openai.transcription('whisper-1'),
87
+ audio: await readFile('audio.mp3'),
88
+ headers: { 'X-Custom-Header': 'custom-value' },
89
+ });
90
+ ```
91
+
92
+ ### Warnings
93
+
94
+ Warnings (e.g. unsupported parameters) are available on the `warnings` property.
95
+
96
+ ```ts
97
+ import { openai } from '@ai-sdk/openai';
98
+ import { experimental_transcribe as transcribe } from 'ai';
99
+ import { readFile } from 'fs/promises';
100
+
101
+ const transcript = await transcribe({
102
+ model: openai.transcription('whisper-1'),
103
+ audio: await readFile('audio.mp3'),
104
+ });
105
+
106
+ const warnings = transcript.warnings;
107
+ ```
108
+
109
+ ### Error Handling
110
+
111
+ When `transcribe` cannot generate a valid transcript, it throws a [`AI_NoTranscriptGeneratedError`](/docs/reference/ai-sdk-errors/ai-no-transcript-generated-error).
112
+
113
+ This error can arise for any the following reasons:
114
+
115
+ - The model failed to generate a response
116
+ - The model generated a response that could not be parsed
117
+
118
+ The error preserves the following information to help you log the issue:
119
+
120
+ - `responses`: Metadata about the transcription model responses, including timestamp, model, and headers.
121
+ - `cause`: The cause of the error. You can use this for more detailed error handling.
122
+
123
+ ```ts
124
+ import {
125
+ experimental_transcribe as transcribe,
126
+ NoTranscriptGeneratedError,
127
+ } from 'ai';
128
+ import { openai } from '@ai-sdk/openai';
129
+ import { readFile } from 'fs/promises';
130
+
131
+ try {
132
+ await transcribe({
133
+ model: openai.transcription('whisper-1'),
134
+ audio: await readFile('audio.mp3'),
135
+ });
136
+ } catch (error) {
137
+ if (NoTranscriptGeneratedError.isInstance(error)) {
138
+ console.log('NoTranscriptGeneratedError');
139
+ console.log('Cause:', error.cause);
140
+ console.log('Responses:', error.responses);
141
+ }
142
+ }
143
+ ```
144
+
145
+ ## Transcription Models
146
+
147
+ | Provider | Model |
148
+ | ------------------------------------------------------------------------- | ------------------------ |
149
+ | [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `whisper-1` |
150
+ | [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `gpt-4o-transcribe` |
151
+ | [OpenAI](/providers/ai-sdk-providers/openai#transcription-models) | `gpt-4o-mini-transcribe` |
152
+ | [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#transcription-models) | `scribe_v1` |
153
+ | [ElevenLabs](/providers/ai-sdk-providers/elevenlabs#transcription-models) | `scribe_v1_experimental` |
154
+ | [Groq](/providers/ai-sdk-providers/groq#transcription-models) | `whisper-large-v3-turbo` |
155
+ | [Groq](/providers/ai-sdk-providers/groq#transcription-models) | `whisper-large-v3` |
156
+ | [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `whisper-1` |
157
+ | [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `gpt-4o-transcribe` |
158
+ | [Azure OpenAI](/providers/ai-sdk-providers/azure#transcription-models) | `gpt-4o-mini-transcribe` |
159
+ | [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `machine` |
160
+ | [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `low_cost` |
161
+ | [Rev.ai](/providers/ai-sdk-providers/revai#transcription-models) | `fusion` |
162
+ | [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `base` (+ variants) |
163
+ | [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `enhanced` (+ variants) |
164
+ | [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova` (+ variants) |
165
+ | [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova-2` (+ variants) |
166
+ | [Deepgram](/providers/ai-sdk-providers/deepgram#transcription-models) | `nova-3` (+ variants) |
167
+ | [Gladia](/providers/ai-sdk-providers/gladia#transcription-models) | `default` |
168
+ | [AssemblyAI](/providers/ai-sdk-providers/assemblyai#transcription-models) | `best` |
169
+ | [AssemblyAI](/providers/ai-sdk-providers/assemblyai#transcription-models) | `nano` |
170
+ | [Fal](/providers/ai-sdk-providers/fal#transcription-models) | `whisper` |
171
+ | [Fal](/providers/ai-sdk-providers/fal#transcription-models) | `wizper` |
172
+
173
+ Above are a small subset of the transcription models supported by the AI SDK providers. For more, see the respective provider documentation.