VitrinaAPI

Verify your sending domain

A workspace's own domain for sending email campaigns.

POST /sending-domains creates the workspace's sending identity at the mail provider. There's no shared fallback domain: to send campaigns you need your own. The response carries the DNS records to publish at your registrar, the DKIM CNAMEs and the MAIL FROM MX/TXT pair.

This resource is channel infrastructure and costs the same scope as connecting a channel. Reading needs messaging_accounts:read; writing, messaging_accounts:write.

Create a domain

curl -X POST https://api.vitrinadev.com/api/v1/sending-domains \
  -H "Authorization: Bearer $VITRINA_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "mail.autosdelvalle.cl" }'
{
  "data": {
    "id": "d9d9d9d9-0000-4000-8000-000000000001",
    "domain": "mail.autosdelvalle.cl",
    "dkim_status": "pending",
    "mail_from_domain": "bounce.mail.autosdelvalle.cl",
    "mail_from_status": "pending",
    "verified_for_sending": false,
    "tracking_domain": "click.mail.autosdelvalle.cl",
    "tracking_ready": false,
    "records": [
      { "type": "CNAME", "name": "ab12cd34ef56gh78._domainkey.mail.autosdelvalle.cl", "value": "ab12cd34ef56gh78.dkim.amazonses.com" },
      { "type": "MX", "name": "bounce.mail.autosdelvalle.cl", "value": "10 feedback-smtp.us-east-1.amazonses.com" },
      { "type": "TXT", "name": "bounce.mail.autosdelvalle.cl", "value": "v=spf1 include:amazonses.com ~all" }
    ]
  }
}

Every status field starts at pending. records comes back only on the create response, and it's the list to copy to the domain's registrar.

Verify

Once the DNS records are published, and after they propagate (which can take hours):

curl -X POST https://api.vitrinadev.com/api/v1/sending-domains/d9d9d9d9-0000-4000-8000-000000000001/verify \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "id": "d9d9d9d9-0000-4000-8000-000000000001",
    "domain": "mail.autosdelvalle.cl",
    "dkim_status": "verified",
    "mail_from_status": "verified",
    "verified_for_sending": true,
    "tracking_ready": true,
    "last_checked_at": "2026-09-15T18:20:00.000Z"
  }
}

There's no webhook for this. The provider doesn't announce when the records finish propagating, so verify is on-demand polling. Call it as many times as you need while DNS settles.

Sending quota

curl https://api.vitrinadev.com/api/v1/sending-domains/quota \
  -H "Authorization: Bearer $VITRINA_KEY"
{
  "data": {
    "max_24_hour_send": 50000,
    "sent_last_24_hours": 812,
    "max_send_rate": 14,
    "production_access_enabled": true
  }
}

This is the quota the mail provider gives the whole workspace, and it isn't split per domain. It tells you how much headroom is left before a large campaign.

The field-by-field contract is in the Sending domains reference.

On this page