REST APIGET

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.

GEThttps://post.adaptlypost.com/post/api/v1/inbox/reviews

Renvoie les avis Google Business Profile de vos établissements, du plus récent au plus ancien. Répond { reviews, total, hasMore, nextCursor }.

Clé API (jeton Bearer)
Permission:inbox.readRôles et permissions

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ètreTaperDescription
accountIdsstring[]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
platformsPlatformType[]Uniquement ces plateformes. Répétez la clé ou séparez les valeurs par des virgules
statusesInboxStatus[]Uniquement les éléments dans ces états : UNREAD, READ ou DONE. Répétez la clé ou séparez les valeurs par des virgules
sincestring (ISO 8601)Uniquement les éléments créés sur la plateforme à partir de cette date et heure
searchstringTexte à rechercher
ratingsnumber[]Uniquement les avis avec ces notes, de 1 à 5 étoiles. Répétez la clé ou séparez les valeurs par des virgules
repliedbooleantrue pour les avis qui ont une réponse, false pour ceux qui n'en ont pas
limitnumberÉléments par page, de 1 à 100. 25 par défaut
cursorstringLe 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

ChampDescription
idId de l'avis. Utilisez-le avec les endpoints ci-dessous
accountIdLe compte auquel appartient l'élément : son id de GET /social-accounts
platformToujours GOOGLE_BUSINESS
accountNameNom affiché de ce compte
platformReviewIdL'id de l'avis chez Google
reviewername, avatarUrl et isAnonymous. Google masque le nom des auteurs anonymes
ratingÉtoiles, de 1 à 5
textLe texte de l'avis. Il peut être vide, car une note seule est un avis
replyLa réponse de l'établissement sous la forme { text, updatedAt }, ou null
createdAtDate de rédaction de l'avis
updatedAtDate de la dernière modification par son auteur
statusUNREAD, 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
repliedAtDate de la dernière réponse de votre compte, ou null
maxReplyLengthLa réponse la plus longue que Google accepte, en octets UTF-8 : 4096
capabilitiescanReply : 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.

PUThttps://post.adaptlypost.com/post/api/v1/inbox/reviews/:id/reply

Ajoute la réponse à l'avis, ou la remplace, et répond 200 avec l'avis.

Clé API (jeton Bearer)
Permission:inbox.replyRôles et permissions

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ètreTaperDescription
textREQUISstringLa réponse, jusqu'à 4096 octets UTF-8
DELETEhttps://post.adaptlypost.com/post/api/v1/inbox/reviews/:id/reply

Supprime la réponse de l'établissement et répond 200 avec l'avis.

Clé API (jeton Bearer)
Permission:inbox.replyRôles et permissions

Marquer comme lu ou traité

POSThttps://post.adaptlypost.com/post/api/v1/inbox/reviews/status

Définit le statut de 100 avis au plus et répond { reviews, unreadCount }.

Clé API (jeton Bearer)
Permission:inbox.replyRôles et permissions

Paramètres du corps

ParamètreTaperDescription
idsREQUISstring[]De 1 à 100 ids issus de la liste
statusREQUISInboxStatusUNREAD, READ ou DONE

Refus

Un appel refusé répond { statusCode, error, code, message }. Basez-vous sur code. message explique le refus en clair.

CodeStatutQuand, et que faire
inbox_item_not_found404L'id n'existe pas ou appartient à un autre espace de travail. Arrêtez
inbox_action_unsupported400La 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_required403La 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_invalid400Le texte est vide ou dépasse la limite. Le message indique la limite. Corrigez le texte
inbox_messaging_window_closed400Facebook ou Instagram : la fenêtre de réponse de 24 heures est passée. Arrêtez
inbox_rate_limited429La plateforme a limité le débit d'AdaptlyPost. Réessayez plus tard
inbox_platform_error503La plateforme a échoué. Réessayez plus tard
permission_denied403Le rôle de la clé n'a pas inbox.read ou inbox.reply. Ne réessayez pas
subscription_required403Une écriture sans abonnement AdaptlyPost actif. Ne réessayez pas
Lister les notes basses sans réponse
curl --request GET \
  --url 'https://post.adaptlypost.com/post/api/v1/inbox/reviews?ratings=1,2&replied=false' \
  --header 'Authorization: Bearer <api-key>'
Répondre à un avis
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." }'
Supprimer une réponse
curl --request DELETE \
  --url https://post.adaptlypost.com/post/api/v1/inbox/reviews/rvw_0c93b4d1/reply \
  --header 'Authorization: Bearer <api-key>'
Marquer un avis comme lu
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" }'
200
{
  "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
}