> ## Documentation Index
> Fetch the complete documentation index at: https://docs.endstate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Check whether a unit can be vaulted

> Returns the brand's default vault and whether the owner can vault the item into it now, for a prompt such as "Vault this item with Alliance Vault?". Authorized by the owner's tap session token. Nothing is recorded.



## OpenAPI

````yaml /openapi.json get /v1/units/{unit_id}/vault-eligibility
openapi: 3.1.0
info:
  title: Endstate API
  version: 0.1.0
  description: Endstate developer API for chip verification and ownership workflows.
servers:
  - url: https://api2.endstate.io
    description: Production
  - url: https://api-staging.endstate.io
    description: Staging
security: []
paths:
  /v1/units/{unit_id}/vault-eligibility:
    get:
      tags:
        - Vaults
      summary: Check whether a unit can be vaulted
      description: >-
        Returns the brand's default vault and whether the owner can vault the
        item into it now, for a prompt such as "Vault this item with Alliance
        Vault?". Authorized by the owner's tap session token. Nothing is
        recorded.
      operationId: getVaultEligibility
      parameters:
        - schema:
            type: string
            format: uuid
            description: Unit id.
            example: 33333333-3333-4333-8333-333333333333
          required: true
          description: Unit id.
          name: unit_id
          in: path
      responses:
        '200':
          description: The default vault and whether the unit can go to it.
          content:
            application/json:
              example:
                vaultable: true
                vault:
                  id: 33333333-3333-4333-8333-333333333333
                  name: Alliance Vault
                request_id: null
              schema:
                $ref: '#/components/schemas/VaultEligibility'
        '400':
          description: >-
            The request was malformed or failed validation.


            | Error code | When |

            | --- | --- |

            | `validation.failed` | The request failed schema validation. See
            `error.details` for per-field issues. |
          x-error-codes:
            - validation.failed
          content:
            application/json:
              examples:
                validation.failed:
                  summary: >-
                    The request failed schema validation. See `error.details`
                    for per-field issues.
                  value:
                    error:
                      code: validation.failed
                      message: >-
                        The request failed schema validation. See
                        `error.details` for per-field issues.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/validation-failed
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: >-
            Authentication failed.


            | Error code | When |

            | --- | --- |

            | `auth.unauthorized` | Credential is missing or malformed. |

            | `session_token.invalid_or_expired` | The session token is unknown,
            expired, or has been revoked. |
          x-error-codes:
            - auth.unauthorized
            - session_token.invalid_or_expired
          content:
            application/json:
              examples:
                auth.unauthorized:
                  summary: Credential is missing or malformed.
                  value:
                    error:
                      code: auth.unauthorized
                      message: Credential is missing or malformed.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/auth-unauthorized
                session_token.invalid_or_expired:
                  summary: The session token is unknown, expired, or has been revoked.
                  value:
                    error:
                      code: session_token.invalid_or_expired
                      message: >-
                        The session token is unknown, expired, or has been
                        revoked.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: >-
                        https://docs.endstate.io/errors/session-token-invalid-or-expired
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Authenticated, but not permitted.


            | Error code | When |

            | --- | --- |

            | `auth.forbidden` | Credential is valid but does not have access to
            the requested resource or action. |

            | `session_token.wrong_chip` | The session token is bound to a
            different chip than the one in the request. |
          x-error-codes:
            - auth.forbidden
            - session_token.wrong_chip
          content:
            application/json:
              examples:
                auth.forbidden:
                  summary: >-
                    Credential is valid but does not have access to the
                    requested resource or action.
                  value:
                    error:
                      code: auth.forbidden
                      message: >-
                        Credential is valid but does not have access to the
                        requested resource or action.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/auth-forbidden
                session_token.wrong_chip:
                  summary: >-
                    The session token is bound to a different chip than the one
                    in the request.
                  value:
                    error:
                      code: session_token.wrong_chip
                      message: >-
                        The session token is bound to a different chip than the
                        one in the request.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/session-token-wrong-chip
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            The resource does not exist within your organization.


            | Error code | When |

            | --- | --- |

            | `not_found.resource` | The requested resource does not exist
            within your organization. |

            | `unit.not_found` | The unit ID does not exist in your
            organization. |
          x-error-codes:
            - not_found.resource
            - unit.not_found
          content:
            application/json:
              examples:
                not_found.resource:
                  summary: >-
                    The requested resource does not exist within your
                    organization.
                  value:
                    error:
                      code: not_found.resource
                      message: >-
                        The requested resource does not exist within your
                        organization.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/not-found-resource
                unit.not_found:
                  summary: The unit ID does not exist in your organization.
                  value:
                    error:
                      code: unit.not_found
                      message: The unit ID does not exist in your organization.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/unit-not-found
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: |-
            Too many requests.

            | Error code | When |
            | --- | --- |
            | `rate_limit.exceeded` | Per-key rate limit exceeded. |
          x-error-codes:
            - rate_limit.exceeded
          content:
            application/json:
              examples:
                rate_limit.exceeded:
                  summary: Per-key rate limit exceeded.
                  value:
                    error:
                      code: rate_limit.exceeded
                      message: Per-key rate limit exceeded.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/rate-limit-exceeded
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Something went wrong on our end.


            | Error code | When |

            | --- | --- |

            | `internal.error` | An unexpected server error occurred. Retry with
            exponential backoff and include `request_id` in any support request.
            |
          x-error-codes:
            - internal.error
          content:
            application/json:
              examples:
                internal.error:
                  summary: >-
                    An unexpected server error occurred. Retry with exponential
                    backoff and include `request_id` in any support request.
                  value:
                    error:
                      code: internal.error
                      message: >-
                        An unexpected server error occurred. Retry with
                        exponential backoff and include `request_id` in any
                        support request.
                      request_id: req_8e1a7f50-90ab-4cde-f012-3456789abcde
                      doc_url: https://docs.endstate.io/errors/internal-error
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - SessionTokenBearer: []
components:
  schemas:
    VaultEligibility:
      type: object
      properties:
        vaultable:
          type: boolean
          description: >-
            Whether the owner can vault the item into `vault` now: the unit is
            issued, its collection is active, it is not vaulted and has no open
            vault request, and the vault takes new items. Ownership is checked
            when the owner approves.
          example: true
        vault:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
              description: The vault's id. Pass it when vaulting the item.
            name:
              type: string
          required:
            - id
            - name
          description: >-
            The brand's default vault, where a vaulted item goes. Null when the
            brand has none that takes new items.
        request_id:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            The item's vault request while its owner can still cancel it, so a
            page finds it again after a reload. Null when there is none,
            including once the item is vaulted.
          example: null
      required:
        - vaultable
        - vault
        - request_id
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              anyOf:
                - $ref: '#/components/schemas/ErrorCode'
                - type: string
              description: >-
                Stable, namespaced error code. The `ErrorCode` catalogue lists
                every code defined today; handle an unrecognized value as a
                generic failure rather than throwing, since codes are added over
                time.
              example: chip.not_found
            message:
              type: string
              description: >-
                Human-readable description, for logs and debugging. Wording may
                change without notice - never parse or match against it.
              example: Chip not found
            request_id:
              type: string
              description: >-
                Identifier for this request, matching the `X-Request-Id`
                response header. Log it and include it in any support request.
              example: req_8e1a7f50-90ab-4cde-f012-3456789abcde
            doc_url:
              type: string
              description: Documentation page for this error code.
              example: https://docs.endstate.io/errors/chip-not-found
            details:
              $ref: '#/components/schemas/ValidationErrorDetails'
          required:
            - code
            - message
            - request_id
            - doc_url
      required:
        - error
      description: >-
        Every error response, regardless of endpoint or HTTP status, uses this
        envelope.
    ErrorCode:
      type: string
      enum:
        - environment.conflict
        - environment.invalid_configuration
        - organization.changed
        - validation.failed
        - auth.unauthorized
        - auth.forbidden
        - session_token.invalid_or_expired
        - session_token.wrong_chip
        - wallet_session.invalid_or_expired
        - not_found.resource
        - rate_limit.exceeded
        - chip.not_found
        - chip.invalid_e_value
        - chip.already_scanned
        - quota.exceeded
        - chip.not_a_test_chip
        - unit.not_found
        - unit.already_exists
        - unit.not_minted
        - collection.not_found
        - collection.already_exists
        - collection.not_active
        - collection_backfill.blocked
        - organization.not_found
        - chip.already_paired
        - chip.key_unusable
        - chip.mac_required
        - chip.bulk_mixed_collections
        - chip.bulk_pending
        - unit.issuance_pending
        - claim.owner_unknown
        - claim.already_to_recipient
        - claim.in_progress
        - claim.locked
        - claim.unit_vaulted
        - claim.unit_held
        - claim.tap_required
        - claim.not_found
        - chip_replacement.locked
        - chip_replacement.in_progress
        - chip_replacement.not_found
        - transfer.owner_unknown
        - transfer.already_to_recipient
        - transfer.in_progress
        - transfer.not_found
        - submission.not_executable
        - vault.not_found
        - vault.already_exists
        - vault.provisioning_failed
        - vault.not_permitted
        - vault.unavailable
        - vault.challenge_invalid
        - vault.address_in_use
        - vault.key_conflict
        - vault.signer_unauthorized
        - vault_connection.not_found
        - vault_connection.not_active
        - vault_connection.already_exists
        - vault_connection.conflict
        - vault.in_progress
        - vault.owner_changed
        - vault.request_not_found
        - vault.request_not_pending
        - vault.consent_invalid
        - vault.consent_used
        - vault.consent_outdated
        - vault.request_rejected
        - vault.request_expired
        - vault.reference_taken
        - idempotency.key_conflict
        - idempotency.in_progress
        - internal.error
        - webhook_endpoint.not_found
        - webhook_endpoint.deleted
        - webhook_endpoint.limit_reached
        - webhook_endpoint.url_refused
        - webhook_endpoint.signing_unavailable
        - webhook_event_type.unknown
        - webhook_event.not_found
        - webhook_endpoint.disabled
        - webhook_delivery.in_progress
        - webhook_endpoint.not_subscribed
      description: >-
        Stable, namespaced error code in `<resource>.<reason>` form. Branch on
        this rather than on `message` or the HTTP status. This is the catalogue
        as of this spec revision, not a closed set - see
        `ErrorResponse.error.code`.
      example: chip.not_found
    ValidationErrorDetails:
      type: object
      properties:
        formErrors:
          type: array
          items:
            type: string
          description: Issues that apply to the request as a whole rather than one field.
          example: []
        fieldErrors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Validation issues keyed by the field that failed.
          example:
            name:
              - 'Invalid input: expected string, received undefined'
      required:
        - formErrors
        - fieldErrors
      description: Per-field validation detail. Present only on `validation.failed`.
  securitySchemes:
    SessionTokenBearer:
      type: http
      scheme: bearer
      bearerFormat: end_sess
      description: >-
        Use `Authorization: Bearer end_sess_*` for V2 browser session tokens
        (e.g. `end_sess_ZW5kc3RhdGUtZXhhbXBsZS1zZXNzaW9uLXRva2VuAAA`).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.