---
title: "Set the inbox logo (BIMI) of a sending domain"
method: POST
path: "/email-domains/{id}/bimi"
tags: ["Email"]
---

# Set the inbox logo (BIMI) of a sending domain

`POST /email-domains/{id}/bimi`

## Request

- Base URL: `https://api.hypamoon.com/api/v1`
- URL: `https://api.hypamoon.com/api/v1/email-domains/{id}/bimi`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.hypamoon.com/oauth/authorize`, token URL `https://api.hypamoon.com/oauth/token`, scopes: `sites:write`)

Sets the BIMI record default._bimi.<domain> with the logo (and the mark certificate, if the user has one). First checks that DMARC is quarantine or reject for all mail (otherwise bimi_not_ready; we never change DMARC ourselves) and that the logo is an SVG Tiny PS file mailboxes accept: version 1.2 with baseProfile tiny-ps, a <title>, square, no scripts or external files, at most 32 KB, on an https address without a redirect. When the domain's DNS is hosted here we set or update the record; otherwise record_to_add is the record to add at the DNS provider.

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `logo_url` string, required: The https address of your logo as an SVG Tiny PS file (square, with a <title>, at most 32 KB), for example on your own site.
  - `certificate_url` string: Optional: the https address of your mark certificate (VMC or CMC, a .pem file). Gmail needs one; Apple Mail needs a VMC.

## Response `200`

The record is set (or record_to_add says what to add).

- object
  - `email_domain_id` string, required
  - `domain` string, required
  - `dmarc` object, required
    - `record` string, nullable, required
    - `policy` 'none' | 'quarantine' | 'reject' | 'null', nullable, required
    - `percentage` number, required
    - `ok` boolean, required: quarantine or reject for all mail.
  - `bimi` object, required
    - `name` string, required
    - `record` string, nullable, required
    - `logo_url` string, nullable, required
    - `certificate_url` string, nullable, required
  - `ready` boolean, required
  - `dns_managed` boolean, required: The DNS is hosted here, so set_email_bimi sets the record itself.
  - `steps` string[], required
  - `note` string, required: Which mailboxes show the logo, and what they need.
  - `record_to_add` object, nullable, required: When the DNS is hosted elsewhere: the record to add there. Null when we set it.
    - `type` 'TXT', required
    - `name` string, required
    - `value` string, required

## Other responses

- `400`: Bad Request: invalid_json.
- `401`: Unauthorized: unauthorized, missing_api_key, invalid_api_key, api_key_revoked, project_deleted.
- `403`: Forbidden: project_not_enabled, key_mode_mismatch, missing_scope, verification_required.
- `404`: Not Found: not_found.
- `409`: Conflict: bimi_not_ready.
- `422`: Unprocessable Content: validation_failed.
- `429`: Too Many Requests: rate_limited.
- `500`: Internal Server Error: internal_error.
- `502`: Bad Gateway: upstream_error.
- `503`: Service Unavailable: service_unavailable.

---

[API](https://skmtc.dev/hypamoon/apis/hypamoon-api.md) · [All operations](https://skmtc.dev/hypamoon/apis/hypamoon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hypamoon/apis/hypamoon-api/revisions/9f0b90004c06?raw)
