curl --request PUT \
--url https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media \
--header 'Content-Length: <content-length>' \
--header 'Content-Type: image/jpeg' \
--header 'x-api-key: <api-key>' \
--data '<string>'const options = {
method: 'PUT',
headers: {
'Content-Length': '<content-length>',
'x-api-key': '<api-key>',
'Content-Type': 'image/jpeg'
},
body: '<string>'
};
fetch('https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media"
payload = "<string>"
headers = {
"Content-Length": "<content-length>",
"x-api-key": "<api-key>",
"Content-Type": "image/jpeg"
}
response = requests.put(url, data=payload, headers=headers)
print(response.text){}{}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}Transfer reserved creative bytes
PUT the exact reserved bytes with the reserved Content-Type and Content-Length using an authenticated Bily customer API key with write permission (or the same creator’s Bily session). An OAuth MCP grant alone does not authenticate this byte transfer. Use only the returned customer uploadUrl; do not construct or log private transport capabilities. JPEG/PNG/WebP images are at most 15 MiB; MP4/MOV/WebM videos are at most 95 MiB. Bily verifies measured media before marking ready. A ready upload is a library asset, not a published ad.
curl --request PUT \
--url https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media \
--header 'Content-Length: <content-length>' \
--header 'Content-Type: image/jpeg' \
--header 'x-api-key: <api-key>' \
--data '<string>'const options = {
method: 'PUT',
headers: {
'Content-Length': '<content-length>',
'x-api-key': '<api-key>',
'Content-Type': 'image/jpeg'
},
body: '<string>'
};
fetch('https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.bily.ai/api/customer/v1/creative-intelligence/{storeUrl}/uploads/{uploadId}/media"
payload = "<string>"
headers = {
"Content-Length": "<content-length>",
"x-api-key": "<api-key>",
"Content-Type": "image/jpeg"
}
response = requests.put(url, data=payload, headers=headers)
print(response.text){}{}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}{
"error": "Store not found",
"requestId": "<string>",
"details": "<unknown>",
"retryAfter": "<string>"
}Authorizations
A server-side Bily API key created under Settings > AI tools > Access keys. Select the intended workspace before creating it.
Headers
An organization ID returned by GET /context or GET /organizations. Omit it when a scoped key supplies the organization. Otherwise provide it when no organization is selected.
"org_01J8W7T9G3E6ZQ4M2K5N8P1R0S"
1 <= x <= 99614720Path Parameters
Exact workspace URL returned by GET /context.
Identifier returned by the matching Bily read or creation operation.
Body
The body is of type file.
Response
Read the returned identifier until processing reaches a terminal state. Acceptance alone does not confirm completion.
The response is of type object.