Skip to content
DEVELOPERS API v1.2

Accessibility data for anything you build.

Accessibility data over REST. Get a key, send it in one header, and query 105,000+ scored venues from curl, JavaScript or Python.

Read the docs
1,000 requests a month free · No credit card · OpenAPI 3.1
GET /api/v1/locations 200 OK
{
"success": true,
"count": 20,
"next_cursor": "eyJpZCI6IjIyYmI5MjJlIn0",
"results": [
{
"id": "22bb922e-c396-4348-93c4-c98122fc7ab4",
"name": "Per Se",
"score": 80,
"score_label": "Good",
"accessibility_tier": "Fully Accessible",
"distance_miles": 0.3,
"features": {
"wheelchair_entry": true,
"level_entry": true,
"accessible_restroom": true,
"wide_aisles": null
}
}
]
}

Example response. The field names and the shape are the live ones.

THREE WAYS IN

Use the API, the Python SDK or the MCP server.

REST API Ten endpoints over HTTPS with one header for auth. An OpenAPI 3.1 spec, and JSON everywhere.
curl https://joinrollin.com/api/v1/health
Endpoint reference
Python SDK Typed client generated by Stainless Commons, with retries and pagination built in.
pip install git+https://github.com/stainless-commons/rollin-python.git
View on GitHub
MCP server Five tools that let Claude, ChatGPT and Gemini search and read scored venues.
npx -y rollin-mcp-server
View on npm
THE DATA

A 0 to 100 score, not a checkbox.

Every venue carries a composite accessibility score, and we know of no other U.S. dataset that publishes one. Multi-source data and community feedback feed every score, and the breakdown shows how much is actually recorded instead of one inflated number.

105,000+ Scored venues
16 · 77 States and regions
6 Features scored per venue
61M Americans who plan around access
A typical places API
{ "name": "Per Se", "wheelchair_accessible": true }
One yes or no, often self-reported, with no idea whether the restroom works too.
ROLLIN
{
"name": "Per Se",
"score": 80,
"score_label": "Good",
"features": {
"wheelchair_entry": true,
"accessible_restroom": true,
"level_entry": true,
"wide_aisles": null
},
"verified": false,
"last_updated": "2026-09-18T14:02:00Z"
}
Six features, a score, and a null where nothing has been recorded yet. Your users see the nuance.
WHAT TEAMS BUILD

Put access into the product you already have.

Travel and itinerary Trips that work door to door Filter restaurants, museums and venues by score before they go on the itinerary. GET /v1/locations
AI assistants Answers with real data behind them Let Claude, ChatGPT or Gemini check access instead of guessing. rollin-mcp-server
Hotels and booking Show guests what is nearby Scored places within walking distance, on property pages and confirmation emails. GET /v1/locations?radius=
Audit and compliance Dashboards and procurement scoring Feature breakdowns with a confidence level, across a whole portfolio. GET /v1/score/:id
Maps and navigation Step-free on the map Layer scores onto your map and keep it current with the changes feed. GET /v1/changes
Reviews and discovery Access next to the stars Add a score to every listing, and send corrections back to improve it. POST /v1/feedback
DATA LICENSING · AUDIT FIRMS · TRAVEL PLATFORMS

License the dataset instead of compiling it.

The Business tier delivers scored, multi-source data with feature breakdowns and a confidence level, built for compliance dashboards, procurement scoring and travel itinerary features. A 105,000+ venue baseline.

Talk to sales
  • Score breakdowns by featureEvery feature, with how much of it is actually recorded.
  • Changes feedStay in sync without re-pulling whole regions.
  • 500,000 requests a month200 a minute, with higher limits on contract.
  • White-label availableShow the data under your brand.
  • Custom MSAProcurement-friendly terms and dedicated onboarding.
DOCUMENTATION · API v1.2

Build with the ROLLIN API.

Everything from your first request to production. Schemas and response shapes live in the API reference.

01 · GETTING STARTED

Three steps to your first response.

  1. 1
    Get a key The free tier is 1,000 requests a month with no credit card. Confirm your email and the key turns on.
  2. 2
    Authenticate Send your key in the X-Api-Key header. Keep it in environment variables and never commit secrets.
  3. 3
    Make a call Request /v1/locations with a lat and lng. You get scored venues back as JSON.
