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.

REST / JSON Bearer token auth Versioned at /api/v1 OpenAPI JSON

Quick Start

Three steps to your first API call.

1

Register

POST /api/v1/auth/register with email & password to get a bearer token.

2

Authenticate

Add Authorization: Bearer <token> to every subsequent request.

3

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

auth

Products

auth

Product Images

auth

Lifestyle Images

auth

Product Tabs

auth

Storefront

auth

Inquiries

auth

Exports & Imports

auth

System

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