openapi: 3.1.0 info: title: API Reference agent inboxes API version: 1.0.0 servers: - url: https://api.agentmail.to description: prod - url: https://x402.api.agentmail.to description: prod-x402 - url: https://mpp.api.agentmail.to description: prod-mpp - url: https://api.agentmail.eu description: eu-prod tags: - name: inboxes paths: /v0/inboxes: get: operationId: list summary: List Inboxes description: '**CLI:** ```bash agentmail inboxes list ```' tags: - inboxes parameters: - name: limit in: query required: false schema: $ref: '#/components/schemas/type_:Limit' - name: page_token in: query required: false schema: $ref: '#/components/schemas/type_:PageToken' - name: ascending in: query required: false schema: $ref: '#/components/schemas/type_:Ascending' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_inboxes:ListInboxesResponse' post: operationId: create summary: Create Inbox description: '**CLI:** ```bash agentmail inboxes create --display-name "My Agent" --username myagent --domain agentmail.to ```' tags: - inboxes parameters: - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_inboxes:Inbox' '400': description: Error response with status 400 content: application/json: schema: $ref: '#/components/schemas/type_:ValidationErrorResponse' '422': description: Error response with status 422 content: application/json: schema: $ref: '#/components/schemas/type_:ErrorResponse' requestBody: content: application/json: schema: $ref: '#/components/schemas/type_inboxes:CreateInboxRequest' /v0/inboxes/{inbox_id}: get: operationId: get summary: Get Inbox description: '**CLI:** ```bash agentmail inboxes get --inbox-id ```' tags: - inboxes parameters: - name: inbox_id in: path required: true schema: $ref: '#/components/schemas/type_inboxes:InboxId' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_inboxes:Inbox' '404': description: Error response with status 404 content: application/json: schema: $ref: '#/components/schemas/type_:ErrorResponse' patch: operationId: update summary: Update Inbox description: '**CLI:** ```bash agentmail inboxes update --inbox-id --display-name "Updated Name" ```' tags: - inboxes parameters: - name: inbox_id in: path required: true schema: $ref: '#/components/schemas/type_inboxes:InboxId' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Response with status 200 content: application/json: schema: $ref: '#/components/schemas/type_inboxes:Inbox' '400': description: Error response with status 400 content: application/json: schema: $ref: '#/components/schemas/type_:ValidationErrorResponse' '404': description: Error response with status 404 content: application/json: schema: $ref: '#/components/schemas/type_:ErrorResponse' requestBody: description: Expects an object; provide at least one of `display_name` or `metadata`. content: application/json: schema: $ref: '#/components/schemas/type_inboxes:UpdateInboxRequest' delete: operationId: delete summary: Delete Inbox description: '**CLI:** ```bash agentmail inboxes delete --inbox-id ```' tags: - inboxes parameters: - name: inbox_id in: path required: true schema: $ref: '#/components/schemas/type_inboxes:InboxId' - name: Authorization in: header description: Bearer authentication required: true schema: type: string responses: '200': description: Successful response '404': description: Error response with status 404 content: application/json: schema: $ref: '#/components/schemas/type_:ErrorResponse' components: schemas: type_inboxes:MetadataValue: oneOf: - type: string - type: number format: double - type: boolean description: A metadata value. May be a string, number, or boolean. title: MetadataValue type_inboxes:CreateInboxRequest: type: object properties: username: type: string description: Username of address. Randomly generated if not specified. domain: type: string description: 'Domain of address. Must be a verified domain, or any subdomain of a verified domain that has subdomains enabled (e.g., `bot.example.com`). Defaults to `agentmail.to`.' display_name: $ref: '#/components/schemas/type_inboxes:DisplayName' client_id: $ref: '#/components/schemas/type_inboxes:ClientId' metadata: $ref: '#/components/schemas/type_inboxes:Metadata' description: Custom metadata to attach to the inbox. title: CreateInboxRequest type_inboxes:ListInboxesResponse: type: object properties: count: $ref: '#/components/schemas/type_:Count' limit: $ref: '#/components/schemas/type_:Limit' next_page_token: $ref: '#/components/schemas/type_:PageToken' inboxes: type: array items: $ref: '#/components/schemas/type_inboxes:Inbox' description: Ordered by `created_at` descending. required: - count - inboxes title: ListInboxesResponse type_inboxes:Email: type: string description: Email address of the inbox. title: Email type_inboxes:ClientId: type: string description: Client ID of inbox. title: ClientId type_pods:PodId: type: string description: ID of pod. title: PodId type_inboxes:Metadata: type: object additionalProperties: $ref: '#/components/schemas/type_inboxes:MetadataValue' description: 'Custom key-value pairs attached to the inbox. Up to 256 keys. Keys and string values are each limited to 256 characters. When updating metadata, send a key with a null value to remove that key.' title: Metadata type_:Count: type: integer description: Number of items returned. title: Count type_inboxes:Inbox: type: object properties: pod_id: $ref: '#/components/schemas/type_pods:PodId' inbox_id: $ref: '#/components/schemas/type_inboxes:InboxId' email: $ref: '#/components/schemas/type_inboxes:Email' display_name: $ref: '#/components/schemas/type_inboxes:DisplayName' client_id: $ref: '#/components/schemas/type_inboxes:ClientId' metadata: $ref: '#/components/schemas/type_inboxes:Metadata' description: Custom metadata attached to the inbox. updated_at: type: string format: date-time description: Time at which inbox was last updated. created_at: type: string format: date-time description: Time at which inbox was created. required: - pod_id - inbox_id - email - updated_at - created_at title: Inbox type_:ErrorCode: type: string description: Stable, machine-readable error code in snake_case (for example, not_found or missing_permission). Branch on this rather than the message text. title: ErrorCode type_inboxes:UpdateMetadata: type: object additionalProperties: oneOf: - $ref: '#/components/schemas/type_inboxes:MetadataValue' - type: 'null' description: 'Custom key-value pairs to merge into the inbox''s existing metadata. A value may be a string, number, boolean, or null. Setting a key to null removes it. Up to 256 keys; keys and string values are each limited to 256 characters.' title: UpdateMetadata type_inboxes:InboxId: type: string description: The ID of the inbox. title: InboxId type_:ValidationErrorResponse: type: object properties: name: $ref: '#/components/schemas/type_:ErrorName' code: $ref: '#/components/schemas/type_:ErrorCode' message: $ref: '#/components/schemas/type_:ErrorMessage' errors: description: Validation errors. Each entry has a path and a message identifying the invalid field. fix: $ref: '#/components/schemas/type_:ErrorFix' docs: $ref: '#/components/schemas/type_:ErrorDocs' required: - name - errors title: ValidationErrorResponse type_inboxes:UpdateInboxRequest: type: object properties: display_name: $ref: '#/components/schemas/type_inboxes:DisplayName' metadata: oneOf: - $ref: '#/components/schemas/type_inboxes:UpdateMetadata' - type: 'null' description: 'Metadata to merge into the inbox''s existing metadata. Keys you include are added or overwritten; keys you omit are left unchanged. To remove a single key, send it with a null value. To clear all metadata, send `metadata` as null. Sending an empty object is rejected; use null to clear. Each update must include at least one of `display_name` or `metadata`.' title: UpdateInboxRequest type_:ErrorFix: type: string description: The concrete next action that resolves the error. title: ErrorFix type_:ErrorMessage: type: string description: Error message. title: ErrorMessage type_:Limit: type: integer description: Limit of number of items returned. title: Limit type_:PageToken: type: string description: Page token for pagination. title: PageToken type_:ErrorName: type: string description: Name of error. title: ErrorName type_:ErrorDocs: type: string description: Link to the error reference entry for this code. title: ErrorDocs type_inboxes:DisplayName: type: string description: 'Display name: `Display Name `.' title: DisplayName type_:ErrorResponse: type: object properties: name: $ref: '#/components/schemas/type_:ErrorName' code: $ref: '#/components/schemas/type_:ErrorCode' message: $ref: '#/components/schemas/type_:ErrorMessage' fix: $ref: '#/components/schemas/type_:ErrorFix' docs: $ref: '#/components/schemas/type_:ErrorDocs' required: - name - message title: ErrorResponse type_:Ascending: type: boolean description: Sort in ascending temporal order. title: Ascending securitySchemes: Bearer: type: http scheme: bearer