POST
/validations
Submits image validation and returns immediately with the current upload state and a status_url.
Poll GET /image_uploads/:uuid until the upload is validated or failed.
Provide exactly one input: upload_id, multipart image, or image_url.
Presigned upload
curl
curl https://twotensors.ai/api/v1/validations \
-H "Authorization: Bearer tt_live_your_token" \
-H "Content-Type: application/json" \
-d '{ "upload_id": "upload-uuid" }'
Multipart upload
curl
curl https://twotensors.ai/api/v1/validations \
-H "Authorization: Bearer tt_live_your_token" \
-F "image=@sample.jpg;type=image/jpeg"
URL import
curl
curl https://twotensors.ai/api/v1/validations \
-H "Authorization: Bearer tt_live_your_token" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: validation-001" \
-d '{ "image_url": "https://example.com/sample.jpg" }'
URL imports must use HTTPS, resolve to a public address, return image/*, and stay under the upload size limit. Visible Gemini logo removal runs automatically during validation and does not require a request parameter.
Poll only work accepted with 202; a 429 concurrent_job_limit response means validation was not started.
Response
json
{
"upload": {
"uuid": "upload-uuid",
"status": "validating",
"upload_method": "multipart",
"original_filename": "sample.jpg",
"content_type": "image/jpeg",
"byte_size": 123456,
"image_uuid": null
},
"status_url": "/api/v1/image_uploads/upload-uuid"
}