Avis de la boîte de réception
Listez les avis Google Business Profile de vos établissements par note et par réponse, ajoutez ou remplacez la réponse, supprimez-la et marquez les avis comme lus.
https://post.adaptlypost.com/post/api/v1/inbox/reviewsRenvoie les avis Google Business Profile de vos établissements, du plus récent au plus ancien. Répond { reviews, total, hasMore, nextCursor }.
Tous les rôles détiennent inbox.read, donc toute clé valide peut lire la boîte de réception.
Paramètres de requête
| Paramètre | Taper | Description |
|---|---|---|
accountIds | string[] | Uniquement ces comptes, par l'id de GET /social-accounts. Répétez la clé ou séparez les valeurs par des virgules. Jusqu'à 50 |
platforms | PlatformType[] | Uniquement ces plateformes. Répétez la clé ou séparez les valeurs par des virgules |
statuses | InboxStatus[] | Uniquement les éléments dans ces états : UNREAD, READ ou DONE. Répétez la clé ou séparez les valeurs par des virgules |
since | string (ISO 8601) | Uniquement les éléments créés sur la plateforme à partir de cette date et heure |
search | string | Texte à rechercher |
ratings | number[] | Uniquement les avis avec ces notes, de 1 à 5 étoiles. Répétez la clé ou séparez les valeurs par des virgules |
replied | boolean | true pour les avis qui ont une réponse, false pour ceux qui n'en ont pas |
limit | number | Éléments par page, de 1 à 100. 25 par défaut |
cursor | string | Le nextCursor de la page précédente. nextCursor vaut null sur la dernière page |
Environ 10 minutes, pas en temps réel
AdaptlyPost lit chaque compte connecté toutes les 10 minutes et garde ce qu'il trouve. Les listes répondent à partir de cette copie, donc un nouveau commentaire, une mention, un message ou un avis apparaît en environ 10 minutes. POST /api/v1/inbox/refresh demande une lecture immédiate. Les événements de webhook viennent des mêmes lectures.Canaux qui demandent une reconnexion
Tous les canaux sont ouverts à l'API. Quand une connexion n'a pas la permission de la plateforme pour un canal ou une action, y compris les permissions que la plateforme examine encore pour AdaptlyPost, GET /api/v1/inbox/summary affiche le canal en RECONNECT_REQUIRED et chaque écriture sur ce canal répond 403 inbox_reconnect_required. Un jeton expiré répond de la même façon. Demandez à l'utilisateur de reconnecter le compte dans AdaptlyPost ; réessayer ne sert à rien.Champs d'un avis
| Champ | Description |
|---|---|
id | Id de l'avis. Utilisez-le avec les endpoints ci-dessous |
accountId | Le compte auquel appartient l'élément : son id de GET /social-accounts |
platform | Toujours GOOGLE_BUSINESS |
accountName | Nom affiché de ce compte |
platformReviewId | L'id de l'avis chez Google |
reviewer | name, avatarUrl et isAnonymous. Google masque le nom des auteurs anonymes |
rating | Étoiles, de 1 à 5 |
text | Le texte de l'avis. Il peut être vide, car une note seule est un avis |
reply | La réponse de l'établissement sous la forme { text, updatedAt }, ou null |
createdAt | Date de rédaction de l'avis |
updatedAt | Date de la dernière modification par son auteur |
status | UNREAD, READ ou DONE. Un nouvel avis commence en UNREAD, ou en DONE quand il a déjà une réponse. Un avis modifié repasse en UNREAD sauf s'il a une réponse |
repliedAt | Date de la dernière réponse de votre compte, ou null |
maxReplyLength | La réponse la plus longue que Google accepte, en octets UTF-8 : 4096 |
capabilities | canReply : false quand le compte doit être reconnecté |
Répondre à un avis
Google accepte une réponse par avis. Envoyer une réponse remplace celle qui existe déjà, qu'elle ait été écrite dans AdaptlyPost ou sur Google.
https://post.adaptlypost.com/post/api/v1/inbox/reviews/:id/replyAjoute la réponse à l'avis, ou la remplace, et répond 200 avec l'avis.
Les écritures exigent inbox.reply (Administrateur et Éditeur) et un abonnement AdaptlyPost actif. Sans abonnement, elles répondent 403 subscription_required.
Paramètres du corps
| Paramètre | Taper | Description |
|---|---|---|
textREQUIS | string | La réponse, jusqu'à 4096 octets UTF-8 |
https://post.adaptlypost.com/post/api/v1/inbox/reviews/:id/replySupprime la réponse de l'établissement et répond 200 avec l'avis.
Marquer comme lu ou traité
https://post.adaptlypost.com/post/api/v1/inbox/reviews/statusDéfinit le statut de 100 avis au plus et répond { reviews, unreadCount }.
Paramètres du corps
| Paramètre | Taper | Description |
|---|---|---|
idsREQUIS | string[] | De 1 à 100 ids issus de la liste |
statusREQUIS | InboxStatus | UNREAD, READ ou DONE |
Refus
Un appel refusé répond { statusCode, error, code, message }. Basez-vous sur code. message explique le refus en clair.
| Code | Statut | Quand, et que faire |
|---|---|---|
inbox_item_not_found | 404 | L'id n'existe pas ou appartient à un autre espace de travail. Arrêtez |
inbox_action_unsupported | 400 | La plateforme, ou cet élément, ne permet pas ce masquage, cette suppression ou ce j'aime. capabilities indique ce qui s'applique. Arrêtez |
inbox_reconnect_required | 403 | La connexion n'a pas la permission pour ce canal ou cette action, y compris une permission encore en examen par la plateforme, ou son jeton a expiré. Demandez à l'utilisateur de reconnecter le compte dans AdaptlyPost. Ne réessayez pas |
inbox_reply_invalid | 400 | Le texte est vide ou dépasse la limite. Le message indique la limite. Corrigez le texte |
inbox_messaging_window_closed | 400 | Facebook ou Instagram : la fenêtre de réponse de 24 heures est passée. Arrêtez |
inbox_rate_limited | 429 | La plateforme a limité le débit d'AdaptlyPost. Réessayez plus tard |
inbox_platform_error | 503 | La plateforme a échoué. Réessayez plus tard |
permission_denied | 403 | Le rôle de la clé n'a pas inbox.read ou inbox.reply. Ne réessayez pas |
subscription_required | 403 | Une écriture sans abonnement AdaptlyPost actif. Ne réessayez pas |
curl --request GET \
--url 'https://post.adaptlypost.com/post/api/v1/inbox/reviews?ratings=1,2&replied=false' \
--header 'Authorization: Bearer <api-key>'curl --request PUT \
--url https://post.adaptlypost.com/post/api/v1/inbox/reviews/rvw_0c93b4d1/reply \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{ "text": "Sorry about the wait, Piotr. We have added a second barista on weekends." }'curl --request DELETE \
--url https://post.adaptlypost.com/post/api/v1/inbox/reviews/rvw_0c93b4d1/reply \
--header 'Authorization: Bearer <api-key>'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/inbox/reviews/status \
--header 'Authorization: Bearer <api-key>' \
--header 'Content-Type: application/json' \
--data '{ "ids": ["rvw_0c93b4d1"], "status": "READ" }'{
"reviews": [
{
"id": "rvw_0c93b4d1",
"accountId": "conn_gbp_001",
"platform": "GOOGLE_BUSINESS",
"accountName": "AdaptlyPost Kraków",
"platformReviewId": "AbFvOqm4x2...",
"reviewer": {
"name": "Piotr K.",
"avatarUrl": null,
"isAnonymous": false
},
"rating": 2,
"text": "Good coffee, but a 20 minute wait on Saturday.",
"reply": null,
"createdAt": "2026-11-07T12:30:00.000Z",
"updatedAt": "2026-11-07T12:30:00.000Z",
"status": "UNREAD",
"repliedAt": null,
"maxReplyLength": 4096,
"capabilities": { "canReply": true }
}
],
"total": 1,
"hasMore": false,
"nextCursor": null
}