Reference · v1.4

ROLLIN API reference.

REST API over HTTPS. JSON request and response bodies. Authentication via the X-Api-Key header. Eight endpoints. Free tier covers 1,000 requests per month with no credit card. Starter tier ($9.99/mo) unlocks full address precision, photos, hours, and 5,000 monthly requests.

Base URL: https://joinrollin.com/api/v1. Full OpenAPI 3.1 spec at /openapi.yaml.

No key yet?

Free tier — 1,000 requests/month, no credit card.

Get free key →
01 · Authentication

Authentication

Send your API key in the X-Api-Key header on every request. Keys start with a tier prefix: rlf_ (free), rls_ (starter), rld_ (developer), rlb_ (business), rle_ (enterprise).

Request
curl -H "X-Api-Key: $ROLLIN_API_KEY" "https://joinrollin.com/api/v1/health"

A missing or invalid key returns 401 Unauthorized. A revoked or expired key returns 403 Forbidden.

02 · Errors

Errors

Errors return standard HTTP status codes with a JSON body of the form { "error": { "code": "…", "message": "…" } }.

CodeMeaningWhen
400Bad RequestMissing or malformed parameters.
401UnauthorizedMissing or invalid X-Api-Key.
402Payment RequiredEndpoint requires a higher tier.
403ForbiddenKey revoked, expired, or origin-locked.
404Not FoundResource ID does not exist.
429Too Many RequestsRate limit hit. See Retry-After.
500Internal ErrorRetry with exponential backoff.
03 · Rate limits

Rate limits

Per-minute and per-month limits scale with tier. Hitting a limit returns 429 with a Retry-After header (seconds). The /v1/health endpoint is unauthenticated and uncounted.

TierPer minutePer monthPrice
Free101,000$0
Starter305,000$9.99
Developer6050,000$29
Business200500,000$149
04 · Pagination

Pagination

List endpoints accept a limit parameter (default 20, max 100) and return a next_cursor field when more results are available. Pass the cursor back as cursor to fetch the next page.

Endpoint
GET /api/v1/locations Free+

Search venues by location, query, or both. Results are pre-sorted by accessibility score, descending.

Query parameters

ParameterTypeDescription
latfloatLatitude. Required when searching by location.
lngfloatLongitude. Required when searching by location.
radiusintSearch radius in meters. Default 500.
citystringFilter by city name. Use with state.
statestringTwo-letter state code, e.g. NY.
qstringFree-text query against name and category.
min_scoreintFilter by minimum accessibility score (0–100).
categorystringFilter by category: restaurant, bar, lodging, venue.
limitintMax results per page. Default 20, max 100.
Request
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
  "https://joinrollin.com/api/v1/locations?lat=40.7580&lng=-73.9855&radius=500&min_score=70&limit=20"
200 OK
{
  "locations": [
    {
      "id": "abc-123-def",
      "name": "Devoción",
      "category": "cafe",
      "score": 86,
      "address": "69 Grand St, Brooklyn, NY 11249",
      "lat": 40.7148,
      "lng": -73.9614,
      "wheelchair_entry": true,
      "accessible_restroom": true,
      "level_entry": true,
      "accessible_parking": false,
      "wide_aisles": true,
      "elevator": null
    }
  ],
  "count": 20,
  "next_cursor": "eyJvZmZzZXQiOjIwfQ=="
}
Endpoint
GET /api/v1/locations/:id Free+ (premium fields Starter+)

Full venue detail including all six accessibility features, address, photos (Starter+), hours (Starter+), and verification status.

Request
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
  "https://joinrollin.com/api/v1/locations/abc-123-def"
200 OK
{
  "id": "abc-123-def",
  "name": "Devoción",
  "score": 86,
  "category": "cafe",
  "cuisine_type": "coffee",
  "address": "69 Grand St",
  "city": "Brooklyn",
  "state": "NY",
  "phone": "+17184843090",
  "website": "https://devocion.com",
  "hours": { "mon": "7-19" },
  "features": {
    "wheelchair_entry": true,
    "accessible_restroom": true,
    "level_entry": true,
    "accessible_parking": false,
    "wide_aisles": true,
    "elevator": null
  },
  "verified": true,
  "last_updated": "2026-04-22T18:13:00Z"
}
Endpoint
GET /api/v1/regions Free+

Coverage stats — 15 US states, 48 metro regions, total scored venues per region.

Endpoint
GET /api/v1/score/:id Business+

Detailed score breakdown — per-feature value, weight, and confidence.

Request
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
  "https://joinrollin.com/api/v1/score/abc-123-def"
200 OK
{
  "id": "abc-123-def",
  "score": 86,
  "breakdown": {
    "wheelchair_entry": { "value": true, "weight": 22, "confidence": 0.95 },
    "accessible_restroom": { "value": true, "weight": 22, "confidence": 0.88 },
    "level_entry": { "value": true, "weight": 18, "confidence": 0.92 }
  }
}
Endpoint
POST /api/v1/feedback Developer+

Submit accessibility feedback or corrections for a venue. Reviewed by the ROLLIN team.

Body

FieldTypeDescription
location_id requiredstringVenue ID.
type requiredenumOne of: correction, missing, verify.
messagestringPlain-text description. Max 2,000 chars.
Request
curl -X POST -H "X-Api-Key: $ROLLIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location_id":"abc-123","type":"correction","message":"..."}' \
  "https://joinrollin.com/api/v1/feedback"
Endpoint
GET /api/v1/usage Free+

Current usage stats for the authenticated key. Shows used vs. limit across the per-minute, per-day, and per-month windows, plus the current tier.

Request
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
  "https://joinrollin.com/api/v1/usage"
200 OK
{
  "tier": "starter",
  "minute": { "used": 3, "limit": 30 },
  "day": { "used": 42, "limit": 167 },
  "month": { "used": 1284, "limit": 5000 }
}
Endpoint
GET /api/v1/trial/* No key · IP-rate-limited

Public trial proxy. No API key required. IP-rate-limited to 5 requests, optionally tracked per-session via the X-Trial-Session header. Mirrors the regular endpoints under /v1/trial/locations, /v1/trial/locations/:id, /v1/trial/score/:id, /v1/trial/regions, /v1/trial/feedback, and /v1/trial/health with free-tier restrictions applied. Used by the MCP server’s trial mode.

Request · no auth
# Public trial proxy — no key, IP-rate-limited (5 calls)
curl "https://joinrollin.com/api/v1/trial/locations?lat=40.7580&lng=-73.9855"
Endpoint
GET /api/v1/health No auth · uncounted

Status check. No API key required, doesn't count against quota. Use for liveness probes.

Request
curl "https://joinrollin.com/api/v1/health"
200 OK
{ "status": "ok", "version": "1.4.0" }
Tooling

SDKs

Python — auto-generated by Stainless. Type-safe, async support, pagination built in.

OpenAPI 3.1 — full spec. Generate clients in any language with openapi-generator or Stainless.

TypeScript and Go SDKs are on the roadmap.

Tooling

MCP server

The ROLLIN MCP server gives Claude Desktop, Cursor, VS Code, and any MCP-compatible client direct access to ROLLIN data through five tools. One npx command — no install.

Ready to ship?

Free tier — 1,000 requests/month, no credit card. Starter $9.99/mo when you outgrow it.

Get free key →