{
  "id": "modules",
  "title": "Modules requests",
  "url": "https://redis.io/docs/latest/operate/rs/7.8/references/rest-api/requests/modules/",
  "summary": "Redis modules requests",
  "content": "\n| Method | Path | Description |\n|--------|------|-------------|\n| [GET](#list-modules) | `/v1/modules` | List available modules |\n| [GET](#get-module) | `/v1/modules/{uid}` | Get a specific module |\n| [POST](#post-module) | `/v1/modules` | Upload a new module (deprecated) |\n| [POST](#post-module-v2) | `/v2/modules` | Upload a new module |\n| [DELETE](#delete-module) | `/v1/modules/{uid}` | Delete a module (deprecated) |\n| [DELETE](#delete-module-v2) | `/v2/modules/{uid}` | Delete a module |\n\n## List modules {#list-modules}\n\n```sh\nGET /v1/modules\n```\n\nList available modules, i.e. modules stored within the CCS.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [view_cluster_modules]() | admin\u003cbr /\u003ecluster_member\u003cbr /\u003ecluster_viewer\u003cbr /\u003edb_member\u003cbr /\u003edb_viewer\u003cbr /\u003euser_manager |\n\n### Request {#list-request}\n\n#### Example HTTP request\n\n```sh\nGET /v1/modules\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | 127.0.0.1:9443 | Domain name |\n| Accept | \\*/\\* | Accepted media type |\n\n### Response {#list-response}\n\nReturns a JSON array of [module objects]().\n\n#### Status codes {#list-status-codes}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |\n\n## Get module {#get-module}\n\n```sh\nGET /v1/modules/{string: uid}\n```\n\nGet specific available modules, i.e. modules stored within the CCS.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [view_cluster_modules]() | admin\u003cbr /\u003ecluster_member\u003cbr /\u003ecluster_viewer\u003cbr /\u003edb_member\u003cbr /\u003edb_viewer\u003cbr /\u003euser_manager |\n\n### Request {#get-request}\n\n#### Example HTTP request\n\n```sh\nGET /v1/modules/1\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | 127.0.0.1:9443 | Domain name |\n| Accept | \\*/\\* | Accepted media type |\n\n#### URL parameters\n\n| Field | Type | Description |\n|-------|------|-------------|\n| uid | integer | The module's unique ID. |\n\n### Response {#get-response}\n\nReturns a [module object]().\n\n### Status codes {#get-status-codes}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error |\n| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Module does not exist. |\n\n## Upload module v1 {#post-module}\n\n```sh\nPOST /v1/modules\n```\n\n\n`POST /v1/modules` is deprecated as of Redis Enterprise Software version 7.2. Use [`POST /v2/modules`](#post-module-v2) instead.\n\n\nUploads a new module to the cluster.\n\nThe request must contain a Redis module, bundled using [RedisModule\nPacker](https://github.com/RedisLabs/RAMP). For modules in Redis Stack, download the module from the [download center](https://redis.io/downloads/).\n\nSee [Install a module on a cluster]() for more information.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [update_cluster]() | admin |\n\n### Request {#post-request}\n\n#### Example HTTP request\n\n```sh\nPOST /v1/modules\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | string | Domain name |\n| Accept | \\*/\\* | Accepted media type |\n| Content-Length | integer | Length of the request body in octets |\n| Expect | 100-continue | Requires particular server behaviors |\n| Content-Type | multipart/form-data | Media type of request/response body |\n\n### Response {#post-response}\n\nReturns a status code. If an error occurs, the response body may include an error code and message with more details.\n\n#### Error codes {#post-error-codes}\n\nThe server may return a JSON object with `error_code` and `message` fields that provide additional information. The following are possible `error_code` values:\n\n| Code | Description |\n|------|-------------|\n| no_module | Module wasn't provided or could not be found |\n| invalid_module | Module either corrupted or packaged files are wrong |\n| module_exists | Module already in system |\n| min_redis_pack_version | Module isn't supported yet in this Redis pack |\n| unsupported_module_capabilities | The module does not support required capabilities|\n| os_not_supported | This module is not supported for this operating system |\n| dependencies_not_supported | This endpoint does not support dependencies, see v2 |\n\n#### Status codes {#post-status-codes}\n\n| Code | Description |\n|------|-------------|\n| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | Either missing module file or an invalid module file. |\n\n### Examples\n\n#### cURL\n\n```sh\n$ curl -k -u \"[username]:[password]\" -X POST\n       -F \"module=@/tmp/rejson.Linux-ubuntu18.04-x86_64.2.0.8.zip\"\n       https://[host][:port]/v1/modules\n```\n\n#### Python\n\n```python\nimport requests\n\nurl = \"https://[host][:port]/v1/modules\"\n\nfiles=[\n    ('module',\n        ('rejson.Linux-ubuntu18.04-x86_64.2.0.8.zip',\n        open('/tmp/rejson.Linux-ubuntu18.04-x86_64.2.0.8.zip','rb'),\n        'application/zip')\n    )\n]\nauth=(\"[username]\", \"[password]\")\n\nresponse = requests.request(\"POST\", url,\n                            auth=auth, files=files, verify=False)\n\nprint(response.text)\n```\n\n## Upload module v2 {#post-module-v2}\n\n```sh\nPOST /v2/modules\n```\n\nAsynchronously uploads a new module to the cluster.\n\nThe request must contain a Redis module bundled using [RedisModule Packer](https://github.com/RedisLabs/RAMP).\n\nFor modules in Redis Stack, download the module from the [download center](https://redis.io/downloads/). See [Install a module on a cluster]() for more information.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [update_cluster]() | admin |\n\n### Request {#post-request-v2}\n\n#### Example HTTP request\n\n```sh\nPOST /v2/modules\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | string| Domain name |\n| Accept | \\*/\\* | Accepted media type |\n| Content-Length | integer | Length of the request body in octets |\n| Expect | 100-continue | Requires particular server behaviors |\n| Content-Type | multipart/form-data; | Media type of request/response body |\n\n### Response {#post-response-v2}\n\nReturns a [module object]() with an additional `action_uid` field.\n\nYou can use the `action_uid` to track the progress of the module upload.\n\n#### Example JSON body\n\n```json\n{\n   \"action_uid\":\"dfc0152c-8449-4b1c-9184-480ea7cb526c\",\n   \"author\":\"RedisLabs\",\n   \"capabilities\":[\n      \"types\",\n      \"crdb\",\n      \"failover_migrate\",\n      \"persistence_aof\",\n      \"persistence_rdb\",\n      \"clustering\",\n      \"backup_restore\"\n   ],\n   \"command_line_args\":\"Plugin gears_python CreateVenv 1\",\n   \"config_command\":\"RG.CONFIGSET\",\n   \"dependencies\":{\n      \"gears_jvm\":{\n         \"sha256\":\"b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9\",\n         \"url\":\"http://example.com/redisgears_plugins/jvm_plugin/gears-jvm.linux-centos7-x64.0.1.0.tgz\"\n      },\n      \"gears_python\":{\n         \"sha256\":\"22dca9cd75484cb15b8130db37f5284e22e3759002154361f72f6d2db46ee682\",\n         \"url\":\"http://example.com/redisgears-python.linux-centos7-x64.1.2.1.tgz\"\n      }\n   },\n   \"description\":\"Dynamic execution framework for your Redis data\",\n   \"display_name\":\"RedisGears\",\n   \"email\":\"user@example.com\",\n   \"homepage\":\"http://redisgears.io\",\n   \"is_bundled\":false,\n   \"license\":\"Redis Source Available License Agreement\",\n   \"min_redis_pack_version\":\"6.0.0\",\n   \"min_redis_version\":\"6.0.0\",\n   \"module_name\":\"rg\",\n   \"semantic_version\":\"1.2.1\",\n   \"sha256\":\"2935ea53611803c8acf0015253c5ae1cd81391bbacb23e14598841e1edd8d28b\",\n   \"uid\":\"98f255d5d33704c8e4e97897fd92e32d\",\n   \"version\":10201\n}\n```\n\n### Error codes {#post-error-codes-v2}\n\nThe server may return a JSON object with `error_code` and `message` fields that provide additional information.\n\nPossible `error_code` values include [`/v1/modules` error codes](#post-error-codes) and the following:\n\n| Code | Description |\n|------|-------------|\n| invalid_dependency_data | Provided dependencies have an unexpected format |\n\n### Status codes {#post-status-codes-v2}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success, scheduled module upload. |\n| [400 Bad Request](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1) | Module name or version does not exist. |\n| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Dependency not found. |\n| [500 Internal Server Error](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1) | Failed to get dependency. |\n\n## Delete module v1 {#delete-module}\n\n```sh\nDELETE /v1/modules/{string: uid}\n```\n\n\n`DELETE /v1/modules` is deprecated as of Redis Enterprise Software version 7.2. Use [`DELETE /v2/modules`](#delete-module-v2) instead.\n\n\nDelete a module.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [update_cluster]() | admin |\n\n### Request {#delete-request}\n\n#### Example HTTP request\n\n```sh\nDELETE /v1/modules/1\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | cnm.cluster.fqdn | Domain name |\n| Accept | application/json | Accepted media type |\n\n#### URL parameters\n\n| Field | Type | Description |\n|-------|------|-------------|\n| uid | integer | The module's unique ID. |\n\n### Response {#delete-response}\n\nReturns a status code to indicate module deletion success or failure.\n\n#### Error codes {#delete-error-codes}\n\n| Code | Description |\n|------|-------------|\n| dependencies_not_supported | You can use the following API endpoint to delete this module with its dependencies: [`/v2/modules/\u003cuid\u003e`](#delete-module-v2) |\n\n#### Status codes {#delete-status-codes}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success, the module is deleted. |\n| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Attempting to delete a nonexistent module. |\n| [406 Not Acceptable](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.7) | The request is not acceptable. |\n\n## Delete module v2 {#delete-module-v2}\n\n```sh\nDELETE /v2/modules/{string: uid}\n```\n\nDelete a module.\n\n#### Permissions\n\n| Permission name | Roles |\n|-----------------|-------|\n| [update_cluster]() | admin |\n\n### Request {#delete-request-v2}\n\n#### Example HTTP request\n\n```sh\nDELETE /v2/modules/1\n```\n\n#### Headers\n\n| Key | Value | Description |\n|-----|-------|-------------|\n| Host | cnm.cluster.fqdn | Domain name |\n| Accept | application/json | Accepted media type |\n\n#### URL parameters\n\n| Field | Type | Description |\n|-------|------|-------------|\n| uid | integer | The module's unique ID. |\n\n### Response {#delete-response-v2}\n\nReturns a JSON object with an `action_uid` that allows you to track the progress of module deletion.\n\n#### Status codes {#delete-status-codes-v2}\n\n| Code | Description |\n|------|-------------|\n| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | Success, scheduled module deletion. |\n| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Attempting to delete a nonexistent module. |\n",
  "tags": ["docs","operate","rs"],
  "last_updated": "2026-04-01T08:10:08-05:00",
  "children": [{"id":"config","summary":"Configure module requests","title":"Configure module requests","url":"https://redis.io/docs/latest/operate/rs/7.8/references/rest-api/requests/modules/config/"},{"id":"upgrade","summary":"Upgrade module requests","title":"Upgrade module requests","url":"https://redis.io/docs/latest/operate/rs/7.8/references/rest-api/requests/modules/upgrade/"}]
}

