{"_id":"@useapi/midjourney-api","_rev":"4-81ff0aa8f951421fcaf365468b834c7a","name":"@useapi/midjourney-api","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@useapi/midjourney-api","version":"1.0.0","description":"TypeScript client library for Midjourney API by useapi.net","author":{"name":"https://useapi.net"},"keywords":["fetch","typescript","midjourney","api"],"license":"ISC","main":"./dist/index.js","type":"commonjs","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.js"}},"typings":"./dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build"},"dependencies":{"whatwg-fetch":"^3.0.0","es6-promise":"^4.2.4","url-parse":"^1.4.3"},"devDependencies":{"typescript":"^4.0","@types/url-parse":"1.4.4"},"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"homepage":"https://useapi.net","gitHead":"eeb1ba628cd31898002ae62135dd93fe18e444c6","_id":"@useapi/midjourney-api@1.0.0","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-SIj3jV1+LjNpAGgrFFgA3KR36epCPvi6p+dsFADL3c/urm0KoQeLS578AY3VNc7NQ8m1vIAiMxA6Q7bGnBjVMg==","shasum":"a0154789553c3ee78300bd3f019d81e9a3e463b4","tarball":"https://registry.npmjs.org/@useapi/midjourney-api/-/midjourney-api-1.0.0.tgz","fileCount":148,"unpackedSize":766301,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBTyft3AraA1yg/cYPV54Nx11FMthhzDVhpAjGFo48EDAiAj2KeaZeV0TruEFVPtgDcX8WHh8lk9vE6snY7Y85rMYQ=="}]},"_npmUser":{"name":"useapi.net","email":"useapinet@gmail.com"},"directories":{},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/midjourney-api_1.0.0_1697003228033_0.1369637782458939"},"_hasShrinkwrap":false},"1.0.1":{"name":"@useapi/midjourney-api","version":"1.0.1","description":"TypeScript client library for Midjourney API by useapi.net","author":{"name":"https://useapi.net"},"keywords":["fetch","typescript","midjourney","api"],"license":"ISC","main":"./dist/index.js","type":"commonjs","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.js"}},"typings":"./dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build"},"dependencies":{"whatwg-fetch":"^3.0.0","es6-promise":"^4.2.4","url-parse":"^1.4.3"},"devDependencies":{"typescript":"^4.0","@types/url-parse":"1.4.4"},"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"homepage":"https://useapi.net","gitHead":"eeb1ba628cd31898002ae62135dd93fe18e444c6","_id":"@useapi/midjourney-api@1.0.1","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-NWT+Por8PTtDfhUdZSnxik3OzOJze8epcP5MBlp0jDONXfPUHLEchiJLRiK6vRRhMxSahhc7p0u6CzhnW9DAqQ==","shasum":"e45d8bc31797927f05d7692360b6769c4d9f3111","tarball":"https://registry.npmjs.org/@useapi/midjourney-api/-/midjourney-api-1.0.1.tgz","fileCount":148,"unpackedSize":766753,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZc64XRNycxJB7n5eHZb3/hfgCEv7+XkoptL3yHDYvdAiAGYnLfiVEA6OUOfVg9hyccTxsXTE43gjJpX+TSQCV1Jw=="}]},"_npmUser":{"name":"useapi.net","email":"useapinet@gmail.com"},"directories":{},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/midjourney-api_1.0.1_1697004072111_0.6684713541600358"},"_hasShrinkwrap":false},"1.0.2":{"name":"@useapi/midjourney-api","version":"1.0.2","description":"TypeScript client library for Midjourney API by useapi.net","author":{"name":"https://useapi.net"},"keywords":["fetch","typescript","midjourney","api"],"license":"ISC","main":"./dist/index.js","type":"commonjs","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.js"}},"typings":"./dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build"},"dependencies":{"whatwg-fetch":"^3.0.0","es6-promise":"^4.2.4","url-parse":"^1.4.3"},"devDependencies":{"typescript":"^4.0","@types/url-parse":"1.4.4"},"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"homepage":"https://useapi.net","gitHead":"28e95f92d7ca964141c95d9e5140dd4351bbf6e2","_id":"@useapi/midjourney-api@1.0.2","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-ydKUZaSr+hlg6/zKlWwk6jC8qO+SaQVx6KJFEz0u9eQ4nzwYwIWWzDadTTwtf4TGbyr4L+sSCusCuirI62/q7A==","shasum":"97397db1cd9956f18da3356d473f6ef1de5f1496","tarball":"https://registry.npmjs.org/@useapi/midjourney-api/-/midjourney-api-1.0.2.tgz","fileCount":147,"unpackedSize":454719,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuVl0WuLBvIb3A0OnWpDp4XuW4mtlKEJs3f+16Y2FtQAiBJFF5BJKI5OvoAbv4o7FJeKjip3jFQh8kHgXqFWMAfsw=="}]},"_npmUser":{"name":"useapi.net","email":"useapinet@gmail.com"},"directories":{},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/midjourney-api_1.0.2_1697004608203_0.5287410336651601"},"_hasShrinkwrap":false},"1.0.3":{"name":"@useapi/midjourney-api","version":"1.0.3","description":"TypeScript client library for Midjourney API by useapi.net","author":{"name":"https://useapi.net"},"keywords":["fetch","typescript","midjourney","api"],"license":"ISC","main":"./dist/index.js","type":"commonjs","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.js"}},"typings":"./dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build"},"dependencies":{"whatwg-fetch":"^3.0.0","es6-promise":"^4.2.4","url-parse":"^1.4.3"},"devDependencies":{"typescript":"^4.0","@types/url-parse":"1.4.4"},"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"homepage":"https://useapi.net","gitHead":"28e95f92d7ca964141c95d9e5140dd4351bbf6e2","_id":"@useapi/midjourney-api@1.0.3","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-e8/M2deKYWzecG9t4mthrz0bXngN2FEuu63jSc1JNwnwVIHVNG6hNqUpcA4t+zfRMQlFaiIaVISeHugqi6qYNg==","shasum":"54aff682561bee0ac8d89905c49a21108acba1dc","tarball":"https://registry.npmjs.org/@useapi/midjourney-api/-/midjourney-api-1.0.3.tgz","fileCount":147,"unpackedSize":454713,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDwtD6Bf1T4avMnF/SH1fAmX7IW68WEfiYYoDTHlZJ1QAiEA9h1APR9oz50dm/WGLnC5Fja1WhErlqE7LXTQeZgaKqs="}]},"_npmUser":{"name":"useapi.net","email":"useapinet@gmail.com"},"directories":{},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/midjourney-api_1.0.3_1697004703218_0.8507640600126203"},"_hasShrinkwrap":false},"1.0.4":{"name":"@useapi/midjourney-api","version":"1.0.4","description":"TypeScript client library for Midjourney API by useapi.net","author":{"name":"https://useapi.net"},"keywords":["fetch","typescript","midjourney","api"],"license":"ISC","main":"./dist/index.js","type":"commonjs","exports":{".":{"require":"./dist/index.js","types":"./dist/index.d.js"}},"typings":"./dist/index.d.ts","scripts":{"build":"tsc","prepare":"npm run build"},"dependencies":{"whatwg-fetch":"^3.0.0","es6-promise":"^4.2.4","url-parse":"^1.4.3"},"devDependencies":{"typescript":"^4.0","@types/url-parse":"1.4.4"},"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"homepage":"https://useapi.net","gitHead":"0d61ba237dbeac8a6e62dc41bb4fafb9b6ebe48c","_id":"@useapi/midjourney-api@1.0.4","_nodeVersion":"18.15.0","_npmVersion":"9.5.0","dist":{"integrity":"sha512-WbRifO10WtAnjRSM7PElSjFghfuw9cC5e8iQ3SbvRHT/PiUVY+sHEBoJIzzPVhsuhQEKq0679uHNb+vedxjp2A==","shasum":"3d228cbc7ef71e458a73dc6915e2952119b6c415","tarball":"https://registry.npmjs.org/@useapi/midjourney-api/-/midjourney-api-1.0.4.tgz","fileCount":147,"unpackedSize":457560,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmEXvBhlHKXP39LQsUYnLPA5XvxrCgpZv2fY5Xi73kewIhANrgwUGRvaB9Gu+ELgvyTCTAqYArcCkPiNkmXPpVV8NN"}]},"_npmUser":{"name":"useapi.net","email":"useapinet@gmail.com"},"directories":{},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/midjourney-api_1.0.4_1699050450147_0.5672594290979103"},"_hasShrinkwrap":false}},"time":{"created":"2023-10-11T05:47:07.906Z","1.0.0":"2023-10-11T05:47:08.453Z","modified":"2023-11-03T22:27:30.589Z","1.0.1":"2023-10-11T06:01:12.482Z","1.0.2":"2023-10-11T06:10:08.420Z","1.0.3":"2023-10-11T06:11:43.434Z","1.0.4":"2023-11-03T22:27:30.404Z"},"maintainers":[{"name":"useapi.net","email":"useapinet@gmail.com"}],"description":"TypeScript client library for Midjourney API by useapi.net","homepage":"https://useapi.net","keywords":["fetch","typescript","midjourney","api"],"repository":{"type":"git","url":"git+https://github.com/useapi/midjourney-api.git"},"author":{"name":"https://useapi.net"},"bugs":{"url":"https://useapi.net","email":"support@useapi.net"},"license":"ISC","readme":"## @useapi/midjourney-api\n\nThis package contains TypeScript client library for Midjourney API by [useapi.net](https://useapi.net).  \nQuick [demo](https://useapi.net/demo).\n\n## Install\n\n#### npm \n```\nnpm install @useapi/midjourney-api\n```\n\n## Documentation\n\nMidjourney [/imagine](https://docs.midjourney.com/docs/quick-start#5-use-the-imagine-command) command available via [jobs/imagine](https://useapi.net/docs/api-v1/jobs-imagine) API endpoint.\n\nMidjourney [upscale or create variations](https://docs.midjourney.com/docs/quick-start#8-upscale-or-create-variations) and [enhance or modify](https://docs.midjourney.com/docs/quick-start#9-enhance-or-modify-your-image) button commands available via [jobs/button](https://useapi.net/docs/api-v1/jobs-button) API endpoint. \n\nMidjourney [/describe](https://docs.midjourney.com/docs/describe) command available via [jobs/describe](https://useapi.net/docs/api-v1/jobs-describe) API endpoint. \n\nMidjourney [/blend](https://docs.midjourney.com/docs/blend) command available via [jobs/blend](https://useapi.net/docs/api-v1/jobs-blend) API endpoint. \n\nUse [jobs/?jobid=<code class=\"language-plaintext highlighter-rouge\">jobid</code>](https://useapi.net/docs/api-v1/jobs-jobid) API endpoint to retrieve job results. \n\nPostman [collection](https://www.postman.com/useapinet/workspace/useapi-net).\n\nSwagger OpenAPI [documentation](https://app.swaggerhub.com/apis/useapi/Midjourney_API_v1/1.0) for generating server stubs and client SDKs.\n\n## Usage \n\nYou need to set up and configure the Midjourey Discord account as well as subscribe to useapi.net service before you can start using API. Setup [instructions](https://useapi.net/docs/start-here). \n\n```TypeScript\nimport {\n    createConfiguration,\n    DefaultApi,\n    ImagineResponse,\n    ButtonResponse,\n    BlendResponse,\n    JobResponse,\n    JobsButtonPostRequestButtonEnum,\n    JobsBlendPostRequestBlendDimensionsEnum,\n    DescribeResponse,\n} from '@useapi/midjourney-api';\n\nconst sleep = (ms = 0) => new Promise(resolve => setTimeout(resolve, ms));\n\nconst configuration = createConfiguration({\n    authMethods: {\n        apiToken: {\n            tokenProvider: {\n                // Load api token from environment \n                getToken() { return process.env.USEAPI_TOKEN ?? 'useapi.net API token' }\n            }\n        }\n    }\n});\n\n// Load Discord settings from environment \nconst discord = process.env.USEAPI_DISCORD ?? 'Discord token';\nconst server = process.env.USEAPI_SERVER ?? 'Discord server id number';\nconst channel = process.env.USEAPI_CHANNEL ?? 'Discord channel id number';\n\nconst apiInstance = new DefaultApi(configuration);\n\n// Helper function to monitor job status and retrieve results\nconst waitForJobToComplete = async (\n    job: ImagineResponse |\n        ButtonResponse |\n        BlendResponse |\n        DescribeResponse |\n        JobResponse) => {\n\n    const verb = job.verb.toUpperCase();\n\n    console.log(`${verb} : ${job.status}`, job.jobid);\n\n    while (job.code == 200 && ['started', 'progress'].includes(job.status)) {\n        await sleep(20 * 1000);\n        // JobResponse\n        job = await apiInstance.jobsGet(job.jobid);\n        console.log(`${verb} : ${job.status}`, { jobid: job.jobid, content: job.content });\n    }\n\n    if ((job instanceof JobResponse) && job.attachments?.length)\n        console.log(`${verb} url`, job.attachments?.at(0)?.url);\n    if ((job instanceof JobResponse) && job.buttons?.length)\n        console.log(`${verb} buttons`, job.buttons?.join());\n\n    return job;\n}\n\nconst demo = async () => {\n    // Midjourney /describe, using Promise pattern\n    apiInstance.jobsDescribePost(\n        {\n            describeUrl: \"https://mymodernmet.com/wp/wp-content/uploads/2017/12/free-images-national-gallery-of-art-9.jpg\",\n            discord,\n            server,\n            channel,\n        }\n    ).then(async (data: DescribeResponse) => {\n        console.log('DESCRIBE started', data);\n        await waitForJobToComplete(data);\n    }).catch((error: any) => console.error('DESCRIBE failed', error));\n\n    // Midjourney /blend, using Promise pattern\n    apiInstance.jobsBlendPost(\n        {\n            blendUrls: [\n                \"https://mymodernmet.com/wp/wp-content/uploads/2017/12/free-images-national-gallery-of-art-6.jpg\",\n                \"https://mymodernmet.com/wp/wp-content/uploads/2017/12/free-images-national-gallery-of-art-2.jpg\"\n            ],\n            blendDimensions: JobsBlendPostRequestBlendDimensionsEnum.Landscape,\n            discord,\n            server,\n            channel,\n        }\n    ).then(async (data: BlendResponse) => {\n        console.log('BLEND started', data);\n        await waitForJobToComplete(data);\n    }).catch((error: any) => console.error('BLEND failed', error));\n\n    // Midjourney /imagine, using await & try..catch pattern\n    let job: ImagineResponse | JobResponse | ButtonResponse;\n    try {\n        // ImagineResponse\n        job = await apiInstance.jobsImaginePost(\n            {\n                prompt: \"Steampunk cat cycling in San Francisco, vintage photo\",\n                discord,\n                server,\n                channel,\n            });\n\n        await waitForJobToComplete(job);\n\n        const imagineJobId = job.jobid;\n\n        // Midjourney button, using await & try..catch pattern\n        job = await apiInstance.jobsButtonPost(\n            {\n                jobid: imagineJobId,\n                button: JobsButtonPostRequestButtonEnum.V1\n            });\n\n        await waitForJobToComplete(job);\n    } catch (ex: any) {\n        console.log('IMAGINE or BUTTON failed', ex);\n    }\n}\n\ndemo();\n```\n\n## Changelog \n\nVersion 1.0.4 | November 3, 2023  \n\nAdded support for following  [jobs/button](https://useapi.net/docs/api-v1/jobs-button) options:  \n- Upscale (2x)\n- Upscale (4x)\n- Redo Upscale (2x)\n- Redo Upscale (4x)\n\n## Support \n\nVisit our   \n-  [Discord Server](https://discord.gg/w28uK3cnmF) for any additional support and questions.\n- [YouTube Channel](https://www.youtube.com/@midjourneyapi) for tutorials and demos.","readmeFilename":"README.md"}