Domains

Upload a sending domain's sender logo

Replace the identity's logo with an SVG. The file is rebuilt into the SVG Tiny PS profile mailboxes require: editor bookkeeping and unsupported attributes are dropped, and the result is what the URL serves. It must be square, draw with shapes rather than <text> (convert text to outlines), reference nothing outside itself, and come to at most 32 KB once rebuilt. A file that cannot be rebuilt answers 422 validation_error with a detail naming what to change, and the previous logo stays in place.

A mailbox that supports BIMI shows this logo beside mail from the identity, once two DNS records are in place: a default._bimi.<host> TXT record naming the logo's URL (returned as bimi_record), and a DMARC policy of p=quarantine or p=reject applied to all mail. readiness is a fresh reading of both from public DNS. Providers decide whether to display a logo, so DNS readiness alone does not guarantee display. Gmail additionally requires a VMC or CMC certificate, which Sendly neither issues nor checks.

The URL is keyed by the identity and never changes, so the record is published once. Until a logo is uploaded it serves a default: the domain's initial on a coloured square. It serves nothing (serving is false) until the identity verifies, and nothing while the project is disabled.

Requires the domains:write scope — Add and remove sending domains, and trigger verification.

put/api/v1/domains/{id}/logo

Request

  • Base URL: https://api.sendly.now
  • URL: https://api.sendly.now/api/v1/domains/{id}/logo
  • Auth: one of:
    • HTTP bearer
    • API key in cookie better-auth.session_token
    • OAuth 2 (authorization code, authorization URL https://app.sendly.now/api/auth/oauth2/authorize, token URL https://app.sendly.now/api/auth/oauth2/token, scopes: domains:write)

Path parameters

idstring uuid required

Resource id.

Request body

svgstring required

The logo as SVG source text, square, at most 64 KB. It is rebuilt into SVG Tiny PS — the profile BIMI requires — before it is stored; a file that cannot be (text not converted to outlines, a raster image, a <style> sheet, a canvas that is not square, over 32 KB once cleaned) is refused with a message naming what to change.

Response

The identity's sender logo, now the uploaded file

domain_idstring uuid required
png_urlstring uri

The same logo as a 1024x1024 PNG, for the places that take no SVG (a Google account's profile photo, Apple Branded Mail). Served under the same rules as url.

servingboolean required

Whether url answers today. It answers only once the identity has verified.

sha256string required
size_bytesinteger required
source'uploaded' | 'default' required

default is a monogram of the domain's initial, served until a logo is uploaded and again after one is removed.

svgstring required

The SVG Tiny PS file url serves.

updated_atstring date-time nullable required

When the upload was stored; null for default.

urlstring uri required

Where the logo is served. Stable for the life of the identity, so the BIMI record is published once and a new upload needs no DNS change.

Changes

No recorded changes to this operation across all 1 revision of this API.