Skip to main content

Documentation

Home Getting Started User Guides API Reference Image Processing Integration Guides Best Practices Resources Support AI Integration Playground URL Builder

Tenancy & URL Bases

On This Page

Every VIUCraft request — upload and delivery alike — is made against your own tenant subdomain: https://. Knowing this one rule is enough to build every URL correctly.

Throughout the docs we use as the placeholder for your tenant (e.g. a customer named Acme gets acme.viucraft.com) and for the UUID returned at upload.

Your subdomain is your tenant

When you sign up for a paid plan you are assigned a dedicated subdomain. It is the host for everything you do:

    1. Upload: POST https://
    2. Deliver / transform: GET https://
    3. Manage (list, delete, batch, webhooks): https://

You never need to pass your tenant as a parameter — it is the host itself. Your API key (X-API-Key) authenticates you within that tenant.

Free-tier exception

Free-tier accounts do not get a dedicated subdomain. They share the root host and namespace every URL under their account id:

Code
https://viucraft.com/free/acc_<customer_id>/<operations>/<image_id>.<ext>

That acc_ prefix is the only structural difference between free and paid URLs — everything after it (the operations and the ) follows the exact same grammar described in Delivery & Transform URL Grammar.

Discover your own subdomain

You don't have to hard-code or guess your subdomain. With just an API key you can ask the API who you are:

cURL
curl https://<subdomain>.viucraft.com/api/v1/whoami \
  -H "X-API-Key: vc_live_..."

The response includes your plan, your subdomain (or null on free tier — meaning "use the /free/acc_* form"), your account_id, the canonical base_url/image_base_url, and your full capabilities. See the API Endpoint Map for the complete list of endpoints.

SDK note: the official viucraft SDK resolves and self-heals your URL base automatically. After a plan change (e.g. paid → free, which deactivates your subdomain), client.resolveEndpoint() switches URL generation to the correct form so long-lived clients never emit dead URLs.

Was this helpful?

On This Page