# Admin (/en/docs/api/compatible/cloudinary/admin)



Admin manages assets in the current library. usage returns current storage and asset count only.

[Guide →](/en/docs/developers/services/media/quickstart)

[Base URL and authentication](/en/docs/api/compatible/cloudinary)

## Get resources [#get-resources]

`GET /cloudinary/v1_1/{library_id}/resources`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response]

#### HTTP 200 [#http-200]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "9dfa312ef9bc4b00816339b598b1152c",
      "public_id": "walk-lib-r1-MDP-1791733789929-tagged",
      "display_name": "walk-lib-r1-MDP-1791733789929-tagged",
      "asset_folder": "",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791733815,
      "version_id": "26cb8171caa5431b8373ad417fd71e32",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "processing": {
        "state": "processing",
        "kinds": {
          "embedding": "running",
          "visual": "failed",
          "tagging": "failed"
        },
        "updated_at": "2026-10-11T15:50:21.512Z"
      },
      "created_at": "2026-10-11T15:50:15.996Z",
      "url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733815/walk-lib-r1-MDP-1791733789929-tagged.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733815/walk-lib-r1-MDP-1791733789929-tagged.png",
      "placeholder": false
    },
    {
      "asset_id": "85b7ef616a8b4719a41777a036ebc1d2",
      "public_id": "walk-lib-r1-MDP-1791733789929-plain",
      "display_name": "walk-lib-r1-MDP-1791733789929-plain",
      "asset_folder": "",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791733810,
      "version_id": "fdf3c8cd40c2424d86e8397425a69857",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-11T15:50:10.842Z",
      "url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733810/walk-lib-r1-MDP-1791733789929-plain.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733810/walk-lib-r1-MDP-1791733789929-plain.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-1]

`GET /cloudinary/v1_1/{library_id}/resources/{resource_type}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-1]

#### HTTP 200 [#http-200-1]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-2]

`GET /cloudinary/v1_1/{library_id}/resources/{resource_type}/upload`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-2]

#### HTTP 200 [#http-200-2]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/upload" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-3]

`GET /cloudinary/v1_1/{library_id}/resources/{asset_id}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| asset_id | path | string | Asset ID |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `CloudinaryResource`.

### Response [#response-3]

#### HTTP 200 [#http-200-3]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| asset_id | string |  |
| public_id | string |  |
| display_name | string |  |
| asset_folder | string |  |
| resource_type | string |  |
| type | string |  |
| format | string |  |
| version | number |  |
| version_id | string |  |
| bytes | number |  |
| etag | string |  |
| width | number |  |
| height | number |  |
| duration | number |  |
| pages | number |  |
| is_audio | boolean |  |
| original_filename | string |  |
| tags | array&lt;string&gt; |  |
| context | object |  |
| context.custom | object |  |
| created_at | string |  |
| url | string |  |
| secure_url | string |  |
| placeholder | boolean |  |
| existing | boolean |  |
| processing | object |  |
| processing.state | string |  |
| processing.kinds | object |  |
| processing.updated_at | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/9dfa312ef9bc4b00816339b598b1152c" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "asset_id": "9dfa312ef9bc4b00816339b598b1152c",
  "public_id": "walk-lib-r1-MDP-1791733789929-tagged",
  "display_name": "walk-lib-r1-MDP-1791733789929-tagged",
  "asset_folder": "",
  "resource_type": "image",
  "type": "upload",
  "format": "png",
  "version": 1791733815,
  "version_id": "26cb8171caa5431b8373ad417fd71e32",
  "bytes": 70,
  "etag": "b357a19c87624c7c4d131aeeb4ae677f",
  "width": 1,
  "height": 1,
  "original_filename": "file",
  "tags": [
    "docs"
  ],
  "processing": {
    "state": "processing",
    "kinds": {
      "embedding": "running",
      "visual": "failed",
      "tagging": "failed"
    },
    "updated_at": "2026-10-11T15:50:21.512Z"
  },
  "created_at": "2026-10-11T15:50:15.996Z",
  "url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733815/walk-lib-r1-MDP-1791733789929-tagged.png",
  "secure_url": "https://media-develop.praxisusercontent.com/lib_d3881a2f54a34cd79121b9d659e8378c/image/upload/v1791733815/walk-lib-r1-MDP-1791733789929-tagged.png",
  "placeholder": false
}
```

## Get resources [#get-resources-4]

`GET /cloudinary/v1_1/{library_id}/resources/by_asset_ids`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-4]

#### HTTP 200 [#http-200-4]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/by_asset_ids?asset_ids[]=e5f3de0d8609482d8b351894b133c8cb" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-5]

`GET /cloudinary/v1_1/{library_id}/resources/by_asset_folder`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-5]

#### HTTP 200 [#http-200-5]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/by_asset_folder?asset_folder=examples" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-6]

`GET /cloudinary/v1_1/{library_id}/resources/{resource_type}/tags/{tag}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| tag | path | string | Tag name |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-6]

