For developers
API Documentation
Build with the ResellerIO API. Everything you need to integrate product intake, AI processing, and marketplace listing generation into your mobile or web app.
Quick Start
Three steps to your first API call.
Register
POST /api/v1/auth/register with email & password to get a bearer token.
Authenticate
Add Authorization: Bearer <token> to every subsequent request.
Create a Product
POST /api/v1/products with title, brand, and optional image uploads.
Base URL & Conventions
| Base URL | /api/v1 |
| Content-Type | application/json |
| Auth |
Authorization: Bearer <token> (case-insensitive)
|
| Identifiers | Public path params and response `id` / `*_id` fields use ULID strings. Internal integer primary keys are not serialized. |
| Success shape | {"data": { ... }} |
| Error shape |
{"error": {"code": "...", "detail": "...", "status": 404}}
|
| OpenAPI | /api/v1/openapi.json |
| Discovery |
GET /api/v1 returns all endpoints
|
Endpoints
All endpoints grouped by feature area. Click any row to see parameters and examples. Protected endpoints require a bearer token.
Authentication
User & Settings
authProducts
authProduct Images
authLifestyle Images
authProduct Tabs
authStorefront
authInquiries
authExports & Imports
authSystem
Error Codes
All errors follow the same shape. Validation errors (422) include a fields
map with per-field messages.
| HTTP | Code | Meaning |
|---|---|---|
| 401 | unauthorized |
Missing or invalid bearer token |
| 404 | not_found |
Resource not found or not owned by you |
| 402 | limit_exceeded |
Monthly plan limit reached; response includes an absolute upgrade_url
|
| 422 | validation_failed |
Input validation errors — check fields |
| 422 | invalid_product_state |
Product status doesn't allow this action |
| 422 | invalid_uploads |
Upload IDs don't belong to the product |
| 502 | storage_unavailable |
Object storage is not configured |
Retryable AI Error Codes
These appear in latest_processing_run.error_code. Use
POST /products/:id/reprocess
to retry.
ai_quota_exhausted
ai_rate_limited
ai_media_fetch_failed
ai_provider_timeout
ai_grounding_request_invalid