DiscoverFor businessPricingLog in
API Reference

Reviews by MGS API

REST API for fetching reviews, posting replies, and integrating Reviews by MGS into your tools. Available on Pro and Business plans.

Overview

The Reviews by MGS API gives you programmatic access to your business profile, its reviews, and aggregate statistics. All endpoints return JSON and follow REST conventions.

Base URL:

https://reviews.mgshosting.com/api/v1
API access requires a Pro plan
Generate an API key from your dashboard. Free plans cannot create API keys.

Authentication

Authenticate by sending your API key in the Authorization header. Keys are scoped to a single business. Treat them like passwords — never embed them in client-side code.

curl https://reviews.mgshosting.com/api/v1/business \
  -H "Authorization: Bearer rbm_abcd1234_..."

Scopes

Each API key carries one or more scopes that define what it can do:

  • business.read — Read your business profile and aggregate stats.
  • reviews.read — List reviews on your business.
  • reviews.write — Reply to reviews.
  • * — Full access (use sparingly).

Insufficient scope returns 403 Forbidden. Choose the minimum scope set for each integration.

Rate limits

  • Pro: 60 requests/minute, 10,000/day.
  • Business: 300 requests/minute, 100,000/day.

Rate-limit info is returned via X-RateLimit-Limit and X-RateLimit-Remaining headers. Exceeding the limit returns 429 Too Many Requests.

Errors

Errors follow a consistent JSON shape:

{
  "error": "Insufficient scope",
  "code": "scope_required",
  "required_scope": "reviews.write"
}
  • 401 Unauthorized — missing or invalid API key.
  • 402 Payment Required — your plan doesn't include this feature.
  • 403 Forbidden — key lacks the required scope.
  • 404 Not Found — resource doesn't exist or doesn't belong to you.
  • 429 Too Many Requests — rate-limit hit.

Endpoints — Business

GET/api/v1/business

Returns the authenticated business's public profile + aggregate rating stats.

Scope: business.read

Example response

{
  "id": "uuid",
  "name": "Acme Hosting",
  "slug": "acme-hosting",
  "category": "hosting",
  "website_url": "https://acme.com",
  "logo_url": "https://acme.com/logo.png",
  "is_claimed": true,
  "is_verified": true,
  "average_rating": 4.8,
  "total_reviews": 247,
  "profile_url": "https://reviews.mgshosting.com/b/acme-hosting"
}

Endpoints — Reviews

GET/api/v1/reviews

List reviews for your business. Default returns published reviews, sorted newest first.

Scope: reviews.read

Query parameters

  • statuspublished (default), pending, rejected
  • limit — 1-100, default 25
  • cursor — pagination cursor (review ID from previous page)

Example response

{
  "data": [
    {
      "id": "uuid",
      "rating": 5,
      "title": "Best hosting I've used",
      "body": "Migration was painless. Support replies in minutes.",
      "reviewer_name": "Alex K.",
      "reviewer_email_provided": true,
      "verified": true,
      "status": "published",
      "reply": "Thanks Alex — glad we could help!",
      "submitted_at": "2026-05-20T11:42:00Z",
      "published_at": "2026-05-20T11:42:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "uuid",
    "has_more": true
  }
}

Endpoints — Reply

POST/api/v1/reviews/{id}/reply

Create or update the public reply on a review.

Scope: reviews.write

Request body

{
  "body": "Thank you for the kind words! We're glad..."
}

Example

curl -X POST https://reviews.mgshosting.com/api/v1/reviews/abc123/reply \
  -H "Authorization: Bearer rbm_..." \
  -H "Content-Type: application/json" \
  -d '{"body":"Thanks!"}'

Endpoints — Stats

GET/api/v1/stats

Aggregate statistics for your business — total, average, distribution.

Scope: business.read

Example response

{
  "total_reviews": 247,
  "average_rating": 4.8,
  "rating_distribution": {
    "5": 192,
    "4": 35,
    "3": 12,
    "2": 5,
    "1": 3
  }
}

Webhooks (Business plan)

On the Business plan, you can configure webhooks to receive real-time events for review activity. Add up to 10 webhook endpoints, each subscribed to specific events.

Available events

  • review.created — A new review was submitted (any status).
  • review.published — A review became publicly visible.
  • review.replied — Your business replied publicly to a review.
  • review.reported — A review was flagged by a user.

Payload format

{
  "event": "review.published",
  "occurred_at": "2026-05-22T11:42:00Z",
  "data": {
    "id": "uuid",
    "rating": 5,
    "title": "...",
    "body": "...",
    "reviewer_name": "Alex K.",
    "verified": true
  }
}

Signature verification

Each webhook is signed with HMAC-SHA256 using your webhook secret, sent as the X-RbM-Signature header. Always verify before processing.

Ready to integrate?

Generate an API key from your dashboard.

Open dashboard