#### HTTP 200 [#http-200-6]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/tags/docs" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-7]

`GET /cloudinary/v1_1/{library_id}/resources/{resource_type}/context`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-7]

#### HTTP 200 [#http-200-7]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/context?key=alt&value=sample" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Get resources [#get-resources-8]

`GET /cloudinary/v1_1/{library_id}/resources/{resource_type}/upload/{public_id}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| public_id | path | string | Asset name in delivery URLs; may contain path segments |
| prefix | query | string | prefix |
| public_ids | query | string[] | Asset public IDs |
| asset_ids | query | string[] | asset ids |
| asset_folder | query | string | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| key | query | string | key |
| value | query | string | value |
| tags | query | string | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | query | string | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| direction | query | string | asc or desc (default); also 1 or -1. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `CloudinaryResource`.

### Response [#response-8]

#### HTTP 200 [#http-200-8]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| asset_id | string |  |
| public_id | string |  |
| display_name | string |  |
| asset_folder | string |  |
| resource_type | string |  |
| type | string |  |
| format | string |  |
| version | number |  |
| version_id | string |  |
| bytes | number |  |
| etag | string |  |
| width | number |  |
| height | number |  |
| duration | number |  |
| pages | number |  |
| is_audio | boolean |  |
| original_filename | string |  |
| tags | array&lt;string&gt; |  |
| context | object |  |
| context.custom | object |  |
| created_at | string |  |
| url | string |  |
| secure_url | string |  |
| placeholder | boolean |  |
| existing | boolean |  |
| processing | object |  |
| processing.state | string |  |
| processing.kinds | object |  |
| processing.updated_at | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/upload/examples/pixel" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
  "public_id": "examples/pixel",
  "display_name": "pixel",
  "asset_folder": "examples",
  "resource_type": "image",
  "type": "upload",
  "format": "png",
  "version": 1791538435,
  "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
  "bytes": 70,
  "etag": "b357a19c87624c7c4d131aeeb4ae677f",
  "width": 1,
  "height": 1,
  "original_filename": "file",
  "tags": [
    "docs"
  ],
  "context": {
    "custom": {
      "alt": "sample"
    }
  },
  "created_at": "2026-10-09T09:33:55.536Z",
  "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "placeholder": false
}
```

## Get resources by IDs [#get-resources-by-ids]

`POST /cloudinary/v1_1/{library_id}/resources/by_asset_ids`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |

### Request body [#request-body]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| asset_ids | string[] | yes | — |
| max_results | integer | no | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | string | no | Next-page cursor; null or absent at the end |

Returns: `ResourcePage`.

### Response [#response-9]

#### HTTP 200 [#http-200-9]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| resources | array&lt;object&gt; |  |
| resources[].asset_id | string |  |
| resources[].public_id | string |  |
| resources[].display_name | string |  |
| resources[].asset_folder | string |  |
| resources[].resource_type | string |  |
| resources[].type | string |  |
| resources[].format | string |  |
| resources[].version | number |  |
| resources[].version_id | string |  |
| resources[].bytes | number |  |
| resources[].etag | string |  |
| resources[].width | number |  |
| resources[].height | number |  |
| resources[].duration | number |  |
| resources[].pages | number |  |
| resources[].is_audio | boolean |  |
| resources[].original_filename | string |  |
| resources[].tags | array&lt;string&gt; |  |
| resources[].context | object |  |
| resources[].created_at | string |  |
| resources[].url | string |  |
| resources[].secure_url | string |  |
| resources[].placeholder | boolean |  |
| resources[].existing | boolean |  |
| resources[].processing | object |  |
| next_cursor | string |  |

```bash
curl -X POST "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/by_asset_ids" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"asset_ids":["e5f3de0d8609482d8b351894b133c8cb"]}'
```

