Create task
AuthorizationBearer <token>
API key as a Bearer token (Authorization: Bearer ).
In: header
Request Body
application/json
type*string
Task type
Value in
"image.watermark"source_url*string
Public http(s) URL of the source media
Format
uriidempotency_key?string
Client key to make submission idempotent; a repeat returns the original task
Length
length <= 64params?
image.watermark parameters
webhook?string
URL notified when the task completes
Format
uriwebhook_events_filter?array<>|
Event types to deliver to the webhook (default: all)
[key: string]?never
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X POST "https://api.fotovid.co/v1/tasks" \ -H "Content-Type: application/json" \ -d '{ "type": "image.watermark", "source_url": "http://example.com" }'{
"completed_at": "2026-07-16T12:00:04Z",
"created_at": "2026-07-16T12:00:00Z",
"data_removed": false,
"error": null,
"expires_at": "2026-07-23T12:00:04Z",
"id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"metrics": {
"total_time": 3.2
},
"outputs": [
{
"kind": "video",
"url": "https://cdn.fotovid.co/sync/9f8e7d/out.mp4?X-Amz-Expires=900&X-Amz-Signature=e3b0c44298fc1c14"
}
],
"source": "api",
"started_at": "2026-07-16T12:00:01Z",
"status": "succeeded",
"task_type": "video.trim",
"urls": {
"get": "https://cdn.fotovid.co/sync/9f8e7d/out.mp4?X-Amz-Expires=900&X-Amz-Signature=e3b0c44298fc1c14"
}
}{
"code": "VALIDATION_INVALID_ARGUMENT",
"detail": "source_url is required",
"errors": [
{
"code": "VALIDATION_INVALID_ARGUMENT",
"field": "source_url",
"message": "source_url is required"
}
],
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 400,
"title": "Validation Failed",
"type": "https://api.fotovid.co/errors/validation"
}{
"code": "AUTH_UNAUTHORIZED",
"detail": "Missing or invalid API key",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 401,
"title": "Unauthorized",
"type": "https://api.fotovid.co/errors/authentication"
}{
"code": "INSUFFICIENT_CREDITS",
"detail": "Not enough credits to run this task",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 402,
"title": "Payment Required",
"type": "https://api.fotovid.co/errors/payment"
}{
"code": "RESOURCE_CONFLICT",
"detail": "A request with this Idempotency-Key is already in progress",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 409,
"title": "Conflict",
"type": "https://api.fotovid.co/errors/conflict"
}{
"code": "REQUEST_BODY_TOO_LARGE",
"detail": "The request body exceeds the maximum allowed size",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 413,
"title": "Payload Too Large",
"type": "https://api.fotovid.co/errors/too-large"
}{
"code": "CONTENT_TYPE_UNSUPPORTED",
"detail": "The source media type is not supported",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 415,
"title": "Unsupported Media Type",
"type": "https://api.fotovid.co/errors/unsupported-media-type"
}{
"code": "RATE_LIMIT_EXCEEDED",
"detail": "Rate limit exceeded; retry after the indicated delay",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 429,
"title": "Too Many Requests",
"type": "https://api.fotovid.co/errors/rate-limit"
}{
"code": "INTERNAL",
"detail": "An internal error occurred",
"instance": "/v1/tasks",
"request_id": "01JR3F5Z0M8W2K9YQ7B4C6D8E0",
"status": 500,
"title": "Internal Server Error",
"type": "https://api.fotovid.co/errors/internal"
}