{"_id":"@speechify/api","_rev":"27-9ffe61ab8cc4184d3fac4b428709ad8a","name":"@speechify/api","dist-tags":{"alpha":"1.0.2-alpha.0","latest":"4.0.1"},"versions":{"0.0.7":{"name":"@speechify/api","version":"0.0.7","_id":"@speechify/api@0.0.7","maintainers":[{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"rachel-speechify","email":"rachel@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/speechifyinc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/speechifyinc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"73cf3e72f7b7dad874c01bc86e928179b195146e","tarball":"https://registry.npmjs.org/@speechify/api/-/api-0.0.7.tgz","fileCount":861,"integrity":"sha512-CSbzK4Q3WWcsouJDKsg9nuGEFZ217Kz778Orwz4FK5zQYLxEzelWlLHUFmUw7XyU4zxyLt590v9b+JNGmeEEIQ==","signatures":[{"sig":"MEQCIALBuwuMjghlySCRk3vf4BBTG095sKITo0i2uoVpypsNAiAizPXJNGOZoyXvcNJTME2GfFahwfOtJ5lz3fZ3fYbSxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":786286},"main":"./index.js","types":"./index.d.ts","browser":{"fs":false,"os":false,"path":false},"gitHead":"ce90c8643f4d1950746de4daf6b4b321acc191d0","private":false,"scripts":{"test":"jest","build":"tsc","format":"prettier . --write --ignore-unknown","prepack":"cp -rv dist/. ."},"_npmUser":{"name":"anjas-speechify","email":"anjas@speechify.com"},"repository":{"url":"git+https://github.com/speechifyinc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"10.8.2","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"_nodeVersion":"20.19.0","dependencies":{"qs":"^6.13.1","url-join":"4.0.1","form-data":"^4.0.0","js-base64":"3.7.7","node-fetch":"^2.7.0","formdata-node":"^6.0.3","readable-stream":"^4.5.2","form-data-encoder":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","webpack":"^5.97.1","prettier":"^3.4.2","@types/qs":"^6.9.17","ts-loader":"^9.5.1","typescript":"~5.7.2","@types/jest":"^29.5.14","@types/node":"^18.19.70","@types/url-join":"4.0.1","@types/node-fetch":"^2.6.12","@types/readable-stream":"^4.0.18","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/api_0.0.7_1745575016884_0.3174760935120511","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@speechify/api","version":"1.0.0","_id":"@speechify/api@1.0.0","maintainers":[{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"rachel-speechify","email":"rachel@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/speechifyinc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/speechifyinc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"dc570609004caa306b6e3cfcf9d5d24c32f2074c","tarball":"https://registry.npmjs.org/@speechify/api/-/api-1.0.0.tgz","fileCount":861,"integrity":"sha512-YKL5DabsM6baDYb9OGVicBqTmN7lFLeEFfaPOOssV7uiAzJ9jg8aSGS+RVHxBO/ukFT3de5wuoflrZFweVqhTw==","signatures":[{"sig":"MEYCIQDxZLr28dH7GP5yOLY5PkgaZVajGXDRxmERuu2Dd9WMxAIhAIuRiSzr8Z1O61xu9jGrNlCqgIqQx8XRFApRg2UBxbyk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":786286},"main":"./index.js","types":"./index.d.ts","browser":{"fs":false,"os":false,"path":false},"gitHead":"c6270c851f48cc56d08bacd799d6f61f1e2c68b3","private":false,"scripts":{"test":"jest","build":"tsc","format":"prettier . --write --ignore-unknown","prepack":"cp -rv dist/. ."},"_npmUser":{"name":"anjas-speechify","email":"anjas@speechify.com"},"repository":{"url":"git+https://github.com/speechifyinc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"10.8.2","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"_nodeVersion":"20.19.0","dependencies":{"qs":"^6.13.1","url-join":"4.0.1","form-data":"^4.0.0","js-base64":"3.7.7","node-fetch":"^2.7.0","formdata-node":"^6.0.3","readable-stream":"^4.5.2","form-data-encoder":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","webpack":"^5.97.1","prettier":"^3.4.2","@types/qs":"^6.9.17","ts-loader":"^9.5.1","typescript":"~5.7.2","@types/jest":"^29.5.14","@types/node":"^18.19.70","@types/url-join":"4.0.1","@types/node-fetch":"^2.6.12","@types/readable-stream":"^4.0.18","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/api_1.0.0_1745598652973_0.30163446936942107","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@speechify/api","version":"1.0.1","_id":"@speechify/api@1.0.1","maintainers":[{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"rachel-speechify","email":"rachel@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/speechifyinc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/speechifyinc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"f820d7c36d1992e88cb6c989cc62e4a0d44eb628","tarball":"https://registry.npmjs.org/@speechify/api/-/api-1.0.1.tgz","fileCount":837,"integrity":"sha512-B6KT965FjoR8R/2UeS7TEnmnxfleVqR7ORIvrIDdv5kDe6H4bL5jSA2RcZbg5SfOAgJRp+eV1lqT/M11LBKhvw==","signatures":[{"sig":"MEYCIQDgCcCddQbNN9LK4phiya8wJZ00L+ZO6vlO52Qto3VJ6gIhAM4g4VaU6kZvLxv/sXe6l8hQmqR406Duvkh0IAwubfn0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":766912},"main":"./index.js","types":"./index.d.ts","browser":{"fs":false,"os":false,"path":false},"gitHead":"8bba7b81a4d8a86f66a67365a3f95c36d8dd8984","private":false,"scripts":{"test":"jest","build":"tsc","format":"prettier . --write --ignore-unknown","prepack":"cp -rv dist/. ."},"_npmUser":{"name":"anjas-speechify","email":"anjas@speechify.com"},"repository":{"url":"git+https://github.com/speechifyinc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"10.8.2","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"_nodeVersion":"20.19.5","dependencies":{"qs":"^6.13.1","url-join":"4.0.1","form-data":"^4.0.0","js-base64":"3.7.7","node-fetch":"^2.7.0","formdata-node":"^6.0.3","readable-stream":"^4.5.2","form-data-encoder":"^4.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","webpack":"^5.97.1","prettier":"^3.4.2","@types/qs":"^6.9.17","ts-loader":"^9.5.1","typescript":"~5.7.2","@types/jest":"^29.5.14","@types/node":"^18.19.70","@types/url-join":"4.0.1","@types/node-fetch":"^2.6.12","@types/readable-stream":"^4.0.18","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/api_1.0.1_1762392746581_0.9866902350588871","host":"s3://npm-registry-packages-npm-production"}},"1.0.2-alpha.0":{"name":"@speechify/api","version":"1.0.2-alpha.0","_id":"@speechify/api@1.0.2-alpha.0","maintainers":[{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"rachel-speechify","email":"rachel@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"c742b19cfc6bc68016b55e31a25ddae790eb09ec","tarball":"https://registry.npmjs.org/@speechify/api/-/api-1.0.2-alpha.0.tgz","fileCount":837,"integrity":"sha512-C6q45OHr6WuQgIfpRd5Yrzf2MrBakJM6majKo0G5aieSrrQZ4vzSv16UzfGbVKVQE19WOaGWJr3Y+fgOK0G1qA==","signatures":[{"sig":"MEUCIQCFkXb4vMYFc1ehGdW6zbfq3m4CbQ7grEyDL7esL71NFAIgPW5/NcI/s6HWr8R5Y7oZUXNoxF3Kku+KfQRPJcGZGuw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@speechify%2fapi@1.0.2-alpha.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":766920},"main":"./index.js","types":"./index.d.ts","browser":{"fs":false,"os":false,"path":false},"gitHead":"45afe18de5a08a442c00ba16d07284e93f9fc024","private":false,"scripts":{"test":"jest","build":"tsc","format":"prettier . --write --ignore-unknown","prepack":"cp -rv dist/. ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:57458868-e68f-46eb-84b3-8bcc0146ea13"}},"deprecated":"this package has been deprecated","repository":{"url":"git+https://github.com/SpeechifyInc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"11.6.2","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"_nodeVersion":"24.13.0","dependencies":{"qs":"^6.13.1","url-join":"4.0.1","form-data":"^4.0.0","js-base64":"3.7.7","node-fetch":"^2.7.0","formdata-node":"^6.0.3","readable-stream":"^4.5.2","form-data-encoder":"^4.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.1","webpack":"^5.97.1","prettier":"^3.4.2","@types/qs":"^6.9.17","ts-loader":"^9.5.1","typescript":"~5.7.2","@types/jest":"^29.5.14","@types/node":"^18.19.70","@types/url-join":"4.0.1","@types/node-fetch":"^2.6.12","@types/readable-stream":"^4.0.18","jest-environment-jsdom":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/api_1.0.2-alpha.0_1769671041606_0.4185970377424597","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@speechify/api","version":"2.0.0","_id":"@speechify/api@2.0.0","maintainers":[{"name":"hemantkejriwal","email":"hemant@speechify.com"},{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"luke-speechify","email":"luke@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/speechifyinc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/speechifyinc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"058973d0332efbf3c03b5548f3787ff86df1edd8","tarball":"https://registry.npmjs.org/@speechify/api/-/api-2.0.0.tgz","fileCount":423,"integrity":"sha512-GYIYO/B0bRArg9e4ljLxHL/ZG27p7X68UGu6bvEqBk0I8CSpqPKHO+rsGGJR+oIRzXZpR5LVNcS6RPN0ljnvNw==","signatures":[{"sig":"MEUCIBCfiUkDz+lqGeIHUPYKY3wRNnoxN71lT+4eg9OnZnoWAiEAn3xDE/sVzujVA/fFGW2neaktr1DNDk04IoaCoJY0SSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490725},"main":"./dist/cjs/index.js","type":"commonjs","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.mjs","browser":{"fs":false,"os":false,"path":false,"crypto":false,"stream":false},"engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"default":"./dist/cjs/index.js","require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./audio":{"import":{"types":"./dist/esm/api/resources/audio/exports.d.mts","default":"./dist/esm/api/resources/audio/exports.mjs"},"default":"./dist/cjs/api/resources/audio/exports.js","require":{"types":"./dist/cjs/api/resources/audio/exports.d.ts","default":"./dist/cjs/api/resources/audio/exports.js"}},"./voices":{"import":{"types":"./dist/esm/api/resources/voices/exports.d.mts","default":"./dist/esm/api/resources/voices/exports.mjs"},"default":"./dist/cjs/api/resources/voices/exports.js","require":{"types":"./dist/cjs/api/resources/voices/exports.d.ts","default":"./dist/cjs/api/resources/voices/exports.js"}},"./package.json":"./package.json"},"gitHead":"85357925079f1737a5a5561b8d8c4d7940195b13","private":false,"scripts":{"lint":"biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test":"vitest","build":"pnpm build:cjs && pnpm build:esm","check":"biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","format":"biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","lint:fix":"biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","build:cjs":"tsc --project ./tsconfig.cjs.json","build:esm":"tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm","check:fix":"biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test:unit":"vitest --project unit","test:wire":"vitest --project wire","format:check":"biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none"},"_npmUser":{"name":"luke-speechify","email":"luke@speechify.com"},"repository":{"url":"git+https://github.com/speechifyinc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"11.12.1","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"msw":"2.11.2","vitest":"^4.1.1","webpack":"^5.105.4","ts-loader":"^9.5.4","typescript":"~5.9.3","@types/node":"^20.0.0","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/api_2.0.0_1782152722568_0.8121926524031495","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@speechify/api","version":"3.0.0","_id":"@speechify/api@3.0.0","maintainers":[{"name":"hemantkejriwal","email":"hemant@speechify.com"},{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"tylerweitzman","email":"tylerweitzman@gmail.com"},{"name":"luke-speechify","email":"luke@speechify.com"},{"name":"vrishab-jpg","email":"vrishab@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"258c9740bdddc866c7b69d2575a27df569533797","tarball":"https://registry.npmjs.org/@speechify/api/-/api-3.0.0.tgz","fileCount":459,"integrity":"sha512-89qTAFkDC6POSxpi+ssoC+Rio7odpLARw2IKR4APdX7IRUqRv/sREfoZtdaiZnARlBfTBfi6XdfUz6A9tp6wqg==","signatures":[{"sig":"MEUCIQDDiHlPoWBfYyk9ydebLcoyTx0EBKI4gCEKyitHNU8ragIgOHFAq+K2Muz1yN73fIuzr7R62kCdWlV/IeMqL7fYf+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556354},"main":"./dist/cjs/index.js","type":"commonjs","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.mjs","browser":{"fs":false,"os":false,"path":false,"crypto":false,"stream":false},"engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"default":"./dist/cjs/index.js","require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./audio":{"import":{"types":"./dist/esm/api/resources/audio/exports.d.mts","default":"./dist/esm/api/resources/audio/exports.mjs"},"default":"./dist/cjs/api/resources/audio/exports.js","require":{"types":"./dist/cjs/api/resources/audio/exports.d.ts","default":"./dist/cjs/api/resources/audio/exports.js"}},"./voices":{"import":{"types":"./dist/esm/api/resources/voices/exports.d.mts","default":"./dist/esm/api/resources/voices/exports.mjs"},"default":"./dist/cjs/api/resources/voices/exports.js","require":{"types":"./dist/cjs/api/resources/voices/exports.d.ts","default":"./dist/cjs/api/resources/voices/exports.js"}},"./package.json":"./package.json"},"gitHead":"337aec1eec076aa0b643f0ddaf5a86d48869aa9a","private":false,"scripts":{"lint":"biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test":"vitest","build":"pnpm build:cjs && pnpm build:esm","check":"biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","format":"biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","lint:fix":"biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","build:cjs":"tsc --project ./tsconfig.cjs.json","build:esm":"tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm","check:fix":"biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test:unit":"vitest --project unit","test:wire":"vitest --project wire","format:check":"biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none"},"_npmUser":{"name":"luke-speechify","email":"luke@speechify.com"},"repository":{"url":"git+https://github.com/SpeechifyInc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"11.12.1","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","dependencies":{},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"msw":"2.11.2","vitest":"^4.1.1","webpack":"^5.105.4","ts-loader":"^9.5.4","typescript":"~5.9.3","@types/node":"^20.0.0","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/api_3.0.0_1783711096099_0.2163359824573281","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@speechify/api","version":"3.0.1","_id":"@speechify/api@3.0.1","maintainers":[{"name":"hemantkejriwal","email":"hemant@speechify.com"},{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"tylerweitzman","email":"tylerweitzman@gmail.com"},{"name":"luke-speechify","email":"luke@speechify.com"},{"name":"vrishab-jpg","email":"vrishab@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript#readme","bugs":{"url":"https://github.com/SpeechifyInc/speechify-api-sdk-typescript/issues"},"dist":{"shasum":"41b50935f9dda0cb140b546463659191555d5354","tarball":"https://registry.npmjs.org/@speechify/api/-/api-3.0.1.tgz","fileCount":459,"integrity":"sha512-bEqbyvwGW0A/cgq+ZsQJVP3Hm4/0Bm1sniVtPLBh7vDNG2f/YY8y8sweWojoUnhIeIAL6bHBde43+VZLA2MYpA==","signatures":[{"sig":"MEUCIQCZrmyNrndL6ptTKiHopCUueXoq2hl8YvgIzr+eFIRoOwIgQMcBB4jO9Wl4pUxR9rCcQGeb/Lo5KntYTmTCkgBGDxM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@speechify%2fapi@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":556354},"main":"./dist/cjs/index.js","type":"commonjs","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.mjs","browser":{"fs":false,"os":false,"path":false,"crypto":false,"stream":false},"engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"default":"./dist/cjs/index.js","require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./audio":{"import":{"types":"./dist/esm/api/resources/audio/exports.d.mts","default":"./dist/esm/api/resources/audio/exports.mjs"},"default":"./dist/cjs/api/resources/audio/exports.js","require":{"types":"./dist/cjs/api/resources/audio/exports.d.ts","default":"./dist/cjs/api/resources/audio/exports.js"}},"./voices":{"import":{"types":"./dist/esm/api/resources/voices/exports.d.mts","default":"./dist/esm/api/resources/voices/exports.mjs"},"default":"./dist/cjs/api/resources/voices/exports.js","require":{"types":"./dist/cjs/api/resources/voices/exports.d.ts","default":"./dist/cjs/api/resources/voices/exports.js"}},"./package.json":"./package.json"},"gitHead":"b31448e88db50248683bb6bfd5829cf21eaf664e","private":false,"scripts":{"lint":"biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test":"vitest","build":"pnpm build:cjs && pnpm build:esm","check":"biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","format":"biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","lint:fix":"biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","build:cjs":"tsc --project ./tsconfig.cjs.json","build:esm":"tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm","check:fix":"biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test:unit":"vitest --project unit","test:wire":"vitest --project wire","format:check":"biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d41b4e5b-b9bf-4151-ae93-fb2d463c10d6"}},"repository":{"url":"git+https://github.com/SpeechifyInc/speechify-api-sdk-typescript.git","type":"git"},"_npmVersion":"11.16.0","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fspeechifyinc%2Fspeechify-api-sdk-typescript","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"msw":"2.11.2","vitest":"^4.1.1","webpack":"^5.105.4","ts-loader":"^9.5.4","typescript":"~5.9.3","@types/node":"^20.0.0","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/api_3.0.1_1783712641674_0.396830671053797","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@speechify/api","version":"4.0.0","_id":"@speechify/api@4.0.0","maintainers":[{"name":"hemantkejriwal","email":"hemant@speechify.com"},{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"tylerweitzman","email":"tylerweitzman@gmail.com"},{"name":"luke-speechify","email":"luke@speechify.com"},{"name":"vrishab-jpg","email":"vrishab@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/Speechify-AI/sdk-typescript#readme","bugs":{"url":"https://github.com/Speechify-AI/sdk-typescript/issues"},"dist":{"shasum":"b0e24328d3f2d4c408674ae1cb72463f45b47044","tarball":"https://registry.npmjs.org/@speechify/api/-/api-4.0.0.tgz","fileCount":567,"integrity":"sha512-BkxDywa0Lce1LPuxtNHB1kZaIKGUNojxth4EOyrAqeJHCig1GWIs1oK3gzM2aYyf4stECFvKpGt+KdteCQiKAw==","signatures":[{"sig":"MEYCIQCWDy+93sjADBVtpzF8ubpwiK5xbPo9/8R5YxHzTO9tJQIhAL4DnIBDammHvCcx/y5X5bIm8COkqmdz9ukxVqD930s3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@speechify%2fapi@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":728582},"main":"./dist/cjs/index.js","type":"commonjs","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.mjs","browser":{"fs":false,"os":false,"path":false,"crypto":false,"stream":false},"engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"default":"./dist/cjs/index.js","require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./audio":{"import":{"types":"./dist/esm/api/resources/audio/exports.d.mts","default":"./dist/esm/api/resources/audio/exports.mjs"},"default":"./dist/cjs/api/resources/audio/exports.js","require":{"types":"./dist/cjs/api/resources/audio/exports.d.ts","default":"./dist/cjs/api/resources/audio/exports.js"}},"./models":{"import":{"types":"./dist/esm/api/resources/models/exports.d.mts","default":"./dist/esm/api/resources/models/exports.mjs"},"default":"./dist/cjs/api/resources/models/exports.js","require":{"types":"./dist/cjs/api/resources/models/exports.d.ts","default":"./dist/cjs/api/resources/models/exports.js"}},"./voices":{"import":{"types":"./dist/esm/api/resources/voices/exports.d.mts","default":"./dist/esm/api/resources/voices/exports.mjs"},"default":"./dist/cjs/api/resources/voices/exports.js","require":{"types":"./dist/cjs/api/resources/voices/exports.d.ts","default":"./dist/cjs/api/resources/voices/exports.js"}},"./package.json":"./package.json","./voices/consentChallenges":{"import":{"types":"./dist/esm/api/resources/voices/resources/consentChallenges/exports.d.mts","default":"./dist/esm/api/resources/voices/resources/consentChallenges/exports.mjs"},"default":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.js","require":{"types":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.d.ts","default":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.js"}}},"gitHead":"14e57a73af7e3d6da2267345ef6c8d87917f240e","private":false,"scripts":{"lint":"biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test":"vitest","build":"pnpm build:cjs && pnpm build:esm","check":"biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","format":"biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","lint:fix":"biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","build:cjs":"tsc --project ./tsconfig.cjs.json","build:esm":"tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm","check:fix":"biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test:unit":"vitest --project unit","test:wire":"vitest --project wire","format:check":"biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10d776f6-ab48-4945-9113-f4df086e7558"}},"repository":{"url":"git+https://github.com/Speechify-AI/sdk-typescript.git","type":"git"},"_npmVersion":"11.17.0","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FSpeechify-AI%2Fsdk-typescript) [![npm shiel","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"msw":"2.11.2","vitest":"^4.1.1","webpack":"^5.105.4","ts-loader":"^9.5.4","typescript":"~5.9.3","@types/node":"^20.0.0","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/api_4.0.0_1787162492760_0.16750702452984267","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@speechify/api","version":"4.0.1","_id":"@speechify/api@4.0.1","maintainers":[{"name":"hemantkejriwal","email":"hemant@speechify.com"},{"name":"vamsee_ch","email":"vamsee@speechify.com"},{"name":"tylerweitzman","email":"tylerweitzman@gmail.com"},{"name":"luke-speechify","email":"luke@speechify.com"},{"name":"vrishab-jpg","email":"vrishab@speechify.com"},{"name":"anrosent-speechify","email":"anson@speechify.com"},{"name":"emirotin_speechify","email":"eugene.mirotin@speechify.com"},{"name":"roman_speechify","email":"roman@speechify.com"},{"name":"vovakovalov","email":"vova@speechify.com"},{"name":"anjas-speechify","email":"anjas@speechify.com"}],"homepage":"https://github.com/Speechify-AI/sdk-typescript#readme","bugs":{"url":"https://github.com/Speechify-AI/sdk-typescript/issues"},"dist":{"shasum":"1b528c104b4c7d6a56f802184249e0d85005a6af","tarball":"https://registry.npmjs.org/@speechify/api/-/api-4.0.1.tgz","fileCount":567,"integrity":"sha512-OsfZbx4o47kIZ29OmntUj/9J2LYrlntRHfAwZ8uRLCw2gsu5zgQf46yasDgGe9fNgC5XI1+JfJwCweYVs5w+4w==","signatures":[{"sig":"MEQCIC3qT4Hh7BTUixSMxeYvsP3TpF9EFgdXzjs4uxfApn+OAiAxV7n3aeZMSeEAwZdZAWQN5M5+PADV2hLjvUqUozAEAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@speechify%2fapi@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":728582},"main":"./dist/cjs/index.js","type":"commonjs","types":"./dist/cjs/index.d.ts","module":"./dist/esm/index.mjs","browser":{"fs":false,"os":false,"path":false,"crypto":false,"stream":false},"engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/esm/index.d.mts","default":"./dist/esm/index.mjs"},"default":"./dist/cjs/index.js","require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.js"}},"./audio":{"import":{"types":"./dist/esm/api/resources/audio/exports.d.mts","default":"./dist/esm/api/resources/audio/exports.mjs"},"default":"./dist/cjs/api/resources/audio/exports.js","require":{"types":"./dist/cjs/api/resources/audio/exports.d.ts","default":"./dist/cjs/api/resources/audio/exports.js"}},"./models":{"import":{"types":"./dist/esm/api/resources/models/exports.d.mts","default":"./dist/esm/api/resources/models/exports.mjs"},"default":"./dist/cjs/api/resources/models/exports.js","require":{"types":"./dist/cjs/api/resources/models/exports.d.ts","default":"./dist/cjs/api/resources/models/exports.js"}},"./voices":{"import":{"types":"./dist/esm/api/resources/voices/exports.d.mts","default":"./dist/esm/api/resources/voices/exports.mjs"},"default":"./dist/cjs/api/resources/voices/exports.js","require":{"types":"./dist/cjs/api/resources/voices/exports.d.ts","default":"./dist/cjs/api/resources/voices/exports.js"}},"./package.json":"./package.json","./voices/consentChallenges":{"import":{"types":"./dist/esm/api/resources/voices/resources/consentChallenges/exports.d.mts","default":"./dist/esm/api/resources/voices/resources/consentChallenges/exports.mjs"},"default":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.js","require":{"types":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.d.ts","default":"./dist/cjs/api/resources/voices/resources/consentChallenges/exports.js"}}},"gitHead":"36c18c8cc67034325f96a2f9d3f59d06786233eb","private":false,"scripts":{"lint":"biome lint --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test":"vitest","build":"pnpm build:cjs && pnpm build:esm","check":"biome check --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","format":"biome format --write --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","lint:fix":"biome lint --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","build:cjs":"tsc --project ./tsconfig.cjs.json","build:esm":"tsc --project ./tsconfig.esm.json && node scripts/rename-to-esm-files.js dist/esm","check:fix":"biome check --fix --unsafe --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none","test:unit":"vitest --project unit","test:wire":"vitest --project wire","format:check":"biome format --skip-parse-errors --no-errors-on-unmatched --max-diagnostics=none"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:10d776f6-ab48-4945-9113-f4df086e7558"}},"repository":{"url":"git+https://github.com/Speechify-AI/sdk-typescript.git","type":"git"},"_npmVersion":"11.17.0","description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FSpeechify-AI%2Fsdk-typescript) [![npm shiel","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"msw":"2.11.2","vitest":"^4.1.1","webpack":"^5.105.4","ts-loader":"^9.5.4","typescript":"~5.9.3","@types/node":"^20.0.0","@biomejs/biome":"2.4.10"},"_npmOperationalInternal":{"tmp":"tmp/api_4.0.1_1787167850799_0.33401404825877146","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-04-25T05:51:53.839Z","modified":"2026-09-29T15:11:33.906Z","0.0.1":"2025-04-25T05:51:54.069Z","0.0.3":"2025-04-25T07:53:14.578Z","0.0.4":"2025-04-25T09:40:14.365Z","0.0.5":"2025-04-25T09:48:33.239Z","0.0.6":"2025-04-25T09:51:10.043Z","0.0.7":"2025-04-25T09:56:57.071Z","1.0.0":"2025-04-25T16:30:53.226Z","1.0.1":"2025-11-06T01:32:26.775Z","1.0.2-alpha.0":"2026-01-29T07:17:21.788Z","2.0.0":"2026-06-22T18:25:22.697Z","3.0.0":"2026-07-10T19:18:16.247Z","3.0.1":"2026-07-10T19:44:01.825Z","4.0.0":"2026-08-19T18:01:32.960Z","4.0.1":"2026-08-19T19:30:50.964Z"},"bugs":{"url":"https://github.com/Speechify-AI/sdk-typescript/issues"},"homepage":"https://github.com/Speechify-AI/sdk-typescript#readme","repository":{"url":"git+https://github.com/Speechify-AI/sdk-typescript.git","type":"git"},"description":"[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FSpeechify-AI%2Fsdk-typescript) [![npm shiel","maintainers":[{"email":"hemant@speechify.com","name":"hemantkejriwal"},{"email":"vamsee@speechify.com","name":"vamsee_ch"},{"email":"tylerweitzman@gmail.com","name":"tylerweitzman"},{"email":"anson@speechify.com","name":"anrosent-speechify"},{"email":"eugene.mirotin@speechify.com","name":"emirotin_speechify"},{"email":"kkrause95@gmail.com","name":"vitalragaz"},{"email":"roman@speechify.com","name":"roman_speechify"},{"email":"vova@speechify.com","name":"vovakovalov"},{"email":"anjas@speechify.com","name":"anjas-speechify"}],"readme":"# Speechify TypeScript Library\n\n[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FSpeechify-AI%2Fsdk-typescript)\n[![npm shield](https://img.shields.io/npm/v/@speechify/api)](https://www.npmjs.com/package/@speechify/api)\n\nThe Speechify TypeScript library provides convenient access to the Speechify APIs from TypeScript.\n\n## Table of Contents\n\n- [Documentation](#documentation)\n- [Installation](#installation)\n- [Reference](#reference)\n- [Usage](#usage)\n- [Environments](#environments)\n- [Request and Response Types](#request-and-response-types)\n- [Exception Handling](#exception-handling)\n- [Streaming Response](#streaming-response)\n- [File Uploads](#file-uploads)\n- [Binary Response](#binary-response)\n- [Pagination](#pagination)\n- [Advanced](#advanced)\n  - [Subpackage Exports](#subpackage-exports)\n  - [Additional Headers](#additional-headers)\n  - [Additional Query String Parameters](#additional-query-string-parameters)\n  - [Retries](#retries)\n  - [Timeouts](#timeouts)\n  - [Aborting Requests](#aborting-requests)\n  - [Access Raw Response Data](#access-raw-response-data)\n  - [Logging](#logging)\n  - [Custom Fetch](#custom-fetch)\n  - [Runtime Compatibility](#runtime-compatibility)\n- [Contributing](#contributing)\n\n## Documentation\n\nAPI reference documentation is available [here](https://docs.speechify.ai/api-reference).\n\n## Installation\n\n```sh\nnpm i -s @speechify/api\n```\n\n## Reference\n\nA full reference for this library is available [here](https://github.com/Speechify-AI/sdk-typescript/blob/HEAD/./reference.md).\n\n## Usage\n\nInstantiate and use the client with the following:\n\n```typescript\nimport { SpeechifyClient } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({ token: \"YOUR_TOKEN\", version: \"2026-09-13\" });\nawait client.audio.speech({\n    audio_format: \"mp3\",\n    input: \"Hello! This is the Speechify text-to-speech API.\",\n    model: \"simba-3.2\",\n    voice_id: \"geffen_32\"\n});\n```\n\n## Environments\n\nThis SDK allows you to configure different environments for API requests.\n\n```typescript\nimport { SpeechifyClient, SpeechifyEnvironment } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({\n    environment: SpeechifyEnvironment.Default,\n});\n```\n\n## Request and Response Types\n\nThe SDK exports all request and response types as TypeScript interfaces. Simply import them with the\nfollowing namespace:\n\n```typescript\nimport { Speechify } from \"@speechify/api\";\n\nconst request: Speechify.GetSpeechRequest = {\n    ...\n};\n```\n\n## Exception Handling\n\nWhen the API returns a non-success status code (4xx or 5xx response), a subclass of the following error\nwill be thrown.\n\n```typescript\nimport { SpeechifyError } from \"@speechify/api\";\n\ntry {\n    await client.audio.speech(...);\n} catch (err) {\n    if (err instanceof SpeechifyError) {\n        console.log(err.statusCode);\n        console.log(err.message);\n        console.log(err.body);\n        console.log(err.rawResponse);\n    }\n}\n```\n\n## Streaming Response\n\nSome endpoints return streaming responses instead of returning the full response at once.\nThe SDK uses async iterators, so you can consume the responses using a `for await...of` loop.\n\n```typescript\nimport { SpeechifyClient } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({ token: \"YOUR_TOKEN\", version: \"2026-09-13\" });\nconst response = await client.audio.streamWithTimestamps({\n    body: {\n        input: \"Streaming long-form audio with the Speechify API.\",\n        model: \"simba-3.2\",\n        voice_id: \"geffen_32\"\n    }\n});\n\nconst audioChunks: Buffer[] = [];\n\nfor await (const item of response) {\n    switch (item.type) {\n        case \"speech.chunk\":\n            // `audio` is Base64 and the SDK does not decode it for you. It is\n            // absent on a marks-only chunk, which the last chunk often is.\n            if (item.audio != null) {\n                audioChunks.push(Buffer.from(item.audio, \"base64\"));\n            }\n            // Mark times are absolute ms from the start of the synthesis, so\n            // they apply to the concatenated audio, not to this chunk.\n            for (const mark of item.speech_marks ?? []) {\n                console.log(mark.start_time, mark.value);\n            }\n            break;\n\n        case \"speech.error\":\n            // A failure after the stream has opened arrives as an event, NOT as\n            // a thrown error: the 200 status is already committed. The SDK does\n            // not raise it for you, so handle it explicitly — otherwise the loop\n            // ends normally and you treat truncated audio as a success.\n            throw new Error(`${item.error.code}: ${item.error.message}`);\n\n        case \"speech.done\":\n            // Terminal event. There is no `[DONE]` sentinel.\n            console.log(\"billable characters:\", item.billable_characters_count);\n            console.log(\"audio duration (ms):\", item.audio_duration_ms);\n            break;\n\n        default:\n            // Ignore unrecognized event types so new ones cannot break you.\n            break;\n    }\n}\n\nconst audio = Buffer.concat(audioChunks);\n```\n\n## File Uploads\n\nYou can upload files using the client:\n\n```typescript\nimport { createReadStream } from \"fs\";\nimport * as fs from \"fs\";\nimport { SpeechifyClient } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({ token: \"YOUR_TOKEN\", version: \"2026-09-13\" });\nawait client.voices.create({\n    sample: fs.createReadStream(\"/path/to/your/file\"),\n    consent_recording: fs.createReadStream(\"/path/to/your/file\"),\n    \"Idempotency-Key\": \"a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d\",\n    name: \"name\",\n    gender: \"male\",\n    consent_challenge_id: \"consent_challenge_id\"\n});\n```\nThe client accepts a variety of types for file upload parameters:\n* Stream types: `fs.ReadStream`, `stream.Readable`, and `ReadableStream`\n* Buffered types: `Buffer`, `Blob`, `File`, `ArrayBuffer`, `ArrayBufferView`, and `Uint8Array`\n\n### Metadata\n\nYou can configure metadata when uploading a file:\n```typescript\nconst file: Uploadable.WithMetadata = {\n    data: createReadStream(\"path/to/file\"),\n    filename: \"my-file\",       // optional\n    contentType: \"audio/mpeg\", // optional\n    contentLength: 1949,       // optional\n};\n```\n\nAlternatively, you can upload a file directly from a file path:\n```typescript\nconst file : Uploadable.FromPath = {\n    path: \"path/to/file\",\n    filename: \"my-file\",        // optional\n    contentType: \"audio/mpeg\",  // optional\n    contentLength: 1949,        // optional\n};\n```\n\nThe metadata is used to set the `Content-Length`, `Content-Type`, and `Content-Disposition` headers. If not provided, the client will attempt to determine them automatically.\nFor example, `fs.ReadStream` has a `path` property which the SDK uses to retrieve the file size from the filesystem without loading it into memory.\n\n\n## Binary Response\n\nYou can consume binary data from endpoints using the `BinaryResponse` type which lets you choose how to consume the data:\n\n```typescript\nconst response = await client.audio.stream(...);\nconst stream: ReadableStream<Uint8Array> = response.stream();\n// const arrayBuffer: ArrayBuffer = await response.arrayBuffer();\n// const blob: Blob = response.blob();\n// const bytes: Uint8Array = response.bytes();\n// You can only use the response body once, so you must choose one of the above methods.\n// If you want to check if the response body has been used, you can use the following property.\nconst bodyUsed = response.bodyUsed;\n```\n<details>\n<summary>Save binary response to a file</summary>\n\n<blockquote>\n<details>\n<summary>Node.js</summary>\n\n<blockquote>\n<details>\n<summary>ReadableStream (most-efficient)</summary>\n\n```ts\nimport { createWriteStream } from 'fs';\nimport { Readable } from 'stream';\nimport { pipeline } from 'stream/promises';\n\nconst response = await client.audio.stream(...);\n\nconst stream = response.stream();\nconst nodeStream = Readable.fromWeb(stream);\nconst writeStream = createWriteStream('path/to/file');\n\nawait pipeline(nodeStream, writeStream);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ArrayBuffer</summary>\n\n```ts\nimport { writeFile } from 'fs/promises';\n\nconst response = await client.audio.stream(...);\n\nconst arrayBuffer = await response.arrayBuffer();\nawait writeFile('path/to/file', Buffer.from(arrayBuffer));\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Blob</summary>\n\n```ts\nimport { writeFile } from 'fs/promises';\n\nconst response = await client.audio.stream(...);\n\nconst blob = await response.blob();\nconst arrayBuffer = await blob.arrayBuffer();\nawait writeFile('output.bin', Buffer.from(arrayBuffer));\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bytes (UIntArray8)</summary>\n\n```ts\nimport { writeFile } from 'fs/promises';\n\nconst response = await client.audio.stream(...);\n\nconst bytes = await response.bytes();\nawait writeFile('path/to/file', bytes);\n```\n\n</details>\n</blockquote>\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bun</summary>\n\n<blockquote>\n<details>\n<summary>ReadableStream (most-efficient)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst stream = response.stream();\nawait Bun.write('path/to/file', stream);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ArrayBuffer</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst arrayBuffer = await response.arrayBuffer();\nawait Bun.write('path/to/file', arrayBuffer);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Blob</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst blob = await response.blob();\nawait Bun.write('path/to/file', blob);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bytes (UIntArray8)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst bytes = await response.bytes();\nawait Bun.write('path/to/file', bytes);\n```\n\n</details>\n</blockquote>\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Deno</summary>\n\n<blockquote>\n<details>\n<summary>ReadableStream (most-efficient)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst stream = response.stream();\nconst file = await Deno.open('path/to/file', { write: true, create: true });\nawait stream.pipeTo(file.writable);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ArrayBuffer</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst arrayBuffer = await response.arrayBuffer();\nawait Deno.writeFile('path/to/file', new Uint8Array(arrayBuffer));\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Blob</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst blob = await response.blob();\nconst arrayBuffer = await blob.arrayBuffer();\nawait Deno.writeFile('path/to/file', new Uint8Array(arrayBuffer));\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bytes (UIntArray8)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst bytes = await response.bytes();\nawait Deno.writeFile('path/to/file', bytes);\n```\n\n</details>\n</blockquote>\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Browser</summary>\n\n<blockquote>\n<details>\n<summary>Blob (most-efficient)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst blob = await response.blob();\nconst url = URL.createObjectURL(blob);\n\n// trigger download\nconst a = document.createElement('a');\na.href = url;\na.download = 'filename';\na.click();\nURL.revokeObjectURL(url);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ReadableStream</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst stream = response.stream();\nconst reader = stream.getReader();\nconst chunks = [];\n\nwhile (true) {\n  const { done, value } = await reader.read();\n  if (done) break;\n  chunks.push(value);\n}\n\nconst blob = new Blob(chunks);\nconst url = URL.createObjectURL(blob);\n\n// trigger download\nconst a = document.createElement('a');\na.href = url;\na.download = 'filename';\na.click();\nURL.revokeObjectURL(url);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ArrayBuffer</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst arrayBuffer = await response.arrayBuffer();\nconst blob = new Blob([arrayBuffer]);\nconst url = URL.createObjectURL(blob);\n\n// trigger download\nconst a = document.createElement('a');\na.href = url;\na.download = 'filename';\na.click();\nURL.revokeObjectURL(url);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bytes (UIntArray8)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst bytes = await response.bytes();\nconst blob = new Blob([bytes]);\nconst url = URL.createObjectURL(blob);\n\n// trigger download\nconst a = document.createElement('a');\na.href = url;\na.download = 'filename';\na.click();\nURL.revokeObjectURL(url);\n```\n\n</details>\n</blockquote>\n\n</details>\n</blockquote>\n\n</details>\n</blockquote>\n\n<details>\n<summary>Convert binary response to text</summary>\n\n<blockquote>\n<details>\n<summary>ReadableStream</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst stream = response.stream();\nconst text = await new Response(stream).text();\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>ArrayBuffer</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst arrayBuffer = await response.arrayBuffer();\nconst text = new TextDecoder().decode(arrayBuffer);\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Blob</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst blob = await response.blob();\nconst text = await blob.text();\n```\n\n</details>\n</blockquote>\n\n<blockquote>\n<details>\n<summary>Bytes (UIntArray8)</summary>\n\n```ts\nconst response = await client.audio.stream(...);\n\nconst bytes = await response.bytes();\nconst text = new TextDecoder().decode(bytes);\n```\n\n</details>\n</blockquote>\n\n</details>\n\n## Pagination\n\nList endpoints are paginated. The SDK provides an iterator so that you can simply loop over the items:\n\n```typescript\nimport { SpeechifyClient } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({ token: \"YOUR_TOKEN\", version: \"2026-09-13\" });\nconst pageableResponse = await client.voices.list({\n    locale: \"en\",\n    model: \"simba-3.2\"\n});\nfor await (const item of pageableResponse) {\n    console.log(item);\n}\n\n// Or you can manually iterate page-by-page\nlet page = await client.voices.list({\n    locale: \"en\",\n    model: \"simba-3.2\"\n});\nwhile (page.hasNextPage()) {\n    page = page.getNextPage();\n}\n\n// You can also access the underlying response\nconst response = page.response;\n```\n\n## Advanced\n\n### Subpackage Exports\n\nThis SDK supports direct imports of subpackage clients, which allows JavaScript bundlers to tree-shake and include only the imported subpackage code. This results in much smaller bundle sizes.\n\n```typescript\nimport { AudioClient } from '@speechify/api/audio';\n\nconst client = new AudioClient({...});\n```\n\n### Additional Headers\n\nIf you would like to send additional headers as part of the request, use the `headers` request option.\n\n```typescript\nimport { SpeechifyClient } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({\n    ...\n    headers: {\n        'X-Custom-Header': 'custom value'\n    }\n});\n\nconst response = await client.audio.speech(..., {\n    headers: {\n        'X-Custom-Header': 'custom value'\n    }\n});\n```\n\n### Additional Query String Parameters\n\nIf you would like to send additional query string parameters as part of the request, use the `queryParams` request option.\n\n```typescript\nconst response = await client.audio.speech(..., {\n    queryParams: {\n        'customQueryParamKey': 'custom query param value'\n    }\n});\n```\n\n### Retries\n\nThe SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long\nas the request is deemed retryable and the number of retry attempts has not grown larger than the configured\nretry limit (default: 2).\n\nWhich status codes are retried depends on the `retryStatusCodes` generator configuration:\n\n**`legacy`** (current default): retries on\n- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)\n- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)\n- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#server_error_responses) (All server errors, including 500)\n\n**`recommended`**: retries on\n- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)\n- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)\n- [502](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/502) (Bad Gateway)\n- [503](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/503) (Service Unavailable)\n- [504](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/504) (Gateway Timeout)\n\nUse the `maxRetries` request option to configure this behavior.\n\n```typescript\nconst response = await client.audio.speech(..., {\n    maxRetries: 0 // override maxRetries at the request level\n});\n```\n\n### Timeouts\n\nThe SDK defaults to a 60 second timeout. Use the `timeoutInSeconds` option to configure this behavior.\n\n```typescript\nconst response = await client.audio.speech(..., {\n    timeoutInSeconds: 30 // override timeout to 30s\n});\n```\n\n### Aborting Requests\n\nThe SDK allows users to abort requests at any point by passing in an abort signal.\n\n```typescript\nconst controller = new AbortController();\nconst response = await client.audio.speech(..., {\n    abortSignal: controller.signal\n});\ncontroller.abort(); // aborts the request\n```\n\n### Access Raw Response Data\n\nThe SDK provides access to raw response data, including headers, through the `.withRawResponse()` method.\nThe `.withRawResponse()` method returns a promise that results to an object with a `data` and a `rawResponse` property.\n\n```typescript\nconst { data, rawResponse } = await client.audio.speech(...).withRawResponse();\n\nconsole.log(data);\nconsole.log(rawResponse.headers['X-My-Header']);\n```\n\n### Logging\n\nThe SDK supports logging. You can configure the logger by passing in a `logging` object to the client options.\n\n```typescript\nimport { SpeechifyClient, logging } from \"@speechify/api\";\n\nconst client = new SpeechifyClient({\n    ...\n    logging: {\n        level: logging.LogLevel.Debug, // defaults to logging.LogLevel.Info\n        logger: new logging.ConsoleLogger(), // defaults to ConsoleLogger\n        silent: false, // defaults to true, set to false to enable logging\n    }\n});\n```\nThe `logging` object can have the following properties:\n- `level`: The log level to use. Defaults to `logging.LogLevel.Info`.\n- `logger`: The logger to use. Defaults to a `logging.ConsoleLogger`.\n- `silent`: Whether to silence the logger. Defaults to `true`.\n\nThe `level` property can be one of the following values:\n- `logging.LogLevel.Debug`\n- `logging.LogLevel.Info`\n- `logging.LogLevel.Warn`\n- `logging.LogLevel.Error`\n\nTo provide a custom logger, you can pass in an object that implements the `logging.ILogger` interface.\n\n<details>\n<summary>Custom logger examples</summary>\n\nHere's an example using the popular `winston` logging library.\n```ts\nimport winston from 'winston';\n\nconst winstonLogger = winston.createLogger({...});\n\nconst logger: logging.ILogger = {\n    debug: (msg, ...args) => winstonLogger.debug(msg, ...args),\n    info: (msg, ...args) => winstonLogger.info(msg, ...args),\n    warn: (msg, ...args) => winstonLogger.warn(msg, ...args),\n    error: (msg, ...args) => winstonLogger.error(msg, ...args),\n};\n```\n\nHere's an example using the popular `pino` logging library.\n\n```ts\nimport pino from 'pino';\n\nconst pinoLogger = pino({...});\n\nconst logger: logging.ILogger = {\n  debug: (msg, ...args) => pinoLogger.debug(args, msg),\n  info: (msg, ...args) => pinoLogger.info(args, msg),\n  warn: (msg, ...args) => pinoLogger.warn(args, msg),\n  error: (msg, ...args) => pinoLogger.error(args, msg),\n};\n```\n</details>\n\n\n### Custom Fetch\n\nThe SDK provides a low-level `fetch` method for making custom HTTP requests while still\nbenefiting from SDK-level configuration like authentication, retries, timeouts, and logging.\nThis is useful for calling API endpoints not yet supported in the SDK.\n\n```typescript\nconst response = await client.fetch(\"/v1/custom/endpoint\", {\n    method: \"GET\",\n}, {\n    timeoutInSeconds: 30,\n    maxRetries: 3,\n    headers: {\n        \"X-Custom-Header\": \"custom-value\",\n    },\n});\n\nconst data = await response.json();\n```\n\n### Runtime Compatibility\n\n\nThe SDK works in the following runtimes:\n\n\n\n- Node.js 18+\n- Vercel\n- Cloudflare Workers\n- Deno v1.25+\n- Bun 1.0+\n- React Native\n\n\n## Contributing\n\nWhile we value open-source contributions to this SDK, this library is generated programmatically.\nAdditions made directly to this library would have to be moved over to our generation code,\notherwise they would be overwritten upon the next generated release. Feel free to open a PR as\na proof of concept, but know that we will not be able to merge it as-is. We suggest opening\nan issue first to discuss with us!\n\nOn the other hand, contributions to the README are always very welcome!\n","readmeFilename":"README.md"}