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:
- Upload:
POST https:// - Deliver / transform:
GET https:// - 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:
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 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.