HTTP 200

```json
{
  "resources": [
    {
      "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
      "public_id": "examples/pixel",
      "display_name": "pixel",
      "asset_folder": "examples",
      "resource_type": "image",
      "type": "upload",
      "format": "png",
      "version": 1791538435,
      "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
      "bytes": 70,
      "etag": "b357a19c87624c7c4d131aeeb4ae677f",
      "width": 1,
      "height": 1,
      "original_filename": "file",
      "created_at": "2026-10-09T09:33:55.536Z",
      "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
      "placeholder": false
    }
  ]
}
```

## Update resource [#update-resource]

`POST /cloudinary/v1_1/{library_id}/resources/{resource_type}/upload/{public_id}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| public_id | path | string | Asset name in delivery URLs; may contain path segments |

### Request body [#request-body-1]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| display_name | string | no | Display name |
| asset_folder | string | no | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| tags | string[] | no | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | object | no | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |

Returns: `CloudinaryResource`.

### Response [#response-10]

#### HTTP 200 [#http-200-10]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| asset_id | string |  |
| public_id | string |  |
| display_name | string |  |
| asset_folder | string |  |
| resource_type | string |  |
| type | string |  |
| format | string |  |
| version | number |  |
| version_id | string |  |
| bytes | number |  |
| etag | string |  |
| width | number |  |
| height | number |  |
| duration | number |  |
| pages | number |  |
| is_audio | boolean |  |
| original_filename | string |  |
| tags | array&lt;string&gt; |  |
| context | object |  |
| context.custom | object |  |
| created_at | string |  |
| url | string |  |
| secure_url | string |  |
| placeholder | boolean |  |
| existing | boolean |  |
| processing | object |  |
| processing.state | string |  |
| processing.kinds | object |  |
| processing.updated_at | string |  |

```bash
curl -X POST "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/upload/examples/pixel" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"display_name":"Sample image"}'
```

HTTP 200

```json
{
  "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
  "public_id": "examples/pixel",
  "display_name": "Sample image",
  "asset_folder": "examples",
  "resource_type": "image",
  "type": "upload",
  "format": "png",
  "version": 1791538435,
  "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
  "bytes": 70,
  "etag": "b357a19c87624c7c4d131aeeb4ae677f",
  "width": 1,
  "height": 1,
  "original_filename": "file",
  "tags": [
    "docs"
  ],
  "context": {
    "custom": {
      "alt": "sample"
    }
  },
  "created_at": "2026-10-09T09:33:55.536Z",
  "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "placeholder": false
}
```

## Update resource [#update-resource-1]

`PUT /cloudinary/v1_1/{library_id}/resources/{resource_type}/upload/{public_id}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| public_id | path | string | Asset name in delivery URLs; may contain path segments |

### Request body [#request-body-2]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| display_name | string | no | Display name |
| asset_folder | string | no | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| tags | string[] | no | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | object | no | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |

Returns: `CloudinaryResource`.

### Response [#response-11]

#### HTTP 200 [#http-200-11]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| asset_id | string |  |
| public_id | string |  |
| display_name | string |  |
| asset_folder | string |  |
| resource_type | string |  |
| type | string |  |
| format | string |  |
| version | number |  |
| version_id | string |  |
| bytes | number |  |
| etag | string |  |
| width | number |  |
| height | number |  |
| duration | number |  |
| pages | number |  |
| is_audio | boolean |  |
| original_filename | string |  |
| tags | array&lt;string&gt; |  |
| context | object |  |
| context.custom | object |  |
| created_at | string |  |
| url | string |  |
| secure_url | string |  |
| placeholder | boolean |  |
| existing | boolean |  |
| processing | object |  |
| processing.state | string |  |
| processing.kinds | object |  |
| processing.updated_at | string |  |

```bash
curl -X PUT "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/upload/examples/pixel" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"tags":["docs"]}'
```

HTTP 200