02 · AUTHENTICATION

Send your key in X-Api-Key.

Pull the key from environment variables. Never commit secrets. The unauthenticated /v1/health endpoint is the easiest sanity check.

# Set once in your shell
export ROLLIN_API_KEY="rls_..."
# Use in any request
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/health"
03 · RECIPES

The four calls most integrations start with.

recipe · 01

Search nearby venues

Pass a lat and lng with a radius in miles, filter by minimum score, and page with limit and cursor. Results come back nearest first, or by score if you ask for it.

curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/locations?lat=40.7580&lng=-73.9855&radius=1&min_score=70&limit=20"
recipe · 02

Get full venue detail

Retrieve one venue by ID: the score, all six features, the address, the verified flag and last_updated, plus phone, website and sensory values from Starter and photo_url from Developer.

curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/locations/22bb922e-c396-4348-93c4-c98122fc7ab4"
recipe · 03 Developer and above

Submit feedback

POST a correction, an accurate confirmation or an inaccurate report. The ROLLIN team reviews every submission, and accurate reports feed back into the score.

curl -X POST -H "X-Api-Key: $ROLLIN_API_KEY" \
-H "Content-Type: application/json" \
-d {"location_id":"22bb922e-c396-4348-93c4-c98122fc7ab4",
"feedback_type":"correction",
"comment":"Restroom is no longer step-free."} \
"https://joinrollin.com/api/v1/feedback"
recipe · 04

Check your quota

Returns current usage across the per-minute, per-day and per-month windows for your key, plus the current tier.

# Check current quota usage for your key
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/usage"
04 · MCP SERVER

Give your AI assistant real accessibility data.

rollin-mcp-server works with Claude, ChatGPT and Gemini. Add it to your client's config with your key and the assistant can search and read scored venues on its own. Full setup is on the MCP page.

mcp config
{
"mcpServers": {
"rollin": {
"command": "npx",
"args": ["-y", "rollin-mcp-server"],
"env": { "ROLLIN_API_KEY": "rls_..." }
}
}
}
Find a step-free dinner spot near Times Square for four. rollin · search locations Per Se is 0.3 miles away and scores 80, with wheelchair entry, level entry and an accessible restroom recorded. Wide aisles are not yet known.
05 · ENDPOINTS

Ten endpoints cover the whole surface.

The short version. Parameters, bodies and response shapes live in the full reference.

