---
title: "Limites de débit"
description: "Les limites actuelles du serveur MCP public et de la recherche d'inscriptions, comment les lire, et les limites et en-têtes RateLimit de l'API Matchai."
last_updated: "2026-10-21"
lang: "fr-CA"
canonical: "https://matchai.co/docs/fr/developers/rate-limits"
---

# Limites de débit

> Les limites actuelles du serveur MCP public et de la recherche d'inscriptions, comment les lire, et les limites et en-têtes RateLimit de l'API Matchai.

Source: https://matchai.co/docs/fr/developers/rate-limits

Les limites gardent Matchai rapide pour tout le monde. Cette page indique ce que les interfaces publiques permettent aujourd'hui, et comment l'API Matchai prévue signalera et appliquera ses limites.

## Sur les interfaces publiques [#on-the-public-surfaces]

Ces limites s'appliquent aux interfaces que vous pouvez utiliser dès aujourd'hui sans clé. Chacune est comptée par **adresse appelante** : l'adresse d'où proviennent vos requêtes. Les appelants qui partagent une même adresse, comme le réseau d'un bureau ou un assistant hébergé, partagent un seul quota.

| Interface | Limite | Quand vous dépassez la limite |
|---|---|---|
| Appels d'outils du serveur MCP (`tools/call` à `https://matchai.co/mcp`) | 600 par minute | L'appel renvoie un résultat d'outil avec `isError: true` et un message qui vous invite à réessayer dans une minute. Le statut HTTP reste `200`. |
| Recherche d'inscriptions (`https://matchai.co/ask`, `GET` et `POST` confondus) | 60 par minute | `429` avec l'erreur `rate_limited` et un `Retry-After` de `60` secondes. |

Quelques précisions :

- **La limite du serveur MCP ne compte que `tools/call`.** L'établissement de la liaison, `tools/list` et les autres méthodes ne sont pas comptés. C'est une protection contre les abus, fixée assez haut pour qu'une plateforme d'assistant très sollicitée ne l'atteigne pas.
- **La recherche d'inscriptions peut aussi répondre `503`.** Quand la recherche est temporairement indisponible, elle répond `503` avec l'erreur `unavailable` et un `Retry-After` de `30` secondes. Attendez ce délai, puis réessayez.
- **Les pages lisibles par l'IA n'ont pas de limite chiffrée par minute**, mais vous demandent d'être courtois : environ une requête par seconde par hôte. Pour lire un site entier, récupérez son `llms-full.txt` au lieu de l'explorer page par page. Après un `429`, attendez la durée indiquée par `Retry-After`. Les fichiers de découverte changent au plus environ une fois par minute, alors les interroger plus souvent renvoie le même contenu.

Consultez la [recherche d'inscriptions](https://matchai.co/docs/fr/developers/listing-search#limits-caching-and-cors) et le [serveur MCP](https://matchai.co/docs/fr/developers/mcp-server#access-data-and-limits) pour le portrait complet.

### Gérer une limite dans votre code [#handle-a-limit-in-code]

<Tabs items={['JavaScript', 'Python']}>
<Tab value="JavaScript">

```js title="ask-with-wait.mjs"
async function ask(query) {
  const response = await fetch(`https://matchai.co/ask?query=${encodeURIComponent(query)}`);

  if (response.status === 429 || response.status === 503) {
    const wait = Number(response.headers.get('Retry-After') ?? 60);
    await new Promise((resolve) => setTimeout(resolve, wait * 1000));
    return ask(query); // Try once more after the wait.
  }

  return response.json();
}
```

</Tab>
<Tab value="Python">

```python title="ask_with_wait.py"
import time

import requests


def ask(query):
    response = requests.get("https://matchai.co/ask", params={"query": query}, timeout=30)

    if response.status_code in (429, 503):
        time.sleep(int(response.headers.get("Retry-After", 60)))
        return ask(query)  # Try once more after the wait.

    return response.json()
