#!/bin/bash
set -e
URL="https://a...content-available-to-author-only...r.ai/v1/ai-image-generator"
STATUS_URL="https://a...content-available-to-author-only...r.ai/v1/image-projects"
API_KEY="mhk_live_6obdalK0WmxuGHP0e74je44pZw3t3cvblbW31v1CLlXRyuo13sp5STNtN35mFcmJYe11KVnZ7bxn2GYf" # change to your API key
OUTPUT_PATH="output.png"
create_response=$(curl -s $URL \
--request POST \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $API_KEY" \
--data '{
"image_count": 1,
"orientation": "landscape",
"style": {
"prompt": "Epic anime art of wizard casting a cosmic spell in the sky that says \"Magic Hour\""
}
}')
project_id=$(echo $create_response | jq -r '.id')
credits_charged=$(echo $create_response | jq -r '.credits_charged')
echo "queued image with id $project_id, spent $credits_charged credits"
while true; do
status_response
=$
(curl
-s
$STATUS_URL/$project_id --header "Authorization: Bearer $API_KEY")
status=$(echo $status_response | jq -r '.status')
if [ "$status" == "complete" ]; then
echo "render complete!"
download_url=$(echo $status_response | jq -r '.downloads[0].url')
echo "downloading image from $download_url..."
curl -s $download_url -o $OUTPUT_PATH
echo "file downloaded successfully to $OUTPUT_PATH"
break
elif [ "$status" == "error" ]; then
echo "render failed"
break
else
echo "render in progress"
fi
done
IyEvYmluL2Jhc2gKc2V0IC1lCgpVUkw9Imh0dHBzOi8vYS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5haS92MS9haS1pbWFnZS1nZW5lcmF0b3IiClNUQVRVU19VUkw9Imh0dHBzOi8vYS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uci5haS92MS9pbWFnZS1wcm9qZWN0cyIKQVBJX0tFWT0ibWhrX2xpdmVfNm9iZGFsSzBXbXh1R0hQMGU3NGplNDRwWnczdDNjdmJsYlczMXYxQ0xsWFJ5dW8xM3NwNVNUTnROMzVtRmNtSlllMTFLVm5aN2J4bjJHWWYiICMgY2hhbmdlIHRvIHlvdXIgQVBJIGtleQpPVVRQVVRfUEFUSD0ib3V0cHV0LnBuZyIKCmNyZWF0ZV9yZXNwb25zZT0kKGN1cmwgLXMgJFVSTCBcCiAgLS1yZXF1ZXN0IFBPU1QgXAogIC0taGVhZGVyICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iIFwKICAtLWhlYWRlciAiQXV0aG9yaXphdGlvbjogQmVhcmVyICRBUElfS0VZIiBcCiAgLS1kYXRhICd7CiAgICAiaW1hZ2VfY291bnQiOiAxLAogICAgIm9yaWVudGF0aW9uIjogImxhbmRzY2FwZSIsCiAgICAic3R5bGUiOiB7CiAgICAgICJwcm9tcHQiOiAiRXBpYyBhbmltZSBhcnQgb2Ygd2l6YXJkIGNhc3RpbmcgYSBjb3NtaWMgc3BlbGwgaW4gdGhlIHNreSB0aGF0IHNheXMgXCJNYWdpYyBIb3VyXCIiCiAgICB9CiAgfScpCgpwcm9qZWN0X2lkPSQoZWNobyAkY3JlYXRlX3Jlc3BvbnNlIHwganEgLXIgJy5pZCcpCmNyZWRpdHNfY2hhcmdlZD0kKGVjaG8gJGNyZWF0ZV9yZXNwb25zZSB8IGpxIC1yICcuY3JlZGl0c19jaGFyZ2VkJykKCmVjaG8gInF1ZXVlZCBpbWFnZSB3aXRoIGlkICRwcm9qZWN0X2lkLCBzcGVudCAkY3JlZGl0c19jaGFyZ2VkIGNyZWRpdHMiCndoaWxlIHRydWU7IGRvCiAgICBzdGF0dXNfcmVzcG9uc2U9JChjdXJsIC1zICRTVEFUVVNfVVJMLyRwcm9qZWN0X2lkIC0taGVhZGVyICJBdXRob3JpemF0aW9uOiBCZWFyZXIgJEFQSV9LRVkiKQoKICAgIHN0YXR1cz0kKGVjaG8gJHN0YXR1c19yZXNwb25zZSB8IGpxIC1yICcuc3RhdHVzJykKCiAgICBpZiBbICIkc3RhdHVzIiA9PSAiY29tcGxldGUiIF07IHRoZW4KICAgICAgICBlY2hvICJyZW5kZXIgY29tcGxldGUhIgogICAgICAgIGRvd25sb2FkX3VybD0kKGVjaG8gJHN0YXR1c19yZXNwb25zZSB8IGpxIC1yICcuZG93bmxvYWRzWzBdLnVybCcpCgogICAgICAgIGVjaG8gImRvd25sb2FkaW5nIGltYWdlIGZyb20gJGRvd25sb2FkX3VybC4uLiIKICAgICAgICBjdXJsIC1zICRkb3dubG9hZF91cmwgLW8gJE9VVFBVVF9QQVRICgogICAgICAgIGVjaG8gImZpbGUgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHkgdG8gJE9VVFBVVF9QQVRIIgogICAgICAgIGJyZWFrCiAgICBlbGlmIFsgIiRzdGF0dXMiID09ICJlcnJvciIgXTsgdGhlbgogICAgICAgIGVjaG8gInJlbmRlciBmYWlsZWQiCiAgICAgICAgYnJlYWsKICAgIGVsc2UKICAgICAgICBlY2hvICJyZW5kZXIgaW4gcHJvZ3Jlc3MiCiAgICAgICAgc2xlZXAgMQogICAgZmkKZG9uZQ==