AhaSend Subaccounts API

The Subaccounts API from AhaSend — 8 operation(s) for subaccounts.

Business capability
Tenant Provisioning & Lifecycle BC-4230.10

Operations 14

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v2/accounts/{account_id}/sub-accounts List sub accounts · List Sub Accounts #
Ask an LLM
“Which sub accounts sit under my parent account?”
“Are deleted sub accounts included when I list them?”
Tell an agent
List the sub accounts under parent account {account_id}.
Show the first {limit} sub accounts of {account_id}.
POST /v2/accounts/{account_id}/sub-accounts Create a sub account · Create Sub Account #
Ask an LLM
“How do I set up a separate sub account for one of my customers?”
“Can I put a monthly spending cap on a new sub account?”
Tell an agent
Create a sub account named {name} for website {website} under account {account_id}.
Add sub account {name} ({website}) to {account_id} with a monthly credit cap of {monthly_credit}.
GET /v2/accounts/{account_id}/sub-accounts/usage See usage and cost per sub account · Get Sub-Account Usage #
Ask an LLM
“How much has each sub account used this billing period?”
“What share of this period's cost is allocated to each of my sub accounts?”
Tell an agent
Show current billing-period usage for parent account {account_id} and its sub accounts.
Break down allocated cost by sub account for {account_id}.
GET /v2/accounts/{account_id}/sub-accounts/{sub_account_id} View one sub account · Get Sub Account #
Ask an LLM
“What name, website and monthly cap does a particular sub account have?”
“Can I check whether one sub account is suspended?”
Tell an agent
Show sub account {sub_account_id} under {account_id}.
Get the settings of sub account {sub_account_id} in parent account {account_id}.
PUT /v2/accounts/{account_id}/sub-accounts/{sub_account_id} Change a sub account's settings · Update Sub Account #
Ask an LLM
“How do I raise the monthly cap on an existing sub account?”
“Can I rename a sub account after it's created?”
Tell an agent
Set the monthly credit of sub account {sub_account_id} to {monthly_credit} under {account_id}.
Rename existing sub account {sub_account_id} in {account_id} to {name}.
DELETE /v2/accounts/{account_id}/sub-accounts/{sub_account_id} Delete a sub account · Delete Sub Account #
Ask an LLM
“How do I shut down a sub account for a customer who left?”
“Is deleting a sub account permanent, or is it a soft delete?”
Tell an agent destructive · confirm first
Delete sub account {sub_account_id} from parent account {account_id}.
Remove sub account {sub_account_id} under {account_id}.
POST /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/suspend Suspend a sub account · Pause Sub Account #
Ask an LLM
“How do I temporarily stop a sub account from sending?”
“Can I record why a sub account was suspended?”
Tell an agent
Suspend sub account {sub_account_id} under {account_id} because {reason}.
Put sub account {sub_account_id} of {account_id} on hold with reason {reason}.
POST /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/unsuspend Reactivate a suspended sub account · Resume Sub Account #
Ask an LLM
“How do I restore a sub account that I suspended earlier?”
“Can a suspended sub account be allowed to send again?”
Tell an agent
Unsuspend sub account {sub_account_id} under {account_id}.
Lift the suspension on sub account {sub_account_id} in parent {account_id}.
POST /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/domains/{domain}/unpause Unpause Sub Account Domain #
GET /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/api-keys List a sub account's API keys · List Sub-Account API Keys #
Ask an LLM
“Which API keys belong to one of my sub accounts?”
“Does listing a sub account's keys show their secret values?”
Tell an agent
List API keys owned by sub account {sub_account_id} under {account_id}.
Show the first {limit} keys for sub account {sub_account_id} of parent {account_id}.
POST /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/api-keys Create an API key for a sub account · Create Sub-Account API Key #
Ask an LLM
“How do I issue an API key that a sub account can use on its own?”
“Can the parent account create keys for its sub accounts with limited scopes?”
Tell an agent
Create an API key labeled {label} for sub account {sub_account_id} of {account_id} with scopes {scopes}.
Issue sub account {sub_account_id} under {account_id} a key {label} with scopes {scopes}, allowed only from {ip_allow_list}.
GET /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/api-keys/{key_id} View one sub account API key · Get Sub-Account API Key #
Ask an LLM
“What scopes does a given key owned by a sub account have?”
“Can I see the label on a sub account's specific API key?”
Tell an agent
Show key {key_id} owned by sub account {sub_account_id} under {account_id}.
Get the scopes of sub account {sub_account_id}'s key {key_id} in parent {account_id}.
PUT /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/api-keys/{key_id} Change a sub account API key's scopes · Update Sub-Account API Key #
Ask an LLM
“How do I change the scopes on a key that belongs to a sub account?”
“Can I update the IP allow list on a sub account's existing key?”
Tell an agent
Set the scopes of sub account {sub_account_id}'s key {key_id} to {scopes} under {account_id}.
Relabel key {key_id} of sub account {sub_account_id} in {account_id} as {label}.
DELETE /v2/accounts/{account_id}/sub-accounts/{sub_account_id}/api-keys/{key_id} Delete a sub account API key · Delete Sub-Account API Key #
Ask an LLM
“How do I revoke an API key that belongs to one of my sub accounts?”
“Can the parent account delete a sub account's key?”
Tell an agent destructive · confirm first
Delete key {key_id} owned by sub account {sub_account_id} under {account_id}.
Revoke sub account {sub_account_id}'s API key {key_id} in parent {account_id}.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ahasend:ahasend-subaccounts-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

