The Developer APIs are still in beta and may change at any time. At this stage, they are better suited to personal testing and experimentation and are not yet recommended for production use.
Playground
Transform your images with AI using text prompts. Upload a photo and describe the changes — our AI reimagines it in seconds.
POST /api/v1/image-to-image/submit → /queryAPI access is available to subscribers only. Your subscription credits are shared across the website and the API.
View plansRequired request parameter. Follow the type and accepted values shown in this table.
Optional request parameter. Follow the type, default, and accepted values shown in this table.
Optional request parameter. Follow the type, default, and accepted values shown in this table.
Optional request parameter. Follow the type, default, and accepted values shown in this table.
Optional request parameter. Follow the type, default, and accepted values shown in this table.
#!/usr/bin/env bash
set -euo pipefail
SUBMIT_RESPONSE="$(curl --fail-with-body --silent --show-error -X POST "https://vidmage.ai/api/v1/image-to-image/submit" \
-H "Authorization: Bearer ${VIDMAGE_API_KEY}" \
-H "Content-Type: application/json" \
--data-raw '{
"imageUrls": [
"https://vidmage.ai/assets/images/samples/blue-eyed-woman-sunlight.webp"
],
"prompt": "Transform the uploaded portrait into a refined watercolor illustration while preserving the face and pose",
"aspectRatio": "9:16",
"resolution": "2k",
"width": "1080",
"height": "1920"
}')"
TASK_ID="$(printf '%s' "$SUBMIT_RESPONSE" | jq -er '.["taskId"]')"
while true; do
QUERY_RESPONSE="$(curl --fail-with-body --silent --show-error -X POST "https://vidmage.ai/api/v1/image-to-image/query" \
-H "Authorization: Bearer ${VIDMAGE_API_KEY}" \
-H "Content-Type: application/json" \
--data-raw "{\"taskId\":\"${TASK_ID}\"}")"
STATUS="$(printf '%s' "$QUERY_RESPONSE" | jq -r '(.status // .data.status // "") | ascii_downcase')"
case "$STATUS" in
success|succeeded|completed)
printf '%s' "$QUERY_RESPONSE" | jq -r '(.result // .["imageUrl"] // .data["imageUrl"] // empty)'
break
;;
failed|error)
printf '%s' "$QUERY_RESPONSE" | jq -r '(.message // .error // .data.error // "Task failed")' >&2
exit 1
;;
esac
sleep 5
done