Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.fotolabs.co/llms.txt

Use this file to discover all available pages before exploring further.

Base URLs

EnvironmentURL
Productionhttps://api.fotolabs.co

Authentication

All endpoints require an API key passed as a Bearer token.
Authorization: Bearer fl_<key>
Get your API key from the Fotolabs dashboard.

Typical flow

1

Create a project

POST /v1/projects — create a project for a listing.
2

Upload images

POST /v1/images/upload-url for each file → PUT <uploadUrl> directly to S3. Repeat for every image; no client-side grouping needed.
3

Trigger processing

POST /v1/projects/{projectId}/process — enqueues all jobs in one call. HDR bracket sets are detected automatically from EXIF metadata.
4

Poll for results

GET /v1/projects/{projectId} — check status. When it’s completed, all resultImageUrl values are ready.

Project lifecycle

Projects move through pendingprocessingcompleted.
  • Images can only be uploaded to a pending project.
  • Processing can only be triggered on a pending project.
  • Once processing starts the project is locked — create a new project for additional images.

Plans

PlanAPI access
freeBlocked
essential / ultimate (PAYG)Charged once per project at the plan rate
essential_monthly / ultimate_monthlyDeducts one listing from your monthly quota; overage rate applies if quota is exhausted

HDR bracket detection

Upload all bracket exposures flat — no grouping needed on the client. When you call POST /v1/projects/{projectId}/process, images captured within bracketWindowSeconds of each other with an EV spread ≥ 0.5 stops are automatically grouped as HDR bracket sets.

Processing time

Each job typically completes in 60–120 seconds. HDR merge jobs may take slightly longer.