Direct HTTP API
Use HTTP when you want to call SorryAssets without opening the desktop app.
Contract
- Base URL:
https://sorryassets.com. - Auth header for spend and task endpoints:
Authorization: Bearer sa_your_key. - Discovery endpoints are public:
GET /v1/catalog,GET /v1/pricing,GET /v1/skills,GET /v1/skills/:id. - Generation endpoints require an account key:
POST /v1/estimate,POST /v1/generate,GET /v1/task/:taskRef. - Asset delivery:
GET /v1/asset/:taskRef.
Flow
- Discover available capabilities and models.
- Estimate before spending.
- Submit a generation task.
- Poll until the task is terminal.
- Download the output promptly.
API_BASE="https://sorryassets.com"
curl "$API_BASE/v1/catalog"
curl -X POST "$API_BASE/v1/estimate" \
-H "Authorization: Bearer sa_your_key" \
-H "Content-Type: application/json" \
-d '{
"capability": "image.generate",
"provider": "gemini",
"model": "gemini-3.1-flash-image",
"params": {
"inputs": [],
"values": {
"prompt": "a product photo of a lime green studio headset",
"size": "1024x1024"
}
}
}'
CLIENT_EDGE_ID="$(uuidgen)"
curl -X POST "$API_BASE/v1/generate" \
-H "Authorization: Bearer sa_your_key" \
-H "Content-Type: application/json" \
-d '{
"projectId": "api-demo",
"capability": "image.generate",
"provider": "gemini",
"model": "gemini-3.1-flash-image",
"clientEdgeId": "'"$CLIENT_EDGE_ID"'",
"params": {
"inputs": [],
"values": {
"prompt": "a product photo of a lime green studio headset",
"size": "1024x1024"
}
}
}'
TASK_REF="sa-task-ref-from-generate"
curl "$API_BASE/v1/task/$TASK_REF" \
-H "Authorization: Bearer sa_your_key"
Delivery rule
SorryAssets delivers assets, it does not host a cloud library of user generations. The backend never exposes upstream URLs. A successful task returns a SorryAssets outputUrl while the upstream content is still available.
Download the output into your own project or pipeline when the task succeeds.
OpenAI-compatible image and video endpoint families are the GA target, not the Developer Preview contract today.