API Reference
Authentication, workflows, assets, asynchronous jobs, results, and billing.
The current Private Beta API uses https://app.clearcrowds.com/api/v1. Set CLEARCROWDS_API_BASE_URL to https://app.clearcrowds.com for the examples below. All examples use placeholders and the standard JSON success or failure envelope.
Authentication
Send an API Key or CLI access token as a Bearer token:
Authorization: Bearer cc_test_REPLACE_MECurrent endpoints
| Method | Path | Purpose |
|---|---|---|
GET | /api/v1/catalog/presets | Read the public workflow catalog without credentials. |
GET | /api/v1/presets | List public image workflows and their input schemas. |
POST | /api/v1/assets | Upload a local image as multipart form data. |
POST | /api/v1/presets/{preset_id}/jobs | Create an asynchronous workflow job. |
GET | /api/v1/jobs/{job_id} | Read status, result, errors, and credits charged. |
POST | /api/v1/jobs/{job_id}/cancel | Cancel work that has not reached a terminal state. |
GET | /api/v1/jobs/{job_id}/result | Download the completed image. |
GET | /api/v1/account | Read available and reserved API Credits. |
Upload an image and get input_asset_id
input_asset_id is not a local path or image URL. It is the data.asset_id returned by a successful upload. The asset belongs to the current Project and expires after 24 hours.
curl "$CLEARCROWDS_API_BASE_URL/api/v1/assets" \
-X POST \
-H "Authorization: Bearer $CLEARCROWDS_API_KEY" \
-F "file=@./input.jpg"{
"success": true,
"data": {
"asset_id": "11111111-1111-4111-8111-111111111111",
"status": "ready",
"width": 1920,
"height": 1080,
"expires_at": "2026-09-05T02:00:00.000Z"
}
}Use the returned data.asset_id as input_asset_id when creating a job.
Create a job
curl "$CLEARCROWDS_API_BASE_URL/api/v1/presets/remove-crowds/jobs" \
-X POST \
-H "Authorization: Bearer $CLEARCROWDS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: example-edit-001" \
-d '{"input_asset_id":"11111111-1111-4111-8111-111111111111","input":{}}'Response envelope
{
"success": true,
"data": {
"id": "job_REPLACE_ME",
"status": "queued"
}
}The Model API catalog is generated from GET /api/v1/catalog/presets, so its IDs, schemas, availability, examples, and credit prices stay aligned with the backend.
