sendly-now · Schema
DomainLogoReadinessV1
How ready a sending domain is to show its logo as the inbox avatar, per step and per inbox. Backed by public DNS and the customer's own web hosts, so a reading is held for a minute.
EmailAPITransactional EmailMarketing CampaignsWorkflow AutomationAI IntegrationDeveloper Platform
Properties
| Name | Type | Description |
|---|---|---|
| checked_at | string | When the lookups ran. A reading is held for a minute, so this can be up to a minute old; a fix to DNS shows after that. |
| domain | string | |
| domain_id | string | |
| items | array | `dmarc_enforced`: DMARC at p=quarantine or p=reject, pct=100, on the sending host and on its registered domain. `bimi_record`: a `default._bimi` TXT record whose `l=` is an https URL. `logo_file`: the |
| providers | array | One checklist per inbox, in the order the steps should be done. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/sendly-now/json-schema/sendly-now-domain-logo-readiness-v1-schema.json",
"title": "DomainLogoReadinessV1",
"description": "How ready a sending domain is to show its logo as the inbox avatar, per step and per inbox. Backed by public DNS and the customer's own web hosts, so a reading is held for a minute.",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/sendly-now-openapi.json#/components/schemas/DomainLogoReadinessV1",
"properties": {
"checked_at": {
"description": "When the lookups ran. A reading is held for a minute, so this can be up to a minute old; a fix to DNS shows after that.",
"format": "date-time",
"type": "string"
},
"domain": {
"type": "string"
},
"domain_id": {
"format": "uuid",
"type": "string"
},
"items": {
"description": "`dmarc_enforced`: DMARC at p=quarantine or p=reject, pct=100, on the sending host and on its registered domain. `bimi_record`: a `default._bimi` TXT record whose `l=` is an https URL. `logo_file`: the file at `l=` is SVG Tiny PS (the file Sendly serves is always checked as served). `mark_certificate`: the record's `a=` URL answers with a PEM certificate (VMC or CMC); only that is checked, not the certificate chain. `gmail_profile_photo` and `apple_branded_mail`: routes that need no BIMI record and are set up with the provider, so they are always `unknown` (or `not_applicable`) and never `met`.",
"items": {
"properties": {
"evidence": {
"description": "What was read (a record name and its value, a URL and what it answered), to compare with what you published.",
"type": [
"string",
"null"
]
},
"key": {
"enum": [
"dmarc_enforced",
"bimi_record",
"logo_file",
"mark_certificate",
"gmail_profile_photo",
"apple_branded_mail"
],
"type": "string"
},
"reason": {
"description": "Plain English. Null when `status` is `met`; otherwise what is wrong, or why it cannot be checked.",
"type": [
"string",
"null"
]
},
"status": {
"description": "`met`: checked just now and satisfied. `missing`: checked just now and not satisfied; `reason` says what to change. `unknown`: could not be checked, either because a lookup failed (check again shortly) or because the step is self-attested with the mailbox provider and invisible to us; never a pass and never a failure. `not_applicable`: depends on a step that is not done yet, or is not needed given another.",
"enum": [
"met",
"missing",
"unknown",
"not_applicable"
],
"type": "string"
},
"unlocks": {
"description": "The inboxes this step matters for.",
"items": {
"enum": [
"gmail",
"yahoo",
"apple_mail",
"fastmail"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"key",
"status",
"reason",
"unlocks",
"evidence"
],
"type": "object"
},
"type": "array"
},
"providers": {
"description": "One checklist per inbox, in the order the steps should be done.",
"items": {
"properties": {
"checklist": {
"items": {
"properties": {
"item": {
"enum": [
"dmarc_enforced",
"bimi_record",
"logo_file",
"mark_certificate",
"gmail_profile_photo",
"apple_branded_mail"
],
"type": "string"
},
"requirement": {
"description": "`required`: the inbox shows no logo without it. `optional`: helps or is accepted, and its absence does not block. `alternative`: a different route to a picture in that inbox that does not use the BIMI record.",
"enum": [
"required",
"optional",
"alternative"
],
"type": "string"
},
"status": {
"enum": [
"met",
"missing",
"unknown",
"not_applicable"
],
"type": "string"
}
},
"required": [
"item",
"requirement",
"status"
],
"type": "object"
},
"type": "array"
},
"inbox": {
"enum": [
"gmail",
"yahoo",
"apple_mail",
"fastmail"
],
"type": "string"
},
"status": {
"description": "`ready`: every `required` item is `met`. `not_ready`: a required item is missing. `unknown`: none is missing but one could not be checked. Readiness is not a promise: providers decide whether to display a logo.",
"enum": [
"ready",
"not_ready",
"unknown"
],
"type": "string"
}
},
"required": [
"inbox",
"status",
"checklist"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"domain_id",
"domain",
"checked_at",
"items",
"providers"
],
"type": "object"
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/sendly-now-domain-logo-readiness-v1"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.