GET /api/v1/locations Search by coordinates and radius, or by bbox viewport. Filter on score, features, category and cuisine. Paginated.
GET /api/v1/locations/:id Full venue detail: score, features, address, sensory values.
POST /api/v1/locations/batch Up to 50 venues by ID in one request.
GET /api/v1/changes Venues changed in the last N days. Sync feed.Developer and above
GET /api/v1/regions Coverage by state.
GET /api/v1/score/:id Score breakdown by feature.Business and above
POST /api/v1/feedback Submit an accessibility correction.Developer and above
GET /api/v1/usage Current key usage across the rate-limit windows.
GET /api/v1/trial/* Public trial proxy. IP rate limited, no key required.
GET /api/v1/health API status. No auth, no quota cost.
06 · RATE LIMITS

Limits scale with your plan.

Three windows run at once: per minute, per day and per month. Hit one and you get a 429 with a Retry-After header. Calls to /v1/health are never counted. Change tiers any time in the portal.

TIERPER MINUTEPER DAYPER MONTH
Free $0 10 33 1,000
Starter $9.99 / month 30 167 5,000
Developer $29 / month 60 1,667 50,000
Business $149 / month 200 16,667 500,000
Compare plans
07 · ERROR CODES

Standard HTTP, structured payloads.

Every error returns success: false and an error object with a code and a message. There is no 402 anywhere in the API: a tier gate is a 403.

400 Bad Request INVALID_PARAMSMissing or malformed parameters, or a body that is not valid JSON.
401 Unauthorized INVALID_API_KEYNo key, a key that fails the format check, a revoked key, or an expired one.
403 Forbidden TIER_REQUIREDThe endpoint or the filter needs a higher plan.
404 Not Found LOCATION_NOT_FOUNDThat venue ID does not exist, or it has been removed.
405 Method Not Allowed METHOD_NOT_ALLOWEDWrong HTTP method for the endpoint.
409 Conflict FEEDBACK_PENDINGYou already have feedback pending for that venue.
429 Too Many Requests RATE_LIMIT_MINUTEA minute, day or month window is full. Honour Retry-After.
500 Internal Error INTERNAL_ERROROur end. Retry with exponential backoff.
08 · PRODUCTION CHECKLIST

Before you ship to real users.

  1. Keep keys in env vars, never in source Set ROLLIN_API_KEY in your platform's secret store (Netlify env, Vercel env, Doppler, 1Password). Never commit the key.
  2. Honour 429 with Retry-After Rate limit hits return 429 with a Retry-After header in seconds. Wait that long before retrying, and use exponential backoff with jitter for 5xx errors.
  3. Cache aggressively client-side Venue data changes daily to monthly, not by the second. Cache /v1/locations/:id responses for 24 hours. /v1/usage shows the quota you have left.
  4. Surface scores honestly to users A score of 60 is not the same as a score of 90. Show the number rather than a binary yes or no, and link to ROLLIN for the full breakdown.
  5. Forward corrections to /v1/feedback If your users tell you a venue's data is wrong, send it back with POST /v1/feedback (Developer and above). It makes the score more accurate for everyone.
  6. Plan for the limits before launch day There is a daily cap as well as a monthly one: Free is 33 a day, Starter 167. Estimate volume from your projected daily actives, and if it lands above 5,000 a month move to Starter before launch day.
REFERENCE · v1.2

API reference

REST over HTTPS with JSON request and response bodies. Authenticate with the X-Api-Key header. Ten endpoints, and one key that also works with the MCP server.

BASEhttps://joinrollin.com/api/v1 OpenAPI 3.1 spec Open in Swagger
01 · AUTHENTICATION

Authentication

Send your key in the X-Api-Key header on every request. Keys carry a tier prefix: rlf_ for Free, rls_ for Starter, rld_ for Developer, rlb_ for Business and rle_ for Enterprise. A missing, malformed, revoked or expired key returns 401. An endpoint or a filter above your plan returns 403.

REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/health"
02 · ERRORS

Errors

Errors use standard HTTP status codes with a JSON body carrying success: false and an error object with a code and a message. Rate-limit bodies add retry_after in seconds.

CODEMEANINGEXAMPLE CODE
400Bad RequestINVALID_PARAMS
401UnauthorizedINVALID_API_KEY
403ForbiddenTIER_REQUIRED
404Not FoundLOCATION_NOT_FOUND
405Method Not AllowedMETHOD_NOT_ALLOWED
409ConflictFEEDBACK_PENDING
429Too Many RequestsRATE_LIMIT_MINUTE
500Internal ErrorINTERNAL_ERROR
429 RESPONSE
{
"success": false,
"error": {
"code": "RATE_LIMIT_MINUTE",
"message": "Rate limit exceeded: 30 requests per minute.",
"retry_after": 60
}
}
03 · RATE LIMITS

Rate limits

Three windows run at once: per minute, per day and per month. Hitting any of them returns 429 with a Retry-After header in seconds. Calls to /v1/health are never counted.

TIERMINUTEDAYMONTHPRICE
Free10331,000$0
Starter301675,000$9.99
Developer601,66750,000$29
Business20016,667500,000$149
04 · PAGINATION

Pagination

List endpoints accept limit (default 20, max 50 on /v1/locations, max 500 on /v1/changes) and return next_cursor when more results exist. Pass it back as cursor for the next page.

NEXT PAGE
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/locations?lat=40.71&lng=-73.96&cursor=eyJpZCI6IjIyYmI5MjJlIn0"
ENDPOINTS

Ten endpoints.

GET /v1/locations Free and above

Search venues by coordinates or a bounding box, then filter. Sorted by distance by default, and the response carries a cursor when there is another page.

Query parameters
PARAMETERTYPEDESCRIPTION
latfloatLatitude. Required unless bbox is given.
lngfloatLongitude. Required unless bbox is given.
radiusfloatSearch radius in miles. Default 5, max 25. Free is capped at 10.
bboxstringsouth,west,north,east for map viewports. Replaces lat, lng and radius. Max span 1.0 by 1.25 degrees.
min_scoreintMinimum accessibility score, 0 to 100.
categorystringComma separated, exact match, e.g. restaurant,cafe. Up to 10.
cuisinestringPartial match, e.g. italian.
featuresstringRequired features, e.g. wheelchair_entry,accessible_restroom.
lightingstringAmbient light: bright, moderate or dim. Not applied on Free.
sortstringdistance (default), score or updated.
min_confidencestringhigh, medium or low. Business and above.
limitintDefault 20, max 50. Free is capped at 10.
cursorstringPagination cursor from next_cursor.
REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/locations?lat=40.7580&lng=-73.9855&min_score=70"
200 OK
{
"success": true,
"count": 20,
"next_cursor": "eyJpZCI6IjIyYmI5MjJlIn0",
"results": [{
"id": "22bb922e-c396-4348-93c4-c98122fc7ab4",
"name": "Per Se",
"category": "restaurant",
"score": 80,
"score_label": "Good",
"accessibility_tier": "Fully Accessible",
"distance_miles": 0.3,
"features": { "wheelchair_entry": true }
}]
}
GET /v1/locations/:id Free and above

Full venue detail: the six accessibility features, the address, the verified flag and last_updated. Phone, website and sensory values from Starter. photo_url from Developer. data_confidence on Business. Free receives no feature set and a locked sensory stub.

REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/locations/22bb922e-c396-4348-93c4-c98122fc7ab4"
200 OK
{
"id": "22bb922e-c396-4348-93c4-c98122fc7ab4",
"name": "Per Se",
"score": 80,
"score_label": "Good",
"features": {
"wheelchair_entry": true,
"level_entry": true,
"accessible_restroom": true,
"parking": null,
"wide_aisles": null,
"elevator": null
},
"verified": false,
"last_updated": "2026-09-18T14:02:00Z",
"hours": null
}
POST /v1/locations/batch Free and above

Up to 50 venues by ID in one round trip, with the same shape and tier gating as detail. IDs must be UUIDs; anything else is dropped, so compare requested against count.

Body
FIELDTYPEDESCRIPTION
idsarrayRequired. 1 to 50 venue UUIDs. Duplicates are collapsed.
REQUEST
curl -X POST -H "X-Api-Key: $ROLLIN_API_KEY" \
-H "Content-Type: application/json" \
-d {"ids": ["22bb922e-c396-4348-93c4-c98122fc7ab4",
"2c8bef73-407a-45e0-8dd0-cc38e109c121"]} \
"https://joinrollin.com/api/v1/locations/batch"
200 OK
{
"success": true,
"requested": 2,
"count": 2,
"results": [ ]
}
GET /v1/changes Developer and above

Incremental sync feed of venues whose profile or sensory data changed inside the window. Poll it daily instead of re-pulling whole regions.

Query parameters
PARAMETERTYPEDESCRIPTION
daysintChange window, 1 to 30. Default 7.
statestringTwo-letter state filter, e.g. NY.
limitintDefault 100, max 500.
cursorstringPagination cursor from next_cursor.
REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/changes?days=7&state=NY"
200 OK
{
"success": true,
"count": 100,
"since": "2026-09-21T00:00:00Z",
"days": 7,
"results": [{
"id": "22bb922e-c396-4348-93c4-c98122fc7ab4",
"name": "Per Se",
"state": "NY",
"score": 80,
"changed": ["profile"]
}]
}
GET /v1/regions Free and above

Coverage by state: how many scored venues each one holds, and a coverage level for each. total_locations carries the live corpus size, so read it rather than hard-coding a number.

REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/regions"
200 OK
{
"success": true,
"count": 16,
"regions": [{
"state": "NY",
"location_count": 25278,
"coverage": "high"
}],
"total_locations": ...
}
GET /v1/score/:id Business and above

Score breakdown: each feature’s recorded value, a qualitative impact label, and whether it is one of the four critical features. Point weights are not exposed.

REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/score/22bb922e-c396-4348-93c4-c98122fc7ab4"
200 OK
{
"success": true,
"location_id": "22bb922e-c396-4348-93c4-c98122fc7ab4",
"score": 80,
"score_label": "Good",
"verified": false,
"scoring": {
"features": {
"wheelchair_entry": {
"value": "yes",
"impact": "major_positive",
"critical": true
},
"wide_aisles": {
"value": "unknown",
"impact": "not_scored",
"critical": true
}
},
"notes": ["Score is conservative."]
}
}
POST /v1/feedback Developer and above

Submit a correction for a venue. Every submission lands as pending and is reviewed by the ROLLIN team. One pending submission per venue, and 10 submissions per key per 24 hours.

Body
FIELDTYPEDESCRIPTION
location_idstringRequired. Venue UUID.
feedback_typeenumRequired. accurate, inaccurate or correction.
commentstringPlain text, max 1,000 characters.
featuresobjectOptional. Feature name to true, false or null.
REQUEST
curl -X POST -H "X-Api-Key: $ROLLIN_API_KEY" \
-H "Content-Type: application/json" \
-d {"location_id":"22bb922e-c396-4348-93c4-c98122fc7ab4",
"feedback_type":"correction"} \
"https://joinrollin.com/api/v1/feedback"
200 OK
{
"success": true,
"feedback": {
"status": "pending"
}
}
GET /v1/usage Free and above

Usage for the authenticated key across the minute, day and month windows, plus the current tier.

REQUEST
curl -H "X-Api-Key: $ROLLIN_API_KEY" \
"https://joinrollin.com/api/v1/usage"
200 OK
{
"success": true,
"tier": "starter",
"usage": {
"minute": { "used": 3, "limit": 30, "remaining": 27 },
"day": { "used": 42, "limit": 167, "remaining": 125 },
"month": { "used": 1284, "limit": 5000, "remaining": 3716 }
}
}
GET /v1/trial/* No key

Public trial proxy with no API key, rate limited per IP to 5 requests a minute and 30 a day, with the radius capped at 5 miles and 5 results a search. It mirrors locations, detail, score, regions, feedback and health under free-tier restrictions, and the MCP server’s trial mode runs on it.

REQUEST
curl "https://joinrollin.com/api/v1/trial/locations?lat=40.7580&lng=-73.9855"
GET /v1/health No auth, uncounted

Status check for liveness probes. No key required, and it is never counted against your quota. The response also carries a data.locations count.

REQUEST
curl "https://joinrollin.com/api/v1/health"
200 OK
{
"status": "operational",
"version": "1.2.0",
"timestamp": "2026-09-28T14:02:00Z",
"services": {
"api": "healthy",
"database": "healthy"
},
"data": { "locations": ... }
}
TOOLING

SDKs and MCP

TypeScript and Go SDKs are on the roadmap. Manage keys in the Developer Portal.
MCP SERVER · v1.2

Accessibility data, inside your AI.

Give Claude, Cursor, VS Code or any MCP client five tools and 105,000+ scored venues. Try it with no key: the trial proxy allows 5 requests a minute.

npx -y rollin-mcp-server
Same key as the REST API. View on npm
Find 5 step-free restaurants near Times Square scoring 80 or better. search_locations(q="restaurants", lat=40.758, lng=-73.985, min_score=80, limit=5) Here are five. Per Se scores 80, with a level entrance and an accessible restroom recorded.

Install in about a minute

Get it with your key filled in
claude_desktop_config.json

Mac: ~/Library/Application Support/Claude/. Windows: %APPDATA%\Claude\. Paste, save and restart Claude.

{
"mcpServers": {
"rollin": {
"command": "npx",
"args": ["-y", "rollin-mcp-server"],
"env": { "ROLLIN_API_KEY": "your_api_key_here" }
}
}
}
LET YOUR AGENT DO IT

Paste one prompt. Your agent sets it up.

Works in Claude Code, Cursor, VS Code, Windsurf, Lovable, Replit and other coding agents. It picks the right config for the tool it is running in, asks for your key, then tests the connection.

Set up the ROLLIN accessibility MCP server for me. 1. Work out which tool you are running in and use its MCP config: - Claude Code: run claude mcp add rollin -- npx -y rollin-mcp-server - Claude Desktop: claude_desktop_config.json, key "mcpServers" - Cursor: .cursor/mcp.json, key "mcpServers" - VS Code: .vscode/mcp.json, key "servers" - Anything else that supports remote MCP: use the hosted server https://joinrollin.com/api/mcp with header X-Api-Key For local setups use command "npx", args ["-y", "rollin-mcp-server"]. 2. Ask me for my ROLLIN API key (it starts with rlf_, rls_, rld_ or rlb_). If I do not have one, send me to https://joinrollin.com/portal?signup=free. Store it as ROLLIN_API_KEY in env or the config’s "env" block. Never commit it or put it in client-side code. Add the file to .gitignore if needed. 3. Restart or reload the MCP server, then call check_health and search_locations(q="cafe", lat=40.758, lng=-73.985, limit=3). Show me the results with each score, on the 0 to 100 scale. Tools: search_locations, get_location_details, list_regions, check_health, submit_feedback (Developer and above). Docs: https://joinrollin.com/mcp · Spec: https://joinrollin.com/openapi.yaml

Five tools

search_locations(lat, lng, q, radius, min_score, features, lighting, limit) Search venues around a point. lat and lng are required; everything else narrows the result.
get_location_details(id) Full detail for one venue: score, all six features, address, photo URL and sensory values, subject to your tier.
list_regions() Coverage by state, for scoping a search.
check_health() API status and version. Never counted against your quota.
submit_feedback(location_id, feedback_type, features, comment) Send a correction for the ROLLIN team to review. Developer and above
Every tool call is logged against your key, so you can see what your agent asked in the portal. The free tier works; see the plans.
PRICING

Start free. Upgrade when you ship.

One key works across the REST API and the MCP server. Month to month, and you can change plans any time.

Free Try it. No credit card.
$0/ month
1,000 requests / month 10 per minute · 33 per day Up to 100 venue results a day Coordinates rounded to about 1 km Search, detail, batch, regions, usage Four of the five MCP tools
Starter Production precision for real users.
$9.99/ month
5,000 requests / month 30 per minute · 167 per day Unlimited venue results Full address and coordinate precision Feature set, phone, website, sensory values Email support
Developer Real volume, photo URLs and feedback writes.
$29/ month
50,000 requests / month 60 per minute · 1,667 per day photo_url on venue detail GET /v1/changes sync feed POST /v1/feedback, the write endpoint Priority support
Business Hospitality, travel apps and multi-tenant tools.
$149/ month
500,000 requests / month 200 per minute · 16,667 per day GET /v1/score/:id breakdown data_confidence on venue detail min_confidence search filter Phone and Slack support, custom MSA
Annual billing on Developer and above saves 20 percent. Need more? Talk to sales
$0 No credit card The free tier is free. Sign up with an email, confirm it, ship.
1 email One confirmation step Your key is issued straight away and turns on when you click the link we send.
Monthly Cancel any time Paid plans are month to month. Change or cancel in the billing portal, not over the phone.

Common questions

How do I get a key?

Pick a plan and enter your email. A free key is issued straight away and switches on when you click the confirmation link we email. Paid plans go through Stripe Checkout, and the key is issued once payment completes.

Do I need a credit card for the Free tier?

No. The free tier is 1,000 requests a month with no card on file. We will not move you to a paid plan when you hit the limit; you get a 429 and an upgrade nudge.

What is the difference between Free and Starter?

Free is 1,000 requests a month at reduced precision: coordinates rounded to about 1 km, the address trimmed to city and state, and the feature set, phone, website and sensory values withheld. Starter is 5,000 requests a month at full precision with those fields included. Most production apps need Starter.

How do paid plans get billed?

Stripe handles billing, and card details never touch our servers. Manage your subscription, update your card or cancel from the Stripe billing portal.

Can I switch tiers later?

Yes, from the billing portal, and the change takes effect immediately. Annual billing on Developer and above saves 20 percent.

I lost my key. What now?

Keys are shown once, when they are created. Use Manage billing and we will email a short-lived link to your billing portal. Rotating a key from the dashboard is not live yet, so write to hello@joinrollin.com and we will reissue.

Start with the free tier.

1,000 requests a month, no credit card. Shipping at scale? Talk to us about annual pricing and onboarding.
Talk to sales