Skip to content

Vault

The Civitai Vault is a personal collection of model versions kept on behalf of a paid member. It survives even if the original model is deleted from the site, so creators can keep using resources they relied on.

Membership required

All vault endpoints require an active Civitai membership (bronze, silver, gold, or founder). Free-tier callers get a 200 response with {"vault": null} — there is no 403 to distinguish "no membership" from "empty vault". Check GET /me for the caller's tier if you need to gate ahead of time.

Authentication

All vault endpoints require a Civitai API token. Pass it as Authorization: Bearer <token>. See Authentication.

Get or create the vault

GET /api/v1/vault/get

Returns the caller's vault, creating one on first call.

Response

json
{
  "vault": {
    "userId": 12345,
    "storageKb": 1048576,
    "usedStorageKb": 6775430,
    "meta": {},
    "updatedAt": "2025-04-01T08:30:00.000Z"
  }
}
FieldDescription
userIdVault owner's user ID. Doubles as the vault's primary key.
storageKbTotal storage allowance, derived from the user's active membership(s).
usedStorageKbSum of modelSizeKb + detailsSizeKb + imagesSizeKb across all items.
metaFree-form metadata bag. Reserved for future use.
updatedAtWhen the vault row last changed.

Free-tier callers get {"vault": null} instead.

Example

bash
curl -H "Authorization: Bearer $CIVITAI_TOKEN" \
  "https://civitai.com/api/v1/vault/get"
GET

List vault items

GET /api/v1/vault/all

Paginated list of model versions in the caller's vault.

Query parameters

NameTypeDefaultDescription
limitinteger (1–200)60Items per page.
pageinteger11-indexed page number.
querystringCase-insensitive substring match against modelName, versionName, and creatorName.
typescomma-separated ModelType valuese.g. Checkpoint,LORA.
categoriescomma-separated stringsFilter by category.
baseModelscomma-separated stringse.g. SDXL 1.0,Flux.1 D.
dateCreatedFrom / dateCreatedToISO dateBound the underlying model version's createdAt.
dateAddedFrom / dateAddedToISO dateBound when the item was added to the vault.
sortenumRecently AddedOne of Recently Added, Recently Created, Model Name, Model Size. URL-encode the space.

Response

json
{
  "items": [
    {
      "id": 9876,
      "vaultId": 12345,
      "status": "Stored",
      "modelVersionId": 2514310,
      "modelId": 827184,
      "modelName": "WAI-illustrious-SDXL",
      "versionName": "v16.0",
      "creatorId": 67890,
      "creatorName": "WAI",
      "type": "Checkpoint",
      "baseModel": "Illustrious",
      "category": "character",
      "modelSizeKb": 6775430,
      "detailsSizeKb": 12,
      "imagesSizeKb": 4096,
      "createdAt": "2025-04-01T08:30:00.000Z",
      "addedAt": "2025-04-01T08:30:00.000Z",
      "refreshedAt": null,
      "notes": null,
      "meta": { "failures": 0 },
      "coverImageUrl": "https://image.civitai.com/.../cover.jpeg",
      "files": [
        { "id": 2402203, "sizeKB": 6775430, "url": "https://...", "displayName": "waiIllustriousSDXL_v160.safetensors" }
      ]
    }
  ],
  "totalItems": 42,
  "currentPage": 1,
  "pageSize": 60,
  "totalPages": 1
}
FieldDescription
statusPending, Stored, or Failed. Cover image and full files are only available once Stored.
modelName / versionName / creatorNameSnapshot at vault time. Survive deletion of the original model.
coverImageUrlPre-signed URL to a cover image, or null while the item is still pending.
filesMirror of the model version's downloadable files at vault time. Each entry has id, sizeKB, url, displayName.
categoryTag-derived category. May be empty string if uncategorised.
meta.failuresCounter for ingestion retries. Diagnostic only.

Example

bash
curl -H "Authorization: Bearer $CIVITAI_TOKEN" \
  "https://civitai.com/api/v1/vault/all?limit=10&types=LORA"
GET

Check vault membership

GET /api/v1/vault/check-vault

Bulk lookup: for a list of model version IDs, return which ones the caller already has in their vault.

Query parameters

NameTypeDescription
modelVersionIdscomma-separated integersIDs to check. Required.

Response

An array, one entry per requested ID. vaultItem is null when the version isn't in the vault, otherwise it's the full vault item record (same shape as in /vault/all).

json
[
  { "modelVersionId": 2514310, "vaultItem": { "id": 9876, "...": "..." } },
  { "modelVersionId": 2402203, "vaultItem": null }
]

Example

bash
curl -H "Authorization: Bearer $CIVITAI_TOKEN" \
  "https://civitai.com/api/v1/vault/check-vault?modelVersionIds=2514310,2402203"
GET

Add or remove a model version

POST /api/v1/vault/toggle-version

Toggles a model version in the caller's vault. If it isn't there, it's added; if it is, it's removed. There's no separate add/remove endpoint — both operations go through this one.

Query parameters

NameTypeDescription
modelVersionIdintegerRequired.

Response

json
{
  "success": true,
  "vaultId": 12345
}

vaultId is omitted when the operation removed the item.

Errors

StatusCause
401Missing or invalid token.
400Missing or malformed modelVersionId.
500Storage quota exceeded, model not found, or other internal error — check error.message.

Example

bash
curl -X POST -H "Authorization: Bearer $CIVITAI_TOKEN" \
  "https://civitai.com/api/v1/vault/toggle-version?modelVersionId=2514310"

TIP

The "Try It" widget is GET-only, so this endpoint can only be exercised from a shell. Run the curl above (it's idempotent — calling it twice puts the version back).

Civitai Developer Documentation