Back to Docs

API Reference

Complete reference for all Simple Product API endpoints.

Base URL

https://simpleproduct.dev/api/v1

Authentication

All API requests require authentication via API key (except public endpoints):

Authorization: Bearer YOUR_API_KEY

Get your API key from Settings → API Keys in your workspace.

Feedback

POST

/api/v1/feedback

Submit customer feedback.

Request Body

{ "title": "Feature request", "content": "I would love to see...", "email": "customer@example.com", "name": "John Doe", "source": "widget", "metadata": { "page": "/settings" } }
FieldTypeRequiredDescription
titlestringYesFeedback title
contentstringYesThe feedback message
emailstringNoCustomer email
namestringNoCustomer name
externalIdstringNoYour user ID
sourcestringNoFeedback source
metadataobjectNoCustom JSON data

People (Customers)

POST

/api/v1/people

Create or update a customer record.

Request Body

{ "email": "customer@example.com", "name": "John Doe", "externalId": "user_123", "properties": { "plan": "pro", "company": "Acme Inc" } }
GET

/api/v1/people?email=customer@example.com

Look up a customer by email.

GET

/api/v1/people/:id

Get a customer by ID.

Organizations

POST

/api/v1/organizations

Create or update an organization.

Request Body

{ "name": "Acme Inc", "domain": "acme.com", "properties": { "plan": "enterprise", "seats": 50 } }

Releases (Changelog)

GET

/api/v1/releases/public?workspace=YOUR_WORKSPACE_SLUG

Get published releases. No authentication required.

POST

/api/v1/releases

Create a new release.

Request Body

{ "title": "v2.1.0", "content": "## What's New\n- Dark mode\n- Bug fixes", "status": "published", "publishedAt": 1234567890 }

Events (Analytics)

POST

/api/v1/events

Track a custom event.

Request Body

{ "event": "feature_used", "email": "customer@example.com", "externalId": "user_123", "properties": { "feature": "export", "format": "csv" } }

Error Responses

All errors return JSON with an error message:

{ "error": "Error message here" }

Status Codes

CodeDescription
400Bad request (missing/invalid fields)
401Unauthorized (missing/invalid API key)
404Not found
429Rate limited
500Server error