> 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.

# Loyalty API: new endpoint and rate limits

**New endpoint:** `DELETE /loyalty/config/programs/{pid}/contact/{cid}`

Removes a contact from a loyalty program subscription. See the [Loyalty API reference](/reference/delete-contact-subscription) for details.

**Rate limits:** Loyalty endpoints now have documented rate limits across all account tiers.

| Endpoints                                                      | Starter | Business  | Enterprise |
| -------------------------------------------------------------- | ------- | --------- | ---------- |
| `GET /v3/loyalty/config` All endpoints under `/v3/loyalty/{…}` | 600 RPH | 1,200 RPH | 3,600 RPH  |

See the [rate limits documentation](/docs/api-limits) for the full breakdown.

## PHP SDK v4 release

We've released the PHP SDK v4 (`getbrevo/brevo-php`) with a type-safe client for the Brevo API: unified `Brevo` client, strongly typed request and response objects with PHPDoc annotations, PSR-18 HTTP client compatibility (Guzzle, Symfony HttpClient), automatic retries with exponential backoff, and structured error handling via `BrevoApiException`.

You can learn more on the dedicated guide here: [https://developers.brevo.com/docs/api-clients/php](https://developers.brevo.com/docs/api-clients/php)

Install it using:

```bash
composer require getbrevo/brevo-php
```

Guzzle is recommended as the HTTP client:

```bash
composer require getbrevo/brevo-php guzzlehttp/guzzle
```

**Key highlights:**

* Unified client via `Brevo(apiKey: "...")` — single entry point with namespaced service clients
* Strongly typed request and response objects with full PHPDoc annotations
* PSR-18 HTTP client support — use Guzzle, Symfony HttpClient, or any compatible client
* Automatic retries with exponential backoff (configurable per client or per request)
* Structured errors via `BrevoApiException` with `getCode()`, `getBody()`, and `getMessage()`
* 33 service namespaces covering the entire Brevo API

**Resources:**

* [GitHub Repository](https://github.com/getbrevo/brevo-php/tree/v4)
* [Packagist Package](https://packagist.org/packages/getbrevo/brevo-php)
* [PHP SDK Documentation](/docs/sdks-libraries/php-client)