AhaSend · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for AhaSend API v2 Domains API
7 actions
7 updates
phrasing
extends
openapi/ahasend-domains-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for AhaSend's API. It is a proposal applied on top of the contract, not a document AhaSend publishes.
What the actions change
x-apievangelist-phrasing
Targets 7
$.info
$.paths['/v2/accounts/{account_id}/domains'].get
$.paths['/v2/accounts/{account_id}/domains'].post
$.paths['/v2/accounts/{account_id}/domains/{domain}'].get
$.paths['/v2/accounts/{account_id}/domains/{domain}'].put
$.paths['/v2/accounts/{account_id}/domains/{domain}'].delete
$.paths['/v2/accounts/{account_id}/domains/{domain}/check-dns'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for AhaSend API v2 Domains API
version: 1.0.0
extends: openapi/ahasend-domains-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 6
- target: $.paths['/v2/accounts/{account_id}/domains'].get
update:
x-apievangelist-phrasing:
intent: List sending domains
effect: read
questions:
- Which sending domains have I added to my account?
- Can I list only the domains whose DNS records still aren't valid?
instructions:
- text: List all sending domains on account {account_id}.
slots:
account_id: path.account_id
- text: Show domains on account {account_id} filtered by DNS valid = {dns_valid}.
slots:
account_id: path.account_id
dns_valid: query.dns_valid
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/domains'].post
update:
x-apievangelist-phrasing:
intent: Add a sending domain
effect: write
questions:
- How do I add a new domain to send email from in AhaSend?
- Can I choose a custom tracking subdomain when I first add a domain?
- Is it possible to bring my own DKIM private key for a new domain?
instructions:
- text: Add the domain {domain} to account {account_id}.
slots:
domain: requestBody.domain
account_id: path.account_id
- text: Register {domain} on account {account_id} using tracking subdomain {tracking_subdomain}.
slots:
domain: requestBody.domain
account_id: path.account_id
tracking_subdomain: requestBody.tracking_subdomain
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/domains/{domain}'].get
update:
x-apievangelist-phrasing:
intent: View one domain and its DNS records
effect: read
questions:
- What DNS records do I need to publish for my domain?
- Can I see the current configuration of a single domain I've added?
instructions:
- text: Show the details for domain {domain} on account {account_id}.
slots:
domain: path.domain
account_id: path.account_id
- text: Get the DNS setup required for {domain} in account {account_id}.
slots:
domain: path.domain
account_id: path.account_id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/domains/{domain}'].put
update:
x-apievangelist-phrasing:
intent: Change a domain's subdomains or DKIM settings
effect: write
questions:
- How do I change the return-path subdomain on a domain I already added?
- Can I change how often DKIM keys rotate on an existing domain?
instructions:
- text: Change the tracking subdomain of existing domain {domain} to {tracking_subdomain} on account {account_id}.
slots:
domain: path.domain
tracking_subdomain: requestBody.tracking_subdomain
account_id: path.account_id
- text: Rotate DKIM for {domain} every {dkim_rotation_interval_days} days on account {account_id}.
slots:
domain: path.domain
dkim_rotation_interval_days: requestBody.dkim_rotation_interval_days
account_id: path.account_id
- text: Set the DKIM selector for existing domain {domain} to {dkim_selector} in account {account_id}.
slots:
domain: path.domain
dkim_selector: requestBody.dkim_selector
account_id: path.account_id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/domains/{domain}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a sending domain
effect: destructive
questions:
- How do I remove a domain I no longer send from?
- Can I delete a domain from my account entirely?
instructions:
- text: Delete domain {domain} from account {account_id}.
slots:
domain: path.domain
account_id: path.account_id
- text: Remove {domain} from the sending domains on account {account_id}.
slots:
domain: path.domain
account_id: path.account_id
method: generated
generated: '2026-09-26'
- target: $.paths['/v2/accounts/{account_id}/domains/{domain}/check-dns'].post
update:
x-apievangelist-phrasing:
intent: Re-check a domain's DNS records
effect: read
questions:
- How do I verify my DNS records after I've published them?
- Why does a DNS check return the same result if I run it twice within a minute?
instructions:
- text: Run a DNS validation check on {domain} in account {account_id}.
slots:
domain: path.domain
account_id: path.account_id
- text: Verify whether the DNS for {domain} on account {account_id} is now correct.
slots:
domain: path.domain
account_id: path.account_id
method: generated
generated: '2026-09-26'
Work with this as data
Every overlay 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 openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay 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 overlay
curl "https://apis.io/api/v1/overlays/ahasend-domains-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.