```json
{
  "asset_id": "e5f3de0d8609482d8b351894b133c8cb",
  "public_id": "examples/pixel",
  "display_name": "Sample image",
  "asset_folder": "examples",
  "resource_type": "image",
  "type": "upload",
  "format": "png",
  "version": 1791538435,
  "version_id": "001fb6336c9b4a4c9e4597b69fdec3cd",
  "bytes": 70,
  "etag": "b357a19c87624c7c4d131aeeb4ae677f",
  "width": 1,
  "height": 1,
  "original_filename": "file",
  "tags": [
    "docs"
  ],
  "context": {
    "custom": {
      "alt": "sample"
    }
  },
  "created_at": "2026-10-09T09:33:55.536Z",
  "url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "secure_url": "https://media-develop.praxisusercontent.com/lib_b762c40631bd42278a204cd0370fed36/image/upload/v1791538435/examples/pixel.png",
  "placeholder": false
}
```

## Delete resources [#delete-resources]

`DELETE /cloudinary/v1_1/{library_id}/resources/{resource_type}/upload`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| public_ids | query | string[] | Asset public IDs |
| prefix | query | string | prefix |
| all | query | boolean | all |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `DeletedResources`.

### Response [#response-12]

#### HTTP 200 [#http-200-12]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| deleted | object |  |
| partial | boolean |  |
| next_cursor | string |  |

```bash
curl -X DELETE "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/upload" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"prefix":"imported/"}'
```

HTTP 200

```json
{
  "deleted": {},
  "partial": false
}
```

## Delete resources [#delete-resources-1]

`DELETE /cloudinary/v1_1/{library_id}/resources/{resource_type}/tags/{tag}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| tag | path | string | Tag name |
| public_ids | query | string[] | Asset public IDs |
| prefix | query | string | prefix |
| all | query | boolean | all |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `DeletedResources`.

### Response [#response-13]

#### HTTP 200 [#http-200-13]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| deleted | object |  |
| partial | boolean |  |
| next_cursor | string |  |

```bash
curl -X DELETE "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/resources/image/tags/remove-me" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{}'
```

HTTP 200

```json
{
  "deleted": {
    "tagged/pixel": "deleted"
  },
  "partial": false
}
```

## List tags [#list-tags]

`GET /cloudinary/v1_1/{library_id}/tags/{resource_type}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| resource_type | path | image / video / raw | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| prefix | query | string | prefix |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `Tags`.

### Response [#response-14]

#### HTTP 200 [#http-200-14]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| tags | array&lt;string&gt; |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/tags/image" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "tags": [
    "docs"
  ]
}
```

## List folders [#list-folders]

`GET /cloudinary/v1_1/{library_id}/folders`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `CompatFolders`.

### Response [#response-15]

#### HTTP 200 [#http-200-15]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| folders | array&lt;object&gt; |  |
| folders[].name | string |  |
| folders[].path | string |  |
| total_count | number |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/folders" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "folders": [
    {
      "name": "examples",
      "path": "examples"
    }
  ],
  "total_count": 1
}
```

## List folders [#list-folders-1]

`GET /cloudinary/v1_1/{library_id}/folders/{folder}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| folder | path | string | Folder path; may contain slash-separated segments. |
| max_results | query | integer | Up to 500; Search defaults to 100, Admin to 10 |
| next_cursor | query | string | Next-page cursor; null or absent at the end |

Returns: `CompatFolders`.

### Response [#response-16]

#### HTTP 200 [#http-200-16]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| folders | array&lt;object&gt; |  |
| folders[].name | string |  |
| folders[].path | string |  |
| total_count | number |  |
| next_cursor | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/folders/examples" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "folders": [],
  "total_count": 0
}
```

## Create folder [#create-folder]

`POST /cloudinary/v1_1/{library_id}/folders/{folder}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| folder | path | string | Folder path; may contain slash-separated segments. |

Returns: `FolderResult`.

### Response [#response-17]

#### HTTP 200 [#http-200-17]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| $ | object |  |

```bash
curl -X POST "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/folders/sample" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{}'
```

HTTP 200

```json
{
  "success": true,
  "path": "sample"
}
```

## Rename folder [#rename-folder]

`PUT /cloudinary/v1_1/{library_id}/folders/{folder}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| folder | path | string | Folder path; may contain slash-separated segments. |

### Request body [#request-body-3]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| to_folder | string | yes | Destination folder path |

Returns: `FolderResult`.

### Response [#response-18]

#### HTTP 200 [#http-200-18]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| $ | object |  |

## Delete folder [#delete-folder]

