Start verification for a domain you already own so Pingram can use it for email. Pass a bare domain (example.com) or subdomain (mail.example.com). This does not purchase, transfer, renew, or control the domain, does not edit DNS, and does not disable sending or receiving on other platforms. It saves the domain on this Pingram account and returns DNS records for you to publish. Required DKIM lets Pingram send email from addresses on this domain once verification completes. Optional inbound MX, once you publish it, routes that domain's inbound email to Pingram. This call only begins verification. Publish the records, then start verification in the dashboard or with the start-verification API. Adding a domain that is already on the account returns the existing records.
const url = 'https://api.pingram.io/domains';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"sender":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.pingram.io/domains \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "sender": "example" }'Authorizations
Request Bodyrequired
object
Examplegenerated
{ "sender": "example"}Responses
200
Successful response
object
Keyed by record id — computed on domain API responses, not stored in DB.
object
DNS record the customer must publish for domain verification.
object
Relative name for the parent DNS zone UI (e.g. pingram._domainkey.testing).
Full hostname (e.g. pingram._domainkey.testing.something.com).
DNS record the customer must publish for domain verification.
object
Relative name for the parent DNS zone UI (e.g. pingram._domainkey.testing).
Full hostname (e.g. pingram._domainkey.testing.something.com).
DNS record the customer must publish for domain verification.
object
Relative name for the parent DNS zone UI (e.g. pingram._domainkey.testing).
Full hostname (e.g. pingram._domainkey.testing.something.com).
DNS record the customer must publish for domain verification.
object
Relative name for the parent DNS zone UI (e.g. pingram._domainkey.testing).
Full hostname (e.g. pingram._domainkey.testing.something.com).
DNS record the customer must publish for domain verification.
object
Relative name for the parent DNS zone UI (e.g. pingram._domainkey.testing).
Full hostname (e.g. pingram._domainkey.testing.something.com).
Example
[ { "status": "SUCCESS", "mailFromDomainStatus": "PENDING", "verificationRecords": { "dkim": { "recordType": "TXT" }, "mail_from_spf": { "recordType": "TXT" }, "mail_from_mx": { "recordType": "TXT" }, "dmarc": { "recordType": "TXT" }, "inbound_mx": { "recordType": "TXT" } } }]400
Bad Request - validation errors, invalid input
Standard error response for API errors.
object
Unique tracking ID for the request.
Structured error details for API error responses.
object
Machine-readable error code.
Human-readable error message.
Actionable hint for fixing the error.
Examplegenerated
{ "trackingId": "example", "error": { "code": "example", "message": "example", "fix": "example" }}401
Unauthorized
402
Payment Required - usage limits exceeded
Standard error response for API errors.
object
Unique tracking ID for the request.
Structured error details for API error responses.
object
Machine-readable error code.
Human-readable error message.
Actionable hint for fixing the error.
Examplegenerated
{ "trackingId": "example", "error": { "code": "example", "message": "example", "fix": "example" }}500
Internal Server Error
502
Bad Gateway - provider error
Standard error response for API errors.
object
Unique tracking ID for the request.
Structured error details for API error responses.
object
Machine-readable error code.
Human-readable error message.
Actionable hint for fixing the error.
Examplegenerated
{ "trackingId": "example", "error": { "code": "example", "message": "example", "fix": "example" }}