# Fetch multiple toolkits

**Documentation:** /reference/api-reference/toolkits/postToolkitsMulti

Retrieves a comprehensive list of toolkits of their latest versions that are available to the authenticated project. Toolkits represent integration points with external services and applications, each containing a collection of tools and triggers. This endpoint supports filtering by category and management type, as well as different sorting options. You can optionally specify a list of toolkit slugs to fetch specific toolkits.

---

## POST `/api/v3/toolkits/multi`

**Endpoint:** `https://backend.composio.dev/api/v3/toolkits/multi`

**Summary:** Fetch multiple toolkits

Retrieves a comprehensive list of toolkits of their latest versions that are available to the authenticated project. Toolkits represent integration points with external services and applications, each containing a collection of tools and triggers. This endpoint supports filtering by category and management type, as well as different sorting options. You can optionally specify a list of toolkit slugs to fetch specific toolkits.

### Authentication

**ApiKeyAuth** - API Key in `header` header `x-api-key` OR **UserApiKeyAuth** - API Key in `header` header `x-user-api-key`

### Request Body

**Schema:**

- `toolkits` (array<string>): Array of toolkit slug identifiers to retrieve
- `category` (string): Category ID or name to filter toolkits by
- `managed_by` (enum: "composio" | "all" | "project"): Entity responsible for managing the toolkits
- `sort_by` (enum: "usage" | "alphabetically"): Determines how toolkits should be sorted in the response
- `limit` (number,null)
- `cursor` (string)

**Example:**

```json
{
  "toolkits": [
    "string"
  ],
  "category": "string",
  "managed_by": "composio",
  "sort_by": "usage",
  "limit": null,
  "cursor": "string"
}
```

### Responses

#### 200 - Toolkits retrieved successfully. Returns a paginated list of available toolkits with detailed metadata.

**Response Schema:**

- `items` (array<object>) *(required)*
  - Array items:
    - `slug` (string) *(required)*: URL-friendly unique identifier for the toolkit
    - `name` (string) *(required)*: Human-readable name of the toolkit
    - `auth_schemes` (array<string>): List of authentication methods supported by this toolkit
    - `composio_managed_auth_schemes` (array<string>): List of authentication methods that Composio manages for this toolkit
    - `is_local_toolkit` (boolean) *(required)*: DEPRECATED: This field is no longer meaningful and will always return false. It was previously used to indicate if a toolkit is specific to the current project.
    - `no_auth` (boolean): When true, this toolkit can be used without authentication
    - `auth_guide_url` (string,null): URL to a guide page with authentication setup instructions for this toolkit
    - `deprecated` (object) *(required)*: Deprecated toolkit ID
      - `toolkitId` (string) *(required)*
    - `meta` (object) *(required)*: Additional metadata about the toolkit
      - `created_at` (string) *(required)*: Creation date and time of the toolkit
      - `updated_at` (string) *(required)*: Last modification date and time of the toolkit
      - `description` (string) *(required)*: Human-readable description explaining the toolkit's purpose and functionality
      - `logo` (string) *(required)*: Image URL for the toolkit's branding
      - `app_url` (string,null): Link to the toolkit's main application or service website
      - `categories` (array<object>) *(required)*: List of categories associated with this toolkit
        - Array items:
          - ...
      - `triggers_count` (number) *(required)*: Count of available triggers in this toolkit
      - `tools_count` (number) *(required)*: Count of available tools in this toolkit
      - `version` (string) *(required)*: Version of the toolkit
- `next_cursor` (string,null)
- `total_pages` (number) *(required)*
- `current_page` (number) *(required)*
- `total_items` (number) *(required)*

**Example Response:**

```json
{
  "items": [
    {
      "slug": "string",
      "name": "string",
      "auth_schemes": [
        "..."
      ],
      "composio_managed_auth_schemes": [
        "..."
      ],
      "is_local_toolkit": true,
      "no_auth": true,
      "auth_guide_url": null,
      "deprecated": {
        "toolkitId": "..."
      },
      "meta": {
        "created_at": "...",
        "updated_at": "...",
        "description": "...",
        "logo": "...",
        "app_url": "...",
        "categories": "...",
        "triggers_count": "...",
        "tools_count": "...",
        "version": "..."
      }
    }
  ],
  "next_cursor": null,
  "total_pages": 1,
  "current_page": 1,
  "total_items": 1
}
```

#### 400 - Bad request. The query parameters may be invalid or in an incorrect format.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 401 - Unauthorized. Authentication is required or the provided credentials are invalid.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 404 - Not found. The toolkits you are looking for do not exist.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

#### 500 - Internal server error. An unexpected error occurred while processing the request.

**Response Schema:**

- `error` (object) *(required)*
  - `message` (string) *(required)*
  - `code` (number) *(required)*
  - `slug` (string) *(required)*
  - `status` (number) *(required)*
  - `request_id` (string)
  - `suggested_fix` (string)
  - `errors` (array<string>)

### Example cURL Request

```bash
curl -X POST "https://backend.composio.dev/api/v3/toolkits/multi" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "toolkits": [
      "string"
    ],
    "category": "string",
    "managed_by": "composio",
    "sort_by": "usage",
    "limit": null,
    "cursor": "string"
  }'
```