# Retrieve a module

`GET https://api.cademi.com.br/api/v3/products/{product_id}/modules/{module_id}`

Operation ID: `modules.get` · API v3

Retrieves a module by its public ID, including its typed `settings`.

The response includes an `ETag` representing the current revision. Send this value in the `If-Match` header when updating the module or reordering its contents to avoid overwriting a newer version.

Required permissions: `modules.read`.

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `product_id` | path | string | yes |  |
| `module_id` | path | string | yes |  |

## Responses

### 200

Returns the requested module.

Body: `data`: Module.

Fields of Module:

| Field | Type | Required | Description |
|---|---|---|---|
| `created_at` | string (date-time) | yes |  |
| `deleted` | boolean | yes |  |
| `id` | string | yes | Public ID, with the mod_ prefix. |
| `image` | string or null | yes |  |
| `kind` | string, one of `group`, `module` | yes |  |
| `lessons_count` | integer | yes |  |
| `name` | string | yes |  |
| `object` | string, one of `module` | yes |  |
| `parent_id` | string or null | yes |  |
| `position` | integer | yes |  |
| `product_id` | string | yes | Public ID, with the prd_ prefix. |
| `revision` | string | yes |  |
| `settings` | object | yes | Module settings. Only type is supported; an empty object when no settings have been defined. |
| `status` | string, one of `published`, `draft` | yes |  |
| `updated_at` | string (date-time) | yes |  |

### 401

The credential is missing, malformed, expired, or revoked.

Body: Error.

### 403

The current credentials do not have the permission required by this operation.

Body: Error.

### 404

The module was not found in the specified product or is not accessible with the current credentials.

Body: Error.

Full schema: https://cademi.dev/openapi/v3.json
