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

Four steps to a working product-ingest flow.

1

Register or log in

Start with POST /api/v1/auth/register or POST /api/v1/auth/login to get a bearer token.

2

Confirm email

Check GET /api/v1/me. If confirmed_at is null, call POST /api/v1/auth/resend_confirmation before product-write actions.

3

Create or prepare uploads

Use POST /api/v1/products for the first upload batch, or POST /api/v1/products/:id/prepare_uploads to add photos later.

4

Finalize and poll

Direct-upload the binaries, POST /api/v1/products/:id/finalize_uploads, then GET /api/v1/products/:id while status is uploading or processing.

Base URL & Conventions

Base URL /api/v1
Content-Type application/json
Auth Authorization: Bearer <token> (case-insensitive)
Public auth rate limit POST /api/v1/auth/register and POST /api/v1/auth/login are limited to 10 requests per minute per IP.
Write gate Product creation, uploads, reprocessing, lifestyle generation, marketplace video generation, and imports require a confirmed email address.
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

Recommended ingest flow: POST /api/v1/products or POST /api/v1/products/:id/prepare_uploads → direct PUT to each signed upload_url → POST /api/v1/products/:id/finalize_uploads → GET /api/v1/products/:id until processing settles.

Product Images

auth

Lifestyle Media

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
403 email_not_confirmed Email not confirmed — blocks product creation, uploads, reprocessing, lifestyle generation, and imports
404 not_found Resource not found or not owned by you
429 rate_limited Too many auth attempts; returned by the public register/login endpoints
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
502 upload_signing_failed A signed upload URL could not be generated

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