---
title: "Verify Password"
method: POST
path: "/v1/public/retrievers/{public_name}/verify"
tags: ["Public Retriever API"]
---

# Verify Password

`POST /v1/public/retrievers/{public_name}/verify`

## Request

- Base URL: `https://api.mixpeek.com`
- URL: `https://api.mixpeek.com/v1/public/retrievers/{public_name}/verify`
- Auth: none required

Verify password for a password-protected retriever.

Allows the frontend to check if a password is valid before attempting to execute
a password-protected retriever. Returns the public API key if the password is valid.

**Authentication:**
- NO authentication required - this endpoint is public
- The password is verified against the retriever's configured password

**Use Case:**
1. Frontend detects that a retriever is password-protected (from /config endpoint)
2. User enters password in the UI
3. Frontend calls this endpoint to verify the password
4. If valid, frontend receives the public_api_key to use for subsequent requests

**Response:**
- `valid`: Whether the password is correct
- `public_api_key`: The API key to use for execute/interact endpoints (only if valid)

**Example:**
```bash
curl -X POST "https://api.mixpeek.com/v1/public/retrievers/private-search/verify" \
  -H "Content-Type: application/json" \
  -d '{"password": "secret123"}'
```

**Response if valid:**
```json
{
  "valid": true,
  "public_api_key": "prk_abc123..."
}
```

**Response if invalid:**
```json
{
  "valid": false,
  "public_api_key": null
}
```

## Path parameters

- `public_name` string, required: Public name of the published retriever

## Request body

- VerifyPasswordRequest: Request to verify password for a password-protected retriever.
  - `password` string, required: The password to verify against the retriever's password

## Response `200`

Successful Response

- VerifyPasswordResponse: Response from password verification.
  - `valid` boolean, required: Whether the provided password is valid
  - `public_api_key` string, nullable: DEPRECATED: API keys are no longer required. After password verification, call the execute endpoint directly.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-09** `61a175e8eb9a`: 1 warning, 5 info
  - removed the optional property `detail` from the response with the `422` status
  - added the non-success response with the status `429`
  - added the non-success response with the status `503`
  - added the optional property `success` to the response with the `422` status
  - …2 more

[Operation history](https://skmtc.dev/mixpeek/apis/mixpeek-api/changes/v1/public/retrievers/:public_name/verify/post.md)

---

[API](https://skmtc.dev/mixpeek/apis/mixpeek-api.md) - [All operations](https://skmtc.dev/mixpeek/apis/mixpeek-api/llms.txt) - [OpenAPI document](https://skmtc.dev/mixpeek/apis/mixpeek-api/revisions/790bc16455f6?raw)
