Skip to main content
The Crevio API lets you manage products, pricing, checkouts, orders, customers, invoices, subscriptions, and more. All endpoints return JSON with snake_case keys following Stripe conventions.

Base URL

https://api.crevio.co/v1
For local development:
https://api.crevio.dev/v1

Authentication

All API requests require a Bearer token in the Authorization header.
curl https://api.crevio.co/v1/products \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Generate API tokens from Settings > Developer > API tokens in your dashboard.
Keep your API tokens secure. Do not expose them in client-side code or public repositories.

Object types

Every API resource includes an object field that identifies the resource type:
{
  "id": "prod_abc123",
  "object": "product",
  "name": "My Course",
  "slug": "my-course"
}
All IDs are prefixed strings that encode the resource type (e.g., prod_abc123, cus_ghi789).

Slug lookup

Products, blog posts, experiences, and legal pages can be retrieved by slug instead of ID:
curl https://api.crevio.co/v1/products/my-course \
  -H "Authorization: Bearer YOUR_API_TOKEN"
This works anywhere an ID is accepted for these resources.

List responses

List endpoints return a Stripe-style envelope:
{
  "object": "list",
  "data": [
    { "id": "prod_abc123", "object": "product", "name": "My Course" },
    { "id": "prod_def456", "object": "product", "name": "Templates Pack" }
  ],
  "has_more": true,
  "url": "/v1/products"
}
Use starting_after and limit query parameters to paginate. Pass the id of the last item to fetch the next page:
curl "https://api.crevio.co/v1/products?starting_after=prod_abc123&limit=20" \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Default limit is 20, maximum is 100.

Expandable fields

Some endpoints support an expand query parameter to include related data inline. Pass a comma-separated list of fields:
curl "https://api.crevio.co/v1/orders?expand=line_items,customer"
Without expand, related resources appear as collapsed IDs:
{ "customer": "cust_abc123" }
With expand, they become full objects:
{
  "customer": {
    "id": "cust_abc123",
    "object": "customer",
    "email": "jane@example.com",
    "name": "Jane Doe"
  }
}

Delete responses

Delete endpoints return a Stripe-style confirmation:
{
  "id": "disc_abc123",
  "object": "discount",
  "deleted": true
}

Errors

All errors follow this format:
{
  "error": {
    "type": "validation_error",
    "code": "validation_failed",
    "message": "Email can't be blank",
    "errors": {
      "email": ["can't be blank"]
    }
  }
}
StatusTypeCodeDescription
400invalid_request_errorparameter_missingA required parameter is missing
401invalid_request_errorauthentication_requiredInvalid or missing API token
404invalid_request_errorresource_missingResource not found
422validation_errorvalidation_failedRequest failed validation
500api_errorInternal server error

SDKs

TypeScript

Install the official SDK:
npm install @crevio/sdk
import { Crevio } from "@crevio/sdk";

const crevio = new Crevio({
  apiKeyAuth: "YOUR_API_TOKEN",
});

const products = await crevio.products.list();

Full endpoint reference

Browse all available endpoints below.