```

</Tab>
</Tabs>

Dans du vrai code, ajoutez un compteur, pour qu'une requête qui échoue sans cesse finisse par abandonner.

## Dans l'API Matchai [#in-the-matchai-api]

**(Bientôt disponible)**

L'API Matchai limite les requêtes **par connexion** : un compte Matchai connecté à une application. Les chiffres ne sont pas encore publiés ici. Ne les codez pas en dur : l'API vous indique où vous en êtes dans chaque réponse.

### En-têtes de limite de débit [#rate-limit-headers]

Chaque réponse porte trois en-têtes :

| En-tête | Signification |
|---|---|
| `RateLimit-Limit` | Les requêtes permises dans la fenêtre actuelle pour cette connexion |
| `RateLimit-Remaining` | Les requêtes qui restent dans la fenêtre actuelle |
| `RateLimit-Reset` | Les secondes avant la réinitialisation de la fenêtre |

```http title="Response headers"
RateLimit-Limit: 120
RateLimit-Remaining: 117
RateLimit-Reset: 41
Matchai-Request-Id: req_7Hq2LmZ9xV4c
```

Les nombres ci-dessus sont un exemple. Ce n'est pas la vraie limite.

### Quand vous dépassez la limite [#when-you-go-over]

Une requête au-delà de la limite est refusée avec `429` et ne fait rien. La réponse porte `Retry-After`, le nombre de secondes à attendre :

```json title="Response (429)"
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limited",
    "message": "Too many requests. Try again in 20 seconds.",
    "doc_url": "https://matchai.co/docs/developers/errors#rate_limited",
    "request_id": "req_7Hq2LmZ9xV4c"
  }
}
```

Un `429` peut être réessayé sans risque. Attendez la durée de `Retry-After`, puis renvoyez la requête avec le **même** `Idempotency-Key`, pour que rien ne se fasse deux fois. La section [Réessayer sans risque](https://matchai.co/docs/fr/developers/errors#retry-safely) donne un exemple complet.

### Qui partage une limite [#who-shares-a-limit]

- **Toutes les clés d'un même compte partagent une seule limite**, parce qu'elles appartiennent à une seule connexion. Une deuxième clé ne donne pas plus de marge. Consultez [Clés d'API](https://matchai.co/docs/fr/developers/authentication/api-keys#rotate-a-key).
- **Deux professionnels connectés à la même application ont des limites distinctes.** La matinée chargée d'un courtier ne ralentit pas la connexion d'un autre courtier.
- **Les opérations publiques fonctionnent sans identifiant de connexion, avec des limites plus basses.** Consulter le profil ou les inscriptions publiés d'un professionnel ne demande aucune clé. Ces requêtes sont comptées par adresse IP, et envoyer une clé ou un jeton relève la limite. Elles sont marquées **Free** (gratuit) dans la [référence de l'API](https://matchai.co/docs/developers/api-reference).

### Les limites de débit ne sont pas des limites d'énergie [#limits-are-not-energy-limits]

Une action qui utilise de l'Énergie Matchai peut être refusée pour deux autres raisons, et aucune n'est un `429` :

- Le compte n'a plus d'énergie : `402` avec le code `insufficient_energy`.
- Le titulaire du compte a fixé une limite d'énergie pour votre connexion, et vous l'avez atteinte : `402` avec le code `energy_limit_reached`.

Attendre ne règle ni l'un ni l'autre. Consultez [Erreurs](https://matchai.co/docs/fr/developers/errors#energy).

### Rester bien sous la limite [#stay-well-under-the-limit]

- **Lisez les en-têtes.** Ralentissez quand `RateLimit-Remaining` est bas, et faites une pause jusqu'à `RateLimit-Reset` quand il atteint zéro.
- **Écoutez au lieu d'interroger.** Les [webhooks](https://matchai.co/docs/fr/developers/webhooks) vous avisent quand un prospect arrive ou qu'une inscription change, sans aucune requête.
- **Synchronisez ce qui a changé.** Utilisez `updated_since` sur les points de terminaison de liste, et demandez des pages de `limit=100`, la plus grande taille de page.
- **Étalez le travail en lot.** Importer une centaine de contacts se fait en file d'attente, pas en rafale.
- **Ne répétez que ce qui a échoué.** Les clés d'idempotence vous permettent de réessayer une seule requête sans risque.

```js title="paced-fetch.mjs"
export async function pacedFetch(url, init) {
  const response = await fetch(url, init);

  const remaining = Number(response.headers.get('RateLimit-Remaining'));
  const reset = Number(response.headers.get('RateLimit-Reset'));

  // Nearly out of requests: wait for the window to reset before the next call.
  if (remaining <= 1 && reset > 0) {
    await new Promise((resolve) => setTimeout(resolve, reset * 1000));
  }

  return response;
}
```

<Cards>
  <Card title="Erreurs" href="https://matchai.co/docs/fr/developers/errors">
    Chaque statut et chaque code, et comment réessayer.
  </Card>
  <Card title="Recherche d'inscriptions" href="https://matchai.co/docs/fr/developers/listing-search">
    Le point de terminaison public limité à 60 requêtes par minute.
  </Card>
  <Card title="Serveur MCP" href="https://matchai.co/docs/fr/developers/mcp-server">
    Les outils publics et leur limite.
  </Card>
</Cards>

## Sitemap

- [Toutes les pages de la documentation Matchai](https://matchai.co/docs/sitemap.md)
- [llms.txt](https://matchai.co/docs/fr/llms.txt)
