---
title: "Sign up as an agent"
method: POST
path: "/v1/signup/agent"
tags: ["Signup"]
---

# Sign up as an agent

`POST /v1/signup/agent`

## Request

- Base URL: `https://api.mixpeek.com`
- URL: `https://api.mixpeek.com/v1/signup/agent`
- Auth: none required

Create a Mixpeek organization and API key without a browser. Send the email of the person you work for and accept_terms=true. The response carries a working API key (shown once), a namespace with a bucket, a collection and a retriever, and the calls that take a file to a search result. The email owner gets one email: confirming keeps the key, otherwise it expires 72 hours after signup, and blocking revokes it and refuses later agent signups for that email. One pending signup per email; limited per IP address per hour.

## Request body

- AgentSignupRequest: What an agent sends to get its own API key.
  - `email` string, email, required: Email of the person the agent works for. They get one email with a link to keep the key and a link to block it. Until they confirm, the key expires 72 hours after signup.
  - `agent_name` string, nullable: Name of the agent or tool signing up, shown in that email.
  - `accept_terms` boolean, required: Must be true: the email owner's use is governed by https://mixpeek.com/terms.

## Response `200`

Successful Response

- AgentSignupResponse: The key and workspace an agent gets back. The key is shown only here.
  - `api_key` string, required: Send as 'Authorization: Bearer <api_key>'. Returned once; Mixpeek stores only its hash.
  - `key_expires_at` string, date-time, nullable, required: When the key stops working unless the email owner confirms.
  - `status` string, required: pending_confirmation until the email owner confirms.
  - `confirmation_sent_to` string, required: The email that was sent.
  - `organization_id` string, required: The new organization.
  - `namespace` string, required: Send as the 'X-Namespace' header. It holds a bucket, a collection and a retriever, ready to index and search.
  - `namespace_id` string, nullable: Namespace id, or null if it is still being created.
  - `bucket` string, required: Bucket to upload files into.
  - `retriever` string, required: Retriever to search with.
  - `credits` integer, required: Credits the organization starts with.
  - `next_steps` string[], required: The calls that take a file to a search result.
  - `docs_url` string, required: Full API reference.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: The email owner blocked agent signups.
- `404`: Not Found
- `409`: This email already has a signup waiting for confirmation.
- `422`: accept_terms is not true, or the email is disposable.
- `429`: Too many signups from this IP address this hour.
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-18** `62302d591b8e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/mixpeek/apis/mixpeek-api/changes/v1/signup/agent/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)
