---
title: "Re-validate a bucket"
method: POST
path: "/v1/buckets/{bucket_id}/validate"
tags: ["buckets"]
---

# Re-validate a bucket

`POST /v1/buckets/{bucket_id}/validate`

Re-run the access check on a bucket and mark it active again.

A bucket moves to `error` when Mixedbread is refused access to it, and uploads
and store creation are rejected until this probe (reachability + write/delete,
with the stored credentials) passes. A failing probe leaves the status unchanged.

Args:
    bucket_id: The ID of the bucket to re-validate.

Returns:
    Bucket: The re-validated bucket. Credentials are never returned.

## Path parameters

- `bucket_id` string, uuid, required — The ID of the bucket to re-validate

## Response `200`

The bucket, active again

- Bucket — Service-level representation of a bucket. Credentials are never returned.
  - `id` string, required — The ID of the bucket
  - `created_at` string, date-time, required — Creation time
  - `updated_at` string, date-time, required — Last update time
  - `name` string, required — Display name
  - `provider` 'aws_s3', required — Object-storage provider backing a bring-your-own bucket.
  - `bucket` string, required — The bucket name
  - `region` string, nullable, required — The bucket region
  - `endpoint_url` string, nullable, required — Custom S3-compatible endpoint
  - `prefix` string, required — Key prefix within the bucket
  - `sse_kms_key_id` string, nullable, required — KMS key id/ARN used to encrypt writes (SSE-KMS)
  - `auth_type` 'assume_role' | 'access_key', required — How omni authenticates against a customer bucket. ASSUME_ROLE is the recommended default for AWS: nothing secret is stored, every service assumes the customer's IAM role via STS on use. ACCESS_KEY remains for S3-compatible providers that have no STS.
  - `role_arn` string, nullable, required — IAM role Mixedbread assumes (auth_type=assume_role); not a secret
  - `external_id` string, nullable, required — sts:ExternalId the role's trust policy must require (auth_type=assume_role); not a secret
  - `status` 'pending' | 'active' | 'error', required — Validation lifecycle of a customer bucket.
  - `last_validated_at` string, date-time, nullable, required — When the bucket was last validated
  - `has_credentials` boolean, required — Whether secret credentials are stored (always false for assume-role buckets)
  - `credentials_version` integer, required — Increments on every credential rotation
  - `object` 'bucket' — The type of the object

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-21** `b12f43c90ba3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/mixedbread/apis/mxbai-omni/changes/v1/buckets/:bucket_id/validate/post.md)

---

[API](https://skmtc.dev/mixedbread/apis/mxbai-omni.md) · [All operations](https://skmtc.dev/mixedbread/apis/mxbai-omni/llms.txt) · [OpenAPI document](https://skmtc.dev/mixedbread/apis/mxbai-omni/revisions/824e59bfac1e?raw)
