Base URL: https://app.upratehq.com/api/v1
Authenticate
Create a key in Settings > API Keys and copy it right away. Uprate does not show it again. Keep it on your server.
Send it as Authorization: Bearer <API_KEY>. Requests run with your account's permissions and plan.
Reviews, topics and analytics belong to one app. Send its UUID as Uprate-App-Id: <APP_UUID>, or as the app_id query parameter. The header wins when you send both. GET /apps lists the UUIDs.
Each key can make 300 requests per minute. Above that you get HTTP 429 with a Retry-After header.
Responses and errors
Results are under data. Review and topic lists are paginated with links and meta. Use page and per_page: 25 per page by default, 100 at most.
Errors are JSON with a message. Validation errors add field-level errors, and some failed actions add an error code with details. A missing key returns 401, a missing app UUID 422, and an app you cannot access 403.
POST /reviews/{review}/reply posts the reply to the store unless you send draft: true. If the store result is unknown, Uprate blocks another publish until the next review sync confirms what happened. Do not retry blindly.
Endpoints
Paths are relative to the base URL. App, review, topic and rule IDs are UUIDs.
Without an app UUID:
GET /apps: apps you can accessGET /apps/{app}: one appGET /apps/{app}/soul: the app's reply voice instructionsPUT /apps/{app}/soul: replace the reply voice instructionsGET /automation-rules: your automation rulesPOST /automation-rules: create a ruleDELETE /automation-rules/{rule}: delete a rulePATCH /automation-rules/{rule}/toggle: turn a rule on or off
With an app UUID:
GET /reviews: list and filter reviewsGET /reviews/{review}: one review with its replyPOST /reviews/{review}/reply: publish a reply or save a draftPATCH /reviews/{review}/resolve: mark a review resolvedPATCH /reviews/{review}/unresolve: reopen itGET /topics: review topicsGET /topics/{topic}/reviews: reviews that mention a topicGET /analytics/summary: review totalsGET /analytics/platforms: totals per storeGET /analytics/response-times: response time trends and the age of unanswered reviewsGET /analytics/territories: totals per country
Example
curl 'https://app.upratehq.com/api/v1/reviews?per_page=10' \
-H "Authorization: Bearer $UPRATE_API_KEY" \
-H "Uprate-App-Id: $UPRATE_APP_UUID"For in-app feedback and AI agents, see SDK and MCP.