Saltar al contenido principal

API REST Reepli

L'API REST Reepli vous permet d'integrer les fonctionnalites de Reepli directement dans vos applications. Envoyez des messages, gerez des contacts, lancez des campagnes et bien plus depuis votre propre code.

Vue d'ensemble

L'API Reepli est une API RESTful qui utilise :

  • HTTPS pour toutes les communications.
  • JSON comme format de donnees (requetes et reponses).
  • Authentification par cle API via l'en-tete HTTP.
  • Codes HTTP standard pour les reponses.
  • Pagination par curseur pour les listes.

URL de base : https://api.reepli.ai/v1

Pre-requis

  • Un compte Reepli.ai avec un plan Business ou Enterprise. Voir Plans et tarifs.
  • Les droits Administrateur sur votre compte Reepli. Voir Roles et permissions.
  • Des connaissances en developpement (HTTP, JSON, REST).

Authentification

Generer une cle API

  1. Connectez-vous a Reepli et accedez a Parametres > Integrations > API.
  2. Cliquez sur Generer une nouvelle cle API.
  3. Donnez un nom a la cle (ex : "Integration CRM Production").
  4. Selectionnez les permissions de la cle (lecture, ecriture, ou les deux).
  5. Cliquez sur Creer.
  6. Copiez la cle immediatement -- elle ne sera plus affichee.
Securite de la cle API

La cle API donne acces a votre compte Reepli. Ne la partagez jamais, ne la versionnez pas dans un depot de code, et ne l'exposez pas cote client (navigateur, application mobile). Stockez-la dans des variables d'environnement ou un gestionnaire de secrets.

Utiliser la cle API

Incluez la cle API dans l'en-tete Authorization de chaque requete :

Authorization: Bearer rpl_sk_votre_cle_api_ici

Exemple avec cURL :

curl -X GET https://api.reepli.ai/v1/contacts \
-H "Authorization: Bearer rpl_sk_votre_cle_api_ici" \
-H "Content-Type: application/json"

Gestion des cles API

ActionProcedure
Lister les clesParametres > Integrations > API
Revoquer une cleCliquez sur l'icone de suppression a cote de la cle
Regenerer une cleRevoquez l'ancienne et creez-en une nouvelle
Limiter les permissionsSelectionnez lecture seule ou lecture/ecriture

Vous pouvez creer plusieurs cles API avec des permissions differentes pour chaque integration.

Limites de debit (Rate Limits)

PlanRequetes par minuteRequetes par jour
Business6010 000
Enterprise200100 000

En-tetes de limite de debit

Chaque reponse API inclut des en-tetes indiquant votre consommation :

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1712140800
En-teteDescription
X-RateLimit-LimitNombre maximal de requetes par minute
X-RateLimit-RemainingRequetes restantes dans la fenetre actuelle
X-RateLimit-ResetTimestamp Unix de la prochaine remise a zero

Gestion du depassement

Si vous depassez la limite, l'API repond avec :

  • Code HTTP : 429 Too Many Requests
  • En-tete : Retry-After: 30 (nombre de secondes a attendre)
Conseil

Implementez un mecanisme de backoff exponentiel dans votre code pour gerer les limites de debit de maniere elegante. Evitez de renvoyer immediatement les requetes echouees.

Codes de reponse

CodeSignificationDescription
200OKRequete traitee avec succes
201CreatedRessource creee avec succes
204No ContentSuppression reussie
400Bad RequestParametres invalides ou manquants
401UnauthorizedCle API manquante ou invalide
403ForbiddenPermissions insuffisantes
404Not FoundRessource introuvable
409ConflictConflit (ex : doublon)
422Unprocessable EntityDonnees valides mais non traitables
429Too Many RequestsLimite de debit depassee
500Internal Server ErrorErreur interne Reepli

Format des erreurs

{
"error": {
"code": "VALIDATION_ERROR",
"message": "Le champ 'phone' est requis.",
"details": [
{
"field": "phone",
"message": "Ce champ ne peut pas etre vide."
}
]
}
}

Endpoints principaux

Contacts

MethodeEndpointDescription
GET/v1/contactsLister les contacts
POST/v1/contactsCreer un contact
GET/v1/contacts/{id}Recuperer un contact
PUT/v1/contacts/{id}Mettre a jour un contact
DELETE/v1/contacts/{id}Supprimer un contact
GET/v1/contacts/{id}/conversationsConversations d'un contact
POST/v1/contacts/{id}/tagsAjouter des etiquettes
DELETE/v1/contacts/{id}/tags/{tag}Supprimer une etiquette

Creer un contact

curl -X POST https://api.reepli.ai/v1/contacts \
-H "Authorization: Bearer rpl_sk_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"phone": "+33612345678",
"name": "Marie Dupont",
"email": "[email protected]",
"tags": ["client", "premium"],
"custom_fields": {
"entreprise": "Acme SAS",
"source": "site-web"
}
}'

Reponse (201 Created) :

