{"id":25697664,"url":"https://github.com/useapi/midjourney-api-client","last_synced_at":"2025-04-28T14:14:09.824Z","repository":{"id":205370994,"uuid":"705052039","full_name":"useapi/midjourney-api-client","owner":"useapi","description":"Python client library for Midjourney API by useapi.net","archived":false,"fork":false,"pushed_at":"2023-11-03T22:50:54.000Z","size":47,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-28T14:14:03.929Z","etag":null,"topics":["ai","api","integration","midjourney","openapi"],"latest_commit_sha":null,"homepage":"https://useapi.net","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/useapi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-14T22:34:44.000Z","updated_at":"2024-12-09T15:50:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"a79af05f-aa13-4143-9d4d-91b8ee27dd61","html_url":"https://github.com/useapi/midjourney-api-client","commit_stats":null,"previous_names":["useapi/midjourney-api-client"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useapi%2Fmidjourney-api-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useapi%2Fmidjourney-api-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useapi%2Fmidjourney-api-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/useapi%2Fmidjourney-api-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/useapi","download_url":"https://codeload.github.com/useapi/midjourney-api-client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251326851,"owners_count":21571636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","api","integration","midjourney","openapi"],"created_at":"2025-02-25T02:30:09.527Z","updated_at":"2025-04-28T14:14:09.801Z","avatar_url":"https://github.com/useapi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# midjourney-api-client\n\nThis package contains Python client library for Midjourney API by [useapi.net](https://useapi.net).  \n\n[Useapi.net](https://useapi.net)  provides a simple, reliable and affordable way to use [Midjourney](https://midjourney.com/) via standard REST API.\n\nQuick [demo](https://useapi.net/demo).\n## Requirements.\n\nPython 3.7+\n\n## Installation \u0026 Usage\n### pip install\n\n```sh\npip install midjourney-api-client\n```\nYou may need to run `pip` with root permission: `sudo pip install midjourney-api-client`.\n\nThen import the package:\n```python\nimport midjourney_api_client\n```\n## API Overview\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=\u003ccode class=\"language-plaintext highlighter-rouge\"\u003ejobid\u003c/code\u003e](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 will need to [set up and configure](https://useapi.net/docs/start-here) the Midjourey Discord account as well as subscribe to useapi.net service before you can start using API. \n\nPlease follow the [installation procedure](#installation--usage) and then run the following:\n\n```python\nimport os\nimport time\nfrom typing import Union\nfrom pprint import pprint\nimport midjourney_api_client\nfrom midjourney_api_client.api.default_api import DefaultApi\nfrom midjourney_api_client.models.describe_response import DescribeResponse\nfrom midjourney_api_client.models.imagine_response import ImagineResponse\nfrom midjourney_api_client.models.job_response import JobResponse\nfrom midjourney_api_client.models.jobs_blend_post_request import JobsBlendPostRequest\nfrom midjourney_api_client.models.jobs_button_post_request import JobsButtonPostRequest\nfrom midjourney_api_client.models.jobs_describe_post_request import JobsDescribePostRequest\nfrom midjourney_api_client.models.jobs_imagine_post_request import JobsImaginePostRequest\nfrom midjourney_api_client.rest import ApiException\n\nconfiguration = midjourney_api_client.Configuration(\n    host = \"https://api.useapi.net/v1\"\n)\n\n# Extract setting from environment\n# Suggested shell execution command:\n# USEAPI_TOKEN=\"...\" USEAPI_DISCORD=\"...\" USEAPI_SERVER=\"...\" USEAPI_CHANNEL=\"...\" python3 ./test.py\napi_token = os.environ[\"USEAPI_TOKEN\"]\ndiscord = os.environ[\"USEAPI_DISCORD\"]\nserver = os.environ[\"USEAPI_SERVER\"]\nchannel = os.environ[\"USEAPI_CHANNEL\"]\n# Optional callback url\n# We recommend using sites like webhook.site to test callback URL functionality.\nreply_url = os.environ.get(\"USEAPI_CALLBACK\", \"\")\n\n# Configure Bearer authorization: apiToken\nconfiguration = midjourney_api_client.Configuration(\n    access_token = api_token\n)\n\n# This function is not not needed if job parameter reply_url (callback) specified\ndef wait_for_job_to_complete(api_instance: DefaultApi, job: Union[DescribeResponse, ImagineResponse, JobResponse]):\n    verb = job.verb.upper()\n    print(f\"{verb} : {job.status}\", job.jobid)\n\n    while job.code == 200 and job.status in ['started', 'progress']:\n        # Sleep for 20 seconds\n        time.sleep(20)  \n        job = api_instance.jobs_get(job.jobid)\n        print(f\"{verb} : {job.status}\", {\"jobid\": job.jobid, \"content\": job.content})\n\n    if isinstance(job, JobResponse) and job.attachments:\n        print(f\"{verb} url\", job.attachments[0].url)\n    if isinstance(job, JobResponse) and job.buttons:\n        print(f\"{verb} buttons\", \", \".join(job.buttons))\n\n    return job\n\ndef main():\n    # Enter a context with an instance of the API client\n    with midjourney_api_client.ApiClient(configuration) as api_client:\n        # Create an instance of the API class\n        api_instance = midjourney_api_client.DefaultApi(api_client)\n\n        # Midjourney /describe\n        try:\n            jobs_describe_post_request = JobsDescribePostRequest(\n                describeUrl=\"https://mymodernmet.com/wp/wp-content/uploads/2017/12/free-images-national-gallery-of-art-9.jpg\",\n                discord=discord,\n                server=server,\n                channel=channel,\n                reply_url=reply_url\n            )\n            describe_response = api_instance.jobs_describe_post(jobs_describe_post_request)\n            pprint(describe_response)\n\n            # Not needed if job parameter reply_url (callback) specified\n            describe_response = wait_for_job_to_complete(api_instance, describe_response)\n\n        except ApiException as e:\n            print(\"Exception when calling jobs_describe_post_request: %s\\n\" % e)\n\n        # Midjourney /blend\n        try:\n            jobs_blend_post_request = JobsBlendPostRequest(\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                discord=discord,\n                server=server,\n                channel=channel,\n                reply_url=reply_url\n            )\n            blend_response = api_instance.jobs_blend_post(jobs_blend_post_request)\n            pprint(blend_response)\n\n            # Not needed if job parameter reply_url (callback) specified\n            blend_response = wait_for_job_to_complete(api_instance, blend_response)\n\n        except ApiException as e:\n            print(\"Exception when calling jobs_blend_post: %s\\n\" % e)\n\n        # Midjourney /imagine\n        try:\n            jobs_imagine_post_request = JobsImaginePostRequest(\n                prompt=\"Steampunk cat cycling in San Francisco, vintage photo\",\n                discord=discord,\n                server=server,\n                channel=channel,\n                reply_url=reply_url\n            )\n            imagine_response = api_instance.jobs_imagine_post(jobs_imagine_post_request)\n            pprint(imagine_response)\n\n            imagine_response = wait_for_job_to_complete(api_instance, imagine_response)\n\n        except ApiException as e:\n            print(\"Exception when calling jobs_imagine_post: %s\\n\" % e)\n\n        # Midjourney button commands\n        try:\n            jobs_button_post_request = JobsButtonPostRequest(\n                button=\"V1\",\n                jobid=imagine_response.jobid,\n                reply_url=reply_url\n            )\n            button_response = api_instance.jobs_button_post(jobs_button_post_request)\n            pprint(button_response)\n\n            # Not needed if job parameter reply_url (callback) specified\n            button_response = wait_for_job_to_complete(api_instance, button_response)\n\n        except ApiException as e:\n            print(\"Exception when calling jobs_button_post: %s\\n\" % e)\n\nmain()\n\n```\n\n## Documentation for API Endpoints\n\nAll URIs are relative to *https://api.useapi.net/v1*\n\nMethod | HTTP request | Description\n ------------- | ------------- | -------------\n[**jobs_imagine_post**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_imagine_post) | **POST** /jobs/imagine | Midjourney /imagine command\n[**jobs_blend_post**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_blend_post) | **POST** /jobs/blend | Midjourney /blend command\n[**jobs_describe_post**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_describe_post) | **POST** /jobs/describe | Midjourney /describe command\n[**jobs_button_post**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_button_post) | **POST** /jobs/button | Midjourney upscale or create variations and enhance or modify buttons\n[**jobs_get**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_get) | **GET** /jobs/ | Retrieve job status and results\n[**jobs_get_list**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_get_list) | **GET** /jobs | Get list of currently executing jobs\n[**jobs_cancel_get**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#jobs_cancel_get) | **GET** /jobs/cancel/ | Cancel job\n[**account_get**](https://github.com/useapi/midjourney-api-client/blob/main/docs/DefaultApi.md#account_get) | **GET** /account | Retrieve useapi.net account information\n\n## Documentation For Models\n\n - [AccountResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/AccountResponse.md)\n - [BlendResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/BlendResponse.md)\n - [ButtonResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/ButtonResponse.md)\n - [ButtonResponseErrorUpscaled](https://github.com/useapi/midjourney-api-client/blob/main/docs/ButtonResponseErrorUpscaled.md)\n - [DescribeResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/DescribeResponse.md)\n - [ImagineResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/ImagineResponse.md)\n - [ImagineResponseModerated](https://github.com/useapi/midjourney-api-client/blob/main/docs/ImagineResponseModerated.md)\n - [JobCancelResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobCancelResponse.md)\n - [JobResponse](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobResponse.md)\n - [JobResponseAttachmentsInner](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobResponseAttachmentsInner.md)\n - [JobResponseChildrenInner](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobResponseChildrenInner.md)\n - [JobResponseEmbedsInner](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobResponseEmbedsInner.md)\n - [JobResponseEmbedsInnerImage](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobResponseEmbedsInnerImage.md)\n - [JobsBlendPostRequest](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobsBlendPostRequest.md)\n - [JobsButtonPostRequest](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobsButtonPostRequest.md)\n - [JobsDescribePostRequest](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobsDescribePostRequest.md)\n - [JobsImaginePostRequest](https://github.com/useapi/midjourney-api-client/blob/main/docs/JobsImaginePostRequest.md)\n - [ResponseError](https://github.com/useapi/midjourney-api-client/blob/main/docs/ResponseError.md)\n - [ResponseMaxJobs](https://github.com/useapi/midjourney-api-client/blob/main/docs/ResponseMaxJobs.md)\n\n\u003ca id=\"documentation-for-authorization\"\u003e\u003c/a\u003e\n## Documentation For Authorization\n\nAuthentication schemes defined for the API:\n\u003ca id=\"apiToken\"\u003e\u003c/a\u003e\n### apiToken\n\n- **Type**: Bearer authentication\n\n## Changelog \n\nVersion 1.0.1 | 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.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuseapi%2Fmidjourney-api-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fuseapi%2Fmidjourney-api-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fuseapi%2Fmidjourney-api-client/lists"}