> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.brevo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.brevo.com/_mcp/server.

# Return all your categories

GET https://api.brevo.com/v3/categories

Retrieve a paginated list of all ecommerce categories stored in your Brevo account. Results are sorted by creation date in descending order by default, and can be filtered by category IDs, name, modification date, creation date, or deletion status. The response includes a `count` field with the total number of matching categories, and pagination defaults to 50 categories per page (maximum 100).

Reference: https://developers.brevo.com/reference/get-categories

## Authentication

- `api-key` header (required) — The API key should be passed in the request headers as `api-key` for authentication.

## Request

### Query parameters

- `limit` (long, optional, default: 50) — Number of documents per page
- `offset` (long, optional, default: 0) — Index of the first document in the page
- `sort` (enum, optional, default: desc) — Sort the results in the ascending/descending order of record creation. Default order is **descending** if `sort` is not passed
  - Allowed values: `asc`, `desc`
- `ids` (list of string, optional) — Filter by category ids
- `name` (string, optional) — Filter by category name
- `modifiedSince` (string, optional) — Filter (urlencoded) the categories modified after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
- `createdSince` (string, optional) — Filter (urlencoded) the categories created after a given UTC date-time (YYYY-MM-DDTHH:mm:ss.SSSZ). **Prefer to pass your timezone in date-time format for accurate result.**
- `isDeleted` (string, optional) — Filter categories by their deletion status. If `false` is passed, only categories that are not deleted will be returned.

## Response

### 200

All categories listed

- `categories` (list of object, required)
  - `createdAt` (string, required) — Creation UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ)
  - `id` (string, required) — Category ID for which you requested the details
  - `isDeleted` (boolean, required) — category deleted from the shop's database
  - `modifiedAt` (string, required) — Last modification UTC date-time of the category (YYYY-MM-DDTHH:mm:ss.SSSZ)
  - `name` (string, required) — Name of the category for which you requested the details
  - `url` (string, optional) — URL to the category
- `count` (long, required) — Number of categories

## Examples

**Response**

```json
{
  "categories": [
    {
      "createdAt": "2021-12-31T11:42:35.638Z",
      "id": "C19",
      "isDeleted": true,
      "modifiedAt": "2022-03-03T14:48:31.867Z",
      "name": "Food",
      "url": "http://mydomain.com/category/food"
    },
    {
      "createdAt": "2021-12-31T11:42:35.638Z",
      "id": "C20",
      "isDeleted": true,
      "modifiedAt": "2022-03-03T14:48:31.867Z",
      "name": "clothing",
      "url": "http://mydomain.com/category/clothing"
    }
  ],
  "count": 2
}
```

**SDK Code**

```typescript response
import { BrevoClient } from "@getbrevo/brevo";

async function main() {
    const client = new BrevoClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.ecommerce.getCategories({});
}
main();

```

```python response
from brevo import Brevo

client = Brevo(
    api_key="YOUR_API_KEY_HERE",
)

client.ecommerce.get_categories()

```

```php response
<?php

namespace Example;

use Brevo\Brevo;
use Brevo\Ecommerce\Requests\GetCategoriesRequest;

$client = new Brevo(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->ecommerce->getCategories(
    new GetCategoriesRequest([]),
);

```

```go response
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.brevo.com/v3/categories"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby response
require 'uri'
require 'net/http'

url = URI("https://api.brevo.com/v3/categories")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java response
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.brevo.com/v3/categories")
  .header("api-key", "<apiKey>")
  .asString();
```

```csharp response
using RestSharp;

var client = new RestClient("https://api.brevo.com/v3/categories");
var request = new RestRequest(Method.GET);
request.AddHeader("api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift response
import Foundation

let headers = ["api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.brevo.com/v3/categories")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```