Skip to main content
The REST API is served from a single base URL:
https://app.reechee.io/api/v1
It is the source of truth for the platform - the MCP server is a thin wrapper over these same endpoints.

Authentication

Anonymous endpoints (product search, the pain-points taste, competitors) need nothing. Everything else needs a paid-team API key, sent as a bearer token:
curl "https://app.reechee.io/api/v1/credit-balance" \
  -H "Authorization: Bearer rch_live_your_key_here"
Create and revoke keys in the app under Settings → API keys. See the Authentication guide for details.

Response envelope

Every response is a JSON envelope. Success:
{
  "success": true,
  "data": { },
  "meta": { }
}
Failure:
{
  "success": false,
  "error": {
    "code": "not_found",
    "message": "Resource not found",
    "details": null
  }
}
data is the payload (an object or an array). meta is optional and carries things like pagination on list endpoints and an upsell CTA on anonymous tastes.

Pagination

List endpoints are page-based (1-indexed). Pass page and page_size (max 100, default 20). The response’s meta.pagination tells you whether to keep going:
{ "page": 1, "page_size": 20, "has_more": true }

Errors

Errors use a stable machine code plus a human message. The HTTP status matches the code:
StatuscodeWhen
400invalid_requestMalformed parameters or body.
401unauthorizedMissing, invalid, revoked, or expired API key.
402payment_requiredNot enough credits for a credit-spending action.
403forbiddenA limit was reached (e.g. the plan’s product cap).
404not_foundUnknown resource id.
429rate_limitedRate limit exceeded - see the Retry-After header.
500internal_errorSomething went wrong on our side.
See the error reference and rate limits for the full story.

Endpoints

Browse the full endpoint reference in this section - each page has request parameters, schemas, and a live “Try it” playground.