Para programadores

API de avaliações do Google para programadores

Uma API REST para consultar as suas localizações e avaliações, disparar pedidos de avaliação a partir do seu próprio sistema (POS, reservas, e-commerce), mais webhooks assinados para receber eventos em tempo real sem polling.

Autenticação

Gere uma chave de API em Definições → API no seu painel. Cada chave só é mostrada uma vez ao ser criada — guarde-a num local seguro. Envie-a no cabeçalho Authorization de cada pedido:

curl -H "Authorization: Bearer rvd_live_..." \
  "https://reviews-api.rovidev.com/api/v1/locations"

GET /api/v1/locations

Devolve as localizações ativas da sua organização.

{
  "id": "b3f1...",
  "name": "Cafetería El Sol - Centro"
}

GET /api/v1/reviews

Devolve as avaliações da sua organização, paginadas. Suporta os filtros status (pending, negative, published), location_id, platform (google, facebook, tripadvisor), page e page_size.

curl -H "Authorization: Bearer rvd_live_..." \
  "https://reviews-api.rovidev.com/api/v1/reviews?status=negative&page=1&page_size=50"
{
  "items": [
    {
      "id": "9c2a...",
      "location_id": "b3f1...",
      "location_name": "Cafetería El Sol - Centro",
      "platform": "google",
      "star_rating": 5,
      "comment": "Trato excelente",
      "reviewer_name": "Ana",
      "sentiment": "positive",
      "review_created_at": "2026-08-20T10:15:00",
      "reply_status": "published",
      "reply_content": "¡Muchas gracias, Ana!"
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 50
}

Também em JavaScript / Node

const res = await fetch(
  "https://reviews-api.rovidev.com/api/v1/reviews?status=negative&page=1&page_size=50",
  { headers: { Authorization: "Bearer rvd_live_..." } }
)
const { items, total } = await res.json()

POST /api/v1/review-requests

Dispare um pedido de avaliação no momento exato em que um pedido, reserva ou marcação é concluído, em vez de depender de carregar uma lista de contactos manualmente. Suporta os canais email, sms e whatsapp.

curl -X POST -H "Authorization: Bearer rvd_live_..." \
  -H "Content-Type: application/json" \
  -d '{"channel":"email","name":"Ana","email":"ana@example.com"}' \
  "https://reviews-api.rovidev.com/api/v1/review-requests"
{
  "id": "7e4b...",
  "status": "sent",
  "channel": "email",
  "recipient": "ana@example.com"
}

Também em JavaScript / Node

await fetch("https://reviews-api.rovidev.com/api/v1/review-requests", {
  method: "POST",
  headers: {
    Authorization: "Bearer rvd_live_...",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ channel: "email", name: "Ana", email: "ana@example.com" })
})

Webhooks

Configure um URL em Definições → API para receber um POST sempre que ocorrer um evento, em vez de consultar a API periodicamente. Máximo de 5 webhooks ativos por organização.

Eventos disponíveis

  • review.created
  • review.replied
  • daily.summary

Verificar a assinatura

Cada envio inclui o cabeçalho X-RoviDev-Signature: um HMAC-SHA256 do corpo do pedido, calculado com o segredo mostrado quando o webhook é criado. Verifique-o no seu servidor antes de processar o evento:

import hashlib
import hmac

expected = hmac.new(secret.encode(), request.body, hashlib.sha256).hexdigest()
hmac.compare_digest(expected, request.headers["X-RoviDev-Signature"])

Também em JavaScript / Node

const crypto = require("crypto")

const expected = crypto
  .createHmac("sha256", secret)
  .update(rawBody)
  .digest("hex")
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers["x-rovidev-signature"]))
Ver o guia passo a passo: automatizar pedidos de avaliação e webhooks →

Pronto para ligar o seu sistema?

Abrir o meu painel →