ahasend-subaccounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AhaSend API v2 Sub Accounts API
  description: 'The AhaSend API v2 allows you to send transactional emails, manage domains, webhooks, routes, API keys, and view statistics. ## Authentication

    All API requests must be authenticated using a Bearer token in the Authorization header:

    ```

    Authorization: Bearer aha-sk-64-CHARACTER-RANDOM-STRING

    ```


    ## Scopes

    API keys have specific scopes that control access to different resources and actions:


    ### Message Scopes

    - `messages:send:all` - Send messages from any domain in the account

    - `messages:send:{domain}` - Send messages from a specific domain

    - `messages:cancel:all` - Cancel messages from any domain

    - `messages:cancel:{domain}` - Cancel messages from a specific domain

    - `messages:read:all` - Read messages from any domain

    - `messages:read:{domain}` - Read messages from a specific domain


    ### Domain Scopes

    - `domains:read` - Read all domains

    - `domains:write` - Create and update domains

    - `domains:delete:all` - Delete any domain

    - `domains:delete:{domain}` - Delete a specific domain


    ### Account Scopes

    - `accounts:read` - Read account information

    - `accounts:write` - Update account settings

    - `accounts:billing` - Access billing information

    - `accounts:members:read` - Read account members

    - `accounts:members:add` - Add account members

    - `accounts:members:update` - Update account members

    - `accounts:members:remove` - Remove account members


    ### Webhook Scopes

    - `webhooks:read:all` - Read all webhooks

    - `webhooks:read:{domain}` - Read webhooks for a specific domain

    - `webhooks:write:all` - Create and update webhooks

    - `webhooks:write:{domain}` - Create and update webhooks for a specific domain

    - `webhooks:delete:all` - Delete any webhook

    - `webhooks:delete:{domain}` - Delete webhooks for a specific domain


    ### Route Scopes

    - `routes:read:all` - Read all routes

    - `routes:read:{domain}` - Read routes for a specific domain

    - `routes:write:all` - Create and update routes

    - `routes:write:{domain}` - Create and update routes for a specific domain

    - `routes:delete:all` - Delete any route

    - `routes:delete:{domain}` - Delete routes for a specific domain


    ### Suppression Scopes

    - `suppressions:read` - Read suppressions

    - `suppressions:write` - Create suppressions

    - `suppressions:delete` - Delete suppressions

    - `suppressions:wipe` - Delete the account''s suppressions except protected ones (dangerous)


    ### Template Scopes

    - `templates:read` - Read transactional templates, their drafts and their published versions, and campaign templates

    - `templates:write` - Create and update transactional templates, and publish, discard and restore their drafts; create and update campaign templates

    - `templates:delete` - Delete transactional templates and campaign templates


    ### Campaign Scopes

    - `campaigns:read` - Read campaigns, their stats and their recipients

    - `campaigns:write` - Create, update and duplicate campaigns

    - `campaigns:delete` - Delete draft campaigns

    - `campaigns:send` - Send, unschedule and test-send campaigns


    ### Contact Scopes

    - `contacts:read` - Read contacts

    - `contacts:write` - Create and update contacts

    - `contacts:delete` - Delete contacts


    ### Contact lifecycle and attributes

    Contacts are account-global. A contact created through this API joins no

    list on its own; campaigns target lists, so add it to one with the Lists

    endpoints before a campaign can reach it. Contact subscription state and suppression records are independent:

    creating, updating, unsubscribing, resubscribing, or deleting a contact

    never creates, changes, or removes complaint, permanent, or protected

    suppressions. Prefer unsubscribe over delete when the goal is only to stop

    marketing mail, because unsubscribe is reversible and preserves contact

    history. Writable attribute keys and types come from the account''s contact-attribute

    definitions managed in the dashboard; this API does not expose property

    definition CRUD.'
  version: 2.0.0
  contact:
    email: support@ahasend.com
  license:
    name: MIT
    identifier: MIT
servers:
- url: https://api.ahasend.com
  description: Production server
security:
- BearerAuth: []
tags:


# --- truncated at 32 KB (80 KB total) ---
# Full source: https://artifacts.apis.io/ahasend/openapi/ahasend-subaccounts-api-openapi.yml