---
title: "Register a vault and its initial labels"
method: POST
path: "/v3/curation/vaults"
tags: ["Labeling Curation"]
---

# Register a vault and its initial labels

`POST /v3/curation/vaults`

Resolves EVK, Earn, and Securitize families from indexed factory discovery; escrow registrations require `escrowedCollateralPerspective` verification. Entity registrations require current on-chain control through an entity address; ungoverned EVK registrations require prior `GovSetGovernorAdmin` history and become write-once. Product assignment is limited to same-entity EVK or Securitize vaults and must preserve a uniform governed or ungoverned product.

## Request body

- CurationVaultRequest
  - `chainId` integer, required
  - `address` string, required
  - `vaultType` 'evk' | 'earn' | 'securitize' | 'escrow' — Optional assertion checked against indexed factory discovery. The backend derives the stored type for EVK, Earn, and Securitize vaults.
  - `productId` string, nullable
  - `entityId` string, nullable — Forced to the signed-in entity for entity-member registrations. Platform administrators may set an entity explicitly.
  - `name` string, nullable
  - `description` string, nullable
  - `portfolioNotice` string, nullable
  - `isDeprecated` boolean
  - `deprecationReason` string, nullable
  - `tags` string[]
  - `campaigns` CurationCampaign[], nullable
    - `name` string, required
    - `logo` string, nullable
    - `type` 'deposit' | 'borrow', required

## Response `201`

Vault registered with its initial labels.

- object
  - `data` CurationVault, required
    - `chainId` integer, required
    - `address` string, required
    - `vaultType` 'evk' | 'earn' | 'securitize' | 'escrow', required — Vault family derived from indexed discovery or the escrow registration path.
    - `productId` string, nullable
    - `entityId` string, nullable — Entity associated through verified on-chain ownership, or null for unclaimed and escrow vaults.
    - `name` string, nullable
    - `description` string, nullable
    - `portfolioNotice` string, nullable
    - `isDeprecated` boolean, required
    - `deprecationReason` string, nullable
    - `tags` string[], required — Union of entity-managed label tags and platform-managed assessment tags.
    - `campaigns` CurationCampaign[], nullable
      - `name` string, required
      - `logo` string, nullable
      - `type` 'deposit' | 'borrow', required
    - `resolved` ResolvedVaultLabels, required — Read-time display cascade (vault label, else product, else indexed on-chain identity; escrow vaults get a fixed name). Raw fields stay authoritative for editing — this block is derived and never stored.
      - `name` string, nullable, required
      - `description` string, nullable, required
      - `portfolioNotice` string, nullable, required
      - `deprecated` boolean, required — Vault or product deprecation.
      - `deprecationReason` string, nullable, required — Reason from the nearest actively deprecated source; null when nothing is deprecated. Retained reasons on non-deprecated rows never contribute.
      - `entityId` string, nullable, required — Vault entity, inherited from the product when unset.
      - `url` string, nullable, required — Product url, falling back to the entity url.
      - `logo` string, nullable, required — Product logo, falling back to the entity logo.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `meta` PaginationMeta, required
    - `total` integer — Exact total count when the endpoint provides one.
    - `hasMore` boolean — Indicates whether another page exists beyond the current page.
    - `offset` integer
    - `limit` integer — Echoed page size after endpoint-side clamping.
    - `timestamp` string, date-time, required
    - `chainId` string — Comma-separated chain IDs for multi-chain responses.
    - `degradedProviders` string[] — Live providers whose data is incomplete in this response.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not found
- `409` — The vault is already registered, the asserted vault type differs from indexed discovery, or product governance would become mixed.
- `422` — Validation error
- `503` — Indexed discovery, current on-chain ownership, or product governance could not be verified.

---

[API](https://skmtc.dev/euler/apis/euler-data-api-v3.md) · [All operations](https://skmtc.dev/euler/apis/euler-data-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/euler/euler-data-api-v3/revisions/9573a5fbd4a6/schema)