`DELETE /cloudinary/v1_1/{library_id}/folders/{folder}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| folder | path | string | Folder path; may contain slash-separated segments. |

Returns: `FolderResult`.

### Response [#response-19]

#### HTTP 200 [#http-200-19]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| $ | object |  |

```bash
curl -X DELETE "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/folders/sample" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{}'
```

HTTP 200

```json
{
  "success": true,
  "path": "sample"
}
```

## Ping [#ping]

`GET /cloudinary/v1_1/{library_id}/ping`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |

Returns: `Ping`.

### Response [#response-20]

#### HTTP 200 [#http-200-20]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| status | string |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/ping" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "status": "ok"
}
```

## Usage [#usage]

`GET /cloudinary/v1_1/{library_id}/usage`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |

Returns: `Usage`.

### Response [#response-21]

#### HTTP 200 [#http-200-21]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| storage | object |  |
| storage.usage | number |  |
| objects | object |  |
| objects.usage | number |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/usage" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "storage": {
    "usage": 70
  },
  "objects": {
    "usage": 1
  }
}
```

## Usage [#usage-1]

`GET /cloudinary/v1_1/{library_id}/usage/{date}`

| Parameter | Location | Type | Description |
| --- | --- | --- | --- |
| library_id | path | string | Library ID |
| date | path | string | Accepted date segment; returns current library totals, not historical usage. |

Returns: `Usage`.

### Response [#response-22]

#### HTTP 200 [#http-200-22]

Successful response.

**application/json**

| Name | Type | Description |
| --- | --- | --- |
| storage | object |  |
| storage.usage | number |  |
| objects | object |  |
| objects.usage | number |  |

```bash
curl -X GET "https://api.deepraxis.ai/cloudinary/v1_1/${LIBRARY_ID}/usage/2026-10-09" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

HTTP 200

```json
{
  "storage": {
    "usage": 70
  },
  "objects": {
    "usage": 1
  }
}
```

## ResourcePage [#resourcepage]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| resources | SearchResource[] | yes | Assets in this page |
| next_cursor | string | no | Next-page cursor; null or absent at the end |

## CloudinaryResource [#cloudinaryresource]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| asset_id | AssetId | yes | Asset ID |
| public_id | string | yes | Asset name in delivery URLs; may contain path segments |
| display_name | string | yes | Display name |
| asset_folder | string | yes | Organizational folder; does not change public_id. Listing by it matches that level only, not subfolders; an empty string is the root |
| resource_type | ResourceType | yes | image, video (including audio), or raw; auto applies to uploads only, and listing with auto or any other value returns 400 |
| type | DeliveryType | yes | Resource or event type |
| format | string | yes | File format |
| version | number | yes | Delivery version |
| version_id | string | yes | Version identifier |
| bytes | number | yes | File size in bytes |
| etag | string | yes | File checksum |
| width | number | no | Width in pixels |
| height | number | no | Height in pixels |
| duration | number | no | Duration in seconds |
| pages | number | no | Document pages |
| is_audio | boolean | no | Whether this is audio |
| original_filename | string | no | Original file name |
| tags | string[] | yes | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| context | object | no | Custom text key/value pairs; PATCH replaces the whole map, &#123;&#125; clears it |
| created_at | IsoTimestamp | yes | Creation time |
| url | string | yes | Original-file URL |
| secure_url | string | yes | HTTPS delivery URL |
| placeholder | false | yes | Always false |
| existing | boolean | no | Whether an existing asset was returned without overwrite |
| processing | Processing | no | Overall and per-kind processing states |

## DeletedResources [#deletedresources]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| deleted | object | yes | Deletion result |
| partial | boolean | yes | Whether another page remains |
| next_cursor | string | no | Next-page cursor; null or absent at the end |

## Tags [#tags]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| tags | string[] | yes | Asset tags. Uploads accept a comma-separated string (items trimmed, empty items dropped), an array, or repeated tags fields; PATCH accepts an array only and replaces the whole list |
| next_cursor | string | no | Next-page cursor; null or absent at the end |

## CompatFolders [#compatfolders]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| folders | object[] | yes | Folders |
| total_count | number | yes | Matching count |
| next_cursor | string | no | Next-page cursor; null or absent at the end |

## FolderResult [#folderresult]

| Field | Type | Required | Description |
| ----- | ---- | -------- | ----------- |

## Ping [#ping-1]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| status | "ok" | yes | Resource status |

## Usage [#usage-2]

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| storage | object | yes | Storage usage in bytes |
| objects | object | yes | Asset count |
