Documentation Index

Fetch the complete documentation index at: https://cloudinary.com/documentation/llms.txt

Use this file to discover all available pages before exploring further.

Image & Video APIs

Claimable Cloud API reference

Last updated: Aug-03-2026

A Claimable Cloud is a working Cloudinary environment that an AI agent can provision on a user's behalf, with no signup and no existing credentials. The returned credentials work immediately, media delivery is restricted to the IP addresses supplied at provisioning, and the cloud expires at the end of the 24-hour claim window unless the user claims it.

For the full agent onboarding flow, see Agents: start here.

Provision a Claimable Cloud

The fastest way to provision a Claimable Cloud is the CLI that wraps the REST API. A single command, with no arguments and no authentication, provisions the cloud, saves the credentials as CLOUDINARY_URL in the project's .env file (creating the file if needed), and prints the claim URL and next steps. The claim URL and expiry time are saved to .env as well, so they survive lost terminal output:

By default, media delivery is locked to the public IP address the command runs from. Use the options to change that and more:

Option Description
--ip <address> Lock media delivery to a specific viewer IP address instead of the caller's. Repeat the option to allow up to three addresses.
--email <address> Pre-fill the claim page with the user's email address. The address isn't verified at creation.
--force Replace an existing CLOUDINARY_URL line in .env. Without this option, the command exits without provisioning if .env already contains one, so a rate-limited Claimable Cloud isn't wasted.
--no-env Print the credentials without writing to .env.
--json Output the raw API response for programmatic use.

The command never opens a browser, and it warns if .env isn't ignored by version control.

Call the API directly

To provision a Claimable Cloud without the CLI, send a POST request to the provisioning endpoint. You don't need to authenticate.

Pass the parameters as a JSON body:

Request parameters

Parameter Type Required Description
delivery_ips Array of strings Yes One to three public IP addresses (IPv4 or IPv6) that media delivery from the Claimable Cloud is allowed from. Delivery is locked to these addresses until the cloud is claimed, so choose the addresses where the media will actually be viewed. Pass the literal string requester_ip to use the calling machine's public IP address, the right choice when the agent runs on the same machine where the media will be viewed. Each entry must be a single public IP address: CIDR ranges and private, LAN, or loopback addresses aren't accepted.
email String No Email address of the user who will claim the cloud. Pre-fills the claim page; the user confirms or corrects it when claiming, and it isn't verified until then. If omitted, the user enters their email at the claim page.

Response

A successful request returns the Claimable Cloud's details, the new product environment's credentials, the expiry time, the claim URL, and a guidance block that tells the agent what to do next.

Field Type Description
id String The unique ID of the Claimable Cloud.
email String The email address associated with the Claimable Cloud. If no email was supplied at provisioning, this is a non-routable placeholder address, replaced by the user's real address at claim.
expires_at String The time at which the Claimable Cloud expires if it isn't claimed, in ISO 8601 format.
delivery_ips Array The public IP addresses that media delivery from the Claimable Cloud is allowed from.
product_environments Array The product environments created with the Claimable Cloud. Always contains exactly one entry.
product_environments[].external_id String The external ID of the product environment.
product_environments[].cloud_name String The cloud name of the product environment.
product_environments[].api_key String The product environment's API key.
product_environments[].api_secret String The product environment's API secret. Treat this value as sensitive.
product_environments[].api_environment_variable String The CLOUDINARY_URL value to use when calling Cloudinary APIs. This value includes the API secret, so treat it as sensitive.
claim_url String The URL where the user claims the cloud. The agent shares this with the user.
guidance String A Markdown block that guides the agent through the claim step and SDK setup.

Important
The returned API key and secret work right away, but the Claimable Cloud and everything in it expire if the user doesn't claim it within the 24-hour claim window. The expires_at field gives the exact expiry time.

Delivery IP restriction

Until the cloud is claimed, media delivery is restricted to the IP addresses in delivery_ips: requests from any other address are blocked at the CDN edge. Uploads, transformations, and API calls aren't restricted; only delivery of the resulting media is.

Because of this, the delivery_ips values should be the public IP addresses of the machines where the media will actually be viewed, which aren't always where the agent runs. If the agent runs on the user's machine, requester_ip is the right choice. If the agent runs elsewhere, for example in a CI job or a cloud runtime, and the user views the media from their laptop or a preview deployment, the agent should pass the viewer's public IP address instead; otherwise the media won't load for the user, even though uploads and transformations succeed.

Claiming the cloud removes the restriction, and media delivery works globally from then on.

Claimable Cloud limits

The Claimable Cloud is limited by time and quota: it expires if it isn't claimed within 24 hours of provisioning (the exact time is returned as expires_at and saved to .env by the CLI), and its usage caps are lower than those of a regular free account. Claiming converts it to a free Cloudinary account with the free plan's regular limits.

Claim the cloud

The user claims the cloud at the returned claim_url: they enter their email address (pre-filled if the agent supplied one at provisioning), review the privacy policy and terms of service, optionally set a password for signing in to the Console, and confirm from the verification email. Submitting the claim form extends the claim window, so a claim in progress doesn't expire. If the address already belongs to another Cloudinary account, the claim page shows an error and the user can enter a different address.

Claiming turns the Claimable Cloud into a free Cloudinary account with the verified email as its primary address:

  • The cloud name, API key, and API secret stay the same, so anything the agent built against the Claimable Cloud keeps working, and all uploaded assets are retained.
  • The delivery IP restriction is removed, so media delivery works globally.

Until the claim completes, no terms are accepted and no payment method is attached. An unclaimed cloud expires at the end of the 24-hour claim window, and Cloudinary deletes it and everything in it. An expired claim URL can't be recovered: the agent provisions a new cloud instead.

Errors

Errors return an error object with a category and a message. Some errors also include a machine-readable code:

Status Code Condition
400 delivery_ips_required The delivery_ips parameter is missing.
400 delivery_ips_too_many More than three IP addresses were supplied.
400 delivery_ips_invalid An entry isn't a valid single IP address, for example a CIDR range.
400 delivery_ips_not_public An entry is a private, LAN, or loopback address.
403 agent_registration_disabled Claimable Cloud provisioning is currently disabled.
403 geo_location_not_permitted The request came from a location where provisioning isn't permitted.
403 None Cloudinary's abuse controls blocked the request. The message is intentionally generic.
429 ip_rate_limit_exceeded Too many provisioning requests from the same IP address. Retry later.
429 global_rate_limit_exceeded Cloudinary's overall provisioning limit was reached. Retry later.

API stability

Some details of this API may change over time. It's designed as a one-off call that an agent makes to provision a Claimable Cloud, not an API to integrate against in code, so in practice any changes shouldn't affect you. Once claimed, a Claimable Cloud behaves the same as any other Cloudinary account and won't change.

Important
We invite you to share any feedback via our support team.

Related topics

✔️ Feedback sent!

Rate this page:

one star two stars three stars four stars five stars