API Documentation

Base URL: https://amino.reviews/api

Authentication

Public endpoints require no authentication. User endpoints require a session cookie (sign in via the website). Vendor API endpoints require a Bearer token.

Authorization: Bearer amino_your_api_key_here

Generate keys from your vendor dashboard.

Rate Limiting

Review submissions: 10/hour per IP, 5/day per user, 60s cooldown. CSRF token required for mutations (sent via X-CSRF-Token header). Bearer-authenticated requests are exempt from CSRF.

Endpoints

GET/api/v1/vendors

List all active vendors with ratings and review counts.

RESPONSE
{ "vendors": [{ id, name, slug, website, cache_rating_avg, cache_review_count }] }
GET/api/v1/vendors/:slug

Get full details for a single vendor.

PARAMETERS
slugpathVendor URL slug
RESPONSE
{ "vendor": { ... } }
GET/api/v1/vendors/:slug/reviews

Get paginated reviews for a vendor with sort/filter.

PARAMETERS
slugpathVendor URL slug
sortqueryrecent | oldest | highest | lowest
ratingqueryFilter by star rating (1-5)
sourcequeryorganic | invitation
pagequeryPage number (default: 1)
per_pagequeryResults per page (max 50)
RESPONSE
{ "reviews": [...], "total": 42, "page": 1, "per_page": 20 }
GET/api/v1/peptides

List all peptides in the directory.

RESPONSE
{ "peptides": [{ id, name, slug, category }] }
GET/api/v1/widget/:slug

Vendor summary for embeddable widget. CORS enabled.

PARAMETERS
slugpathVendor URL slug
RESPONSE
{ "vendor": { name, slug, rating_avg, review_count }, "reviews": [...] }
POST/api/v1/reviewsAuth

Submit a new review. Auth required for organic reviews; invitation reviews use a token.

PARAMETERS
vendor_idbodyVendor ID (required)
ratingbody1-5 star rating (required)
titlebodyReview title, max 200 chars (required)
bodybodyReview body, max 5000 chars (required)
tokenbodyInvitation token (for verified reviews)
product_idsbodyArray of peptide IDs to tag
RESPONSE
{ "id": 123, "status": "approved" | "pending" | "flagged" }
POST/api/v1/reviews/:id/voteAuth

Vote on a review as helpful or unhelpful.

PARAMETERS
idpathReview ID
votebodyhelpful | unhelpful
RESPONSE
{ "ok": true }
POST/api/v1/reviews/:id/reportAuth

Flag a review for admin review.

PARAMETERS
idpathReview ID
reasonbodyReport reason, max 500 chars
RESPONSE
{ "ok": true }
POST/api/v1/claimAuth

Submit a vendor claim request.

PARAMETERS
vendor_namebodyVendor name (required)
websitebodyVendor website URL (required)
evidencebodyProof of ownership
RESPONSE
{ "ok": true, "message": "Claim submitted..." }
POST/api/v1/invitationsBearer

Send a review invitation. Requires vendor API key.

PARAMETERS
emailbodyCustomer email (required)
order_refbodyOrder reference number
RESPONSE
{ "token": "uuid", "review_url": "https://...", "expires_at": "..." }
GET/api/v1/invitations/statsBearer

Invitation statistics. Requires vendor API key.

RESPONSE
{ "stats": { "pending": 5, "completed": 12, "expired": 3 } }

Embeddable Widget

Add a review widget to your website:

<div id="amino-reviews-widget" data-amino-vendor="your-slug" data-amino-theme="light" data-amino-layout="compact"></div> <script src="https://amino.reviews/widget.js" async></script>

SVG Badge

Embed a live rating badge:

<a href="https://amino.reviews/vendors/your-slug"> <img src="https://amino.reviews/badge/your-slug.svg" alt="Vendor on amino.reviews" /> </a>