SparkPost Subaccounts API
Manage subaccounts for multi-tenant or agency deployments, each with isolated sending domains, API keys, suppression lists, and reporting.
Manage subaccounts for multi-tenant or agency deployments, each with isolated sending domains, API keys, suppression lists, and reporting.
openapi: 3.0.3
info:
title: SparkPost Subaccounts API
description: Manage subaccounts for multi-tenant or agency deployments, each with isolated sending domains, API keys, suppression lists, and reporting.
version: 1.0.0
contact:
name: SparkPost Developer Support
url: https://developers.sparkpost.com/api/subaccounts/
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.sparkpost.com/api/v1
description: SparkPost Production API
security:
- ApiKeyAuth: []
paths:
/subaccounts:
post:
operationId: createSubaccount
summary: Create a Subaccount
description: Create a new subaccount with optional API key setup for multi-tenant email deployments.
tags:
- Subaccounts
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountRequest'
responses:
'200':
description: Subaccount created
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountCreateResponse'
'400':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
operationId: listSubaccounts
summary: List Subaccounts
description: Retrieve a paginated list of all subaccounts with optional filtering.
tags:
- Subaccounts
parameters:
- name: option
in: query
required: false
description: Filter by feature option (e.g., deliverability)
schema:
type: string
enum: [deliverability]
- name: cursor
in: query
required: false
description: Pagination cursor
schema:
type: string
- name: per_page
in: query
required: false
description: Results per page (max 100, default 25)
schema:
type: integer
maximum: 100
default: 25
- name: sort_by
in: query
required: false
description: Field to sort by
schema:
type: string
enum: [created_at, updated_at, id, name]
default: created_at
- name: order
in: query
required: false
description: Sort order
schema:
type: string
enum: [asc, desc]
default: desc
- name: ip_pool
in: query
required: false
description: Filter by IP pool ID
schema:
type: string
- name: status
in: query
required: false
description: Filter by account status
schema:
type: string
enum: [active, suspended, terminated]
- name: name
in: query
required: false
description: Filter by partial name match
schema:
type: string
- name: ids
in: query
required: false
description: Comma-separated list of subaccount IDs to retrieve
schema:
type: string
responses:
'200':
description: Paginated list of subaccounts
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountsListResponse'
/subaccounts/summary:
get:
operationId: getSubaccountsSummary
summary: Retrieve Subaccounts Summary
description: Retrieve the total count of subaccounts.
tags:
- Subaccounts
responses:
'200':
description: Subaccounts summary
content:
application/json:
schema:
type: object
properties:
results:
type: object
properties:
total:
type: integer
/subaccounts/{id}:
get:
operationId: getSubaccount
summary: Retrieve a Subaccount
description: Retrieve details about a specific subaccount by its ID.
tags:
- Subaccounts
parameters:
- name: id
in: path
required: true
description: Subaccount ID
schema:
type: integer
responses:
'200':
description: Subaccount details
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountResponse'
put:
operationId: updateSubaccount
summary: Update a Subaccount
description: Update configuration for an existing subaccount including status and IP pool.
tags:
- Subaccounts
parameters:
- name: id
in: path
required: true
description: Subaccount ID
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubaccountUpdateRequest'
responses:
'200':
description: Subaccount updated
'400':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
schemas:
SubaccountRequest:
type: object
required:
- name
properties:
name:
type: string
maxLength: 64
description: Display name for the subaccount
ip_pool:
type: string
description: IP Pool ID for mail deliveries
setup_api_key:
type: boolean
default: true
description: Whether to create an API key for this subaccount
key_label:
type: string
description: Label for the API key (required if setup_api_key is true)
key_grants:
type: array
items:
type: string
description: Permission grants for the API key (required if setup_api_key is true)
key_valid_ips:
type: array
items:
type: string
description: IP addresses allowed to use the API key
options:
type: object
properties:
deliverability:
type: boolean
description: Enable deliverability features for this subaccount
SubaccountUpdateRequest:
type: object
properties:
name:
type: string
maxLength: 64
status:
type: string
enum: [active, suspended, terminated]
ip_pool:
type: string
description: Set to empty string to unassign current IP pool
options:
type: object
properties:
deliverability:
type: boolean
SubaccountDetails:
type: object
properties:
id:
type: integer
name:
type: string
status:
type: string
compliance_status:
type: string
ip_pool:
type: string
options:
type: object
properties:
deliverability:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
SubaccountCreateResponse:
type: object
properties:
results:
type: object
properties:
subaccount_id:
type: integer
key:
type: string
description: API key for the subaccount (shown only on creation)
label:
type: string
short_key:
type: string
SubaccountResponse:
type: object
properties:
results:
$ref: '#/components/schemas/SubaccountDetails'
SubaccountsListResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/SubaccountDetails'
total_count:
type: integer
links:
type: object
properties:
next:
type: string
ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
message:
type: string
code:
type: string
description:
type: string