# info.summary
API-key authenticated routes for PhotoFig automation.

# info.description
Public API endpoints for product-image edits, upload sessions, job polling,
and webhooks. This specification intentionally excludes logged-in app,
guest, internal worker, health, readiness, and metrics routes.

# tags[].description
Account metadata, quotas, limits, and enabled tools.

# tags[].description
Supported edit tools and their input modes.

# tags[].description
API job status, listing, cancellation, and deletion.

# paths./v1/account.get.responses.200.description
Account, quota, limit, and enabled-tool metadata.

# paths./v1/tools.get.responses.200.description
Supported tools and their input/parameter schema.

# paths./v1/uploads.post.summary
Create an upload session for upload-first, edit-later workflows.

# paths./v1/uploads.post.description
Use this when the source is a larger local file, or when the same
source image will feed multiple edits. PUT the bytes to `uploadUrl`,
then submit an edit with the returned `uploadSessionId`.

# paths./v1/jobs/{id}.get.responses.200.description
API job status and signed result URLs when available.

# paths./v1/jobs/{id}.delete.summary
Delete an API job and API-owned artifacts.

# paths./v1/webhooks.post.responses.201.description
Registered endpoint. The secret is returned only on creation.

# webhooks.photofigJobEvent.post.description
PhotoFig sends this request to registered webhook URLs.

# components.securitySchemes.ApiKeyBearer.description
Pass the full API key as `Authorization: Bearer <api_key>`.

# components.responses.Unauthorized.description
API key is missing, invalid, disabled, or expired.

# components.schemas.CreateUploadSessionResponse.properties.uploadUrl.description
Signed URL for a direct HTTP PUT upload.

# components.schemas.CreateEditRequest.properties.imageUrl.description
HTTP(S) URL PhotoFig can fetch as the source image.

# components.schemas.CreateEditRequest.properties.uploadSessionId.description
Upload session returned by `POST /v1/uploads`.

# components.schemas.CreateEditRequest.properties.webhookUrl.description
Accepted by the handler but not currently used for dispatch. Prefer registered webhooks.

# components.schemas.CreateMultipartEditRequest.additionalProperties.description
Tool-specific parameters may be sent as additional form fields.

# components.schemas.EditParameters.properties.theme.description
Required for `ai-bg`; concise scene theme such as `warm oak tabletop`.

# components.schemas.WebhookEndpointWithSecret.allOf[].properties.secret.description
Webhook signing secret. Returned only when the endpoint is created.