ClearCrowds

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_ME

Current endpoints

MethodPathPurpose
GET/api/v1/catalog/presetsRead the public workflow catalog without credentials.
GET/api/v1/presetsList public image workflows and their input schemas.
POST/api/v1/assetsUpload a local image as multipart form data.
POST/api/v1/presets/{preset_id}/jobsCreate an asynchronous workflow job.
GET/api/v1/jobs/{job_id}Read status, result, errors, and credits charged.
POST/api/v1/jobs/{job_id}/cancelCancel work that has not reached a terminal state.
GET/api/v1/jobs/{job_id}/resultDownload the completed image.
GET/api/v1/accountRead 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.