# EZPhoto > REST API for image operations: background removal ($0.01, synchronous), > 2x/4x upscaling ($0.05, async), and AI product shots ($0.10, async). > Base URL https://api.ezphoto.ai, bearer-key auth, JSON or multipart in, > signed result URLs out (24h expiry, originals never stored). Free plan: > 50 operations/month. ## Docs - [Full API documentation](https://api.ezphoto.ai/llms-full.txt): the complete reference as plain markdown — endpoints, parameters, errors, idempotency, webhooks, rate limits. Best single fetch for answering API questions. - [OpenAPI 3.1 spec](https://api.ezphoto.ai/openapi.yaml): machine-readable schema of every endpoint, request and response. - [HTML documentation](https://api.ezphoto.ai/docs): the same reference for humans. ## Key facts - Auth: `Authorization: Bearer ez_live_…` on every request. - `POST /v1/remove-background` is synchronous; `POST /v1/upscale` and `POST /v1/product-shot` return 202 with a job — poll `GET /v1/jobs/{id}` or pass `webhook_url`. - Errors are RFC 7807 `application/problem+json`. - `Idempotency-Key` header makes POST retries safe (no double billing). - Image inputs: public `image_url` in JSON, or multipart upload field `image` (PNG/JPEG/WebP/GIF, max 20 MB).