{
"data": {
"id": "cnt_567890",
"phone": "+33612345678",
"name": "Marie Dupont",
"email": "[email protected]",
"tags": ["client", "premium"],
"custom_fields": {
"entreprise": "Acme SAS",
"source": "site-web"
},
"created_at": "2026-04-03T10:00:00Z",
"updated_at": "2026-04-03T10:00:00Z"
}
}

Messages

MethodeEndpointDescription
POST/v1/messagesEnvoyer un message
GET/v1/messages/{id}Recuperer un message
GET/v1/conversations/{id}/messagesMessages d'une conversation

Envoyer un message texte

curl -X POST https://api.reepli.ai/v1/messages \
-H "Authorization: Bearer rpl_sk_votre_cle" \
-H "Content-Type: application/json" \
-d '{
"to": "+33612345678",
"type": "template",
"template": {
"name": "order_confirmation",
"language": "fr",
"components": [
{
"type": "body",
"parameters": [
{"type": "text", "text": "Marie"},
{"type": "text", "text": "#1042"}
]
}
]
}
}'
Messages hors fenetre de 24h

En dehors de la fenetre de 24 heures apres le dernier message du contact, seuls les messages bases sur des modeles approuves peuvent etre envoyes. Les messages libres (free-form) seront rejetes. Consultez la tarification WhatsApp pour comprendre le modele de facturation.

Conversations

MethodeEndpointDescription
GET/v1/conversationsLister les conversations
GET/v1/conversations/{id}Recuperer une conversation
POST/v1/conversations/{id}/assignAssigner un agent
POST/v1/conversations/{id}/closeFermer une conversation

Campagnes

MethodeEndpointDescription
GET/v1/campaignsLister les campagnes
POST/v1/campaignsCreer une campagne
GET/v1/campaigns/{id}Recuperer une campagne
POST/v1/campaigns/{id}/sendLancer une campagne
GET/v1/campaigns/{id}/statsStatistiques d'une campagne

Modeles de messages

MethodeEndpointDescription
GET/v1/templatesLister les modeles
POST/v1/templatesCreer un modele
GET/v1/templates/{id}Recuperer un modele
DELETE/v1/templates/{id}Supprimer un modele

Pagination

Les endpoints qui retournent des listes utilisent une pagination par curseur :

GET /v1/contacts?limit=50&after=cnt_567890
ParametreDescriptionDefaut
limitNombre d'elements par page (1-100)25
afterCurseur pour la page suivante--
beforeCurseur pour la page precedente--

Reponse :

{
"data": [...],
"pagination": {
"has_more": true,
"next_cursor": "cnt_891011",
"prev_cursor": "cnt_345678"
}
}

Filtrage et tri

Les endpoints de liste supportent des parametres de filtrage :

GET /v1/contacts?tag=premium&created_after=2026-01-01&sort=-created_at
ParametreDescriptionExemple
tagFiltrer par etiquettetag=vip
created_afterCrees apres cette datecreated_after=2026-01-01
created_beforeCrees avant cette datecreated_before=2026-12-31
sortChamp de tri (prefixe - pour decroissant)sort=-created_at
searchRecherche textuellesearch=dupont

SDKs et bibliotheques

Reepli fournit des SDKs officiels pour les langages populaires :

LangagePackageInstallation
Pythonreepli-pythonpip install reepli
Node.js@reepli/sdknpm install @reepli/sdk
PHPreepli/sdk-phpcomposer require reepli/sdk-php

Exemple avec le SDK Python :

from reepli import ReepliClient

client = ReepliClient(api_key="rpl_sk_votre_cle")

# Creer un contact
contact = client.contacts.create(
phone="+33612345678",
name="Marie Dupont",
tags=["client"]
)

# Envoyer un message
message = client.messages.send(
to="+33612345678",
template="order_confirmation",
parameters={"name": "Marie", "order_id": "#1042"}
)

Bonnes pratiques

  • Gerez les erreurs : implementez une gestion robuste des erreurs et des retentatives.
  • Respectez les limites : implementez un backoff exponentiel en cas de code 429.
  • Validez les donnees : validez les donnees cote client avant d'envoyer les requetes.
  • Utilisez les webhooks : pour les notifications en temps reel, preferez les webhooks au polling.
  • Versionnez : utilisez toujours le prefixe /v1/ pour garantir la compatibilite.

Depannage

Code 401 - Non autorise

  • Verifiez que votre cle API est correcte et active.
  • Verifiez le format de l'en-tete : Authorization: Bearer rpl_sk_....

Code 429 - Limite depassee

  • Attendez le delai indique dans l'en-tete Retry-After.
  • Implementez un mecanisme de backoff exponentiel.
  • Envisagez de passer a un plan superieur pour des limites plus elevees.

Code 422 - Donnees non traitables

  • Verifiez le format des numeros de telephone (indicatif pays requis).
  • Assurez-vous que les champs obligatoires sont presents.
  • Consultez le champ details de la reponse d'erreur.

Pour d'autres problemes, consultez la page de depannage ou contactez le support.

Ressources complementaires