Elastic Path Accounts API
An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders, Subscriptions, and Addresses.
An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders, Subscriptions, and Addresses.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/elastic-path-accounts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Account Management Introduction Accounts API
description: 'An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders,
Subscriptions, and Addresses.
Each account can have multiple account members, which represent users and can transact on behalf of the account.
In a typical B2C scenario, an account usually has a single account member. However, this functionality can also be
used to support use cases such as family accounts, allowing multiple family members to transact on behalf of their
shared account. In a B2B scenario, an account will have multiple members from a business unit, all of whom can
transact on behalf of their organization.
Accounts can be grouped together using Account Tags, and those tags can be used to apply discounts and promotions.
## Accounts vs Customers
Accounts is the next generation of [Customers](/docs/customer-management/customers). Customers are not going
anywhere, but accounts offers more capabilities. We recommend using Accounts for any of your new use cases.
| Feature | Customers | Accounts |
|---------------------------------------------------------------------------------------------|-----------|----------|
| B2C Accounts | ✅ | ✅ |
| Family Accounts | ⛔️ | ✅ |
| B2B Accounts | ⛔️ | ✅ |
| Authentication: Shopper impersonation | ⛔️ | ✅ |
| Authentication: OpenID support | ✅ | ✅ |
| Authentication: One time passwords, and password reset | ⛔️ | ✅ |
| Authentication: Configurable token expiry | ⛔️ | ✅ |
| Cart association | ✅ | ✅ |
| Shopper specific Promotions | Limited | ✅ |
| Shopper specific Catalogs | ✅ | ✅ |
| Addresses | ✅ | ✅ |
| [Personal Data Support (GDPR,CCPA,...)](/docs/api/personal-data/personal-data-introduction) | ✅ | ✅ |
'
contact:
name: Elastic Path
url: https://www.elasticpath.com
email: support@elasticpath.com
license:
name: MIT
url: assets/LICENSE
version: 26.0208.7165720
x-version-timestamp: 2026-02-08 16:13:08+00:00
servers:
- url: https://useast.api.elasticpath.com
description: US East
- url: https://euwest.api.elasticpath.com
description: EU West
security:
- BearerToken: []
tags:
- name: Accounts
description: 'An Account represents the entity that participates in a Commerce transaction. Accounts can have Carts, Orders, Subscriptions, and Addresses.
'
externalDocs:
url: https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview
paths:
/v2/accounts:
post:
tags:
- Accounts
summary: Create an Account
description: With the account creation endpoint, you have the ability to create accounts which can optionally have another account as a parent.
operationId: post-v2-accounts
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
allOf:
- $ref: '#/components/schemas/Account'
- $ref: '#/components/schemas/WritableParentId'
required:
- data
examples:
Create an account:
value:
data:
type: account
name: acc-name
legal_name: acc-legal-name
registration_id: reg-id
external_ref: ext-ref
Create a subaccount:
value:
data:
type: account
name: acc-sub-name
legal_name: acc-legal-name, ltd
registration_id: reg-id
external_ref: ext-ref
parent_id: 96b1f750-55d3-4768-a3f8-adffba694a2c
responses:
'201':
description: Created
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/AccountResponse'
links:
type: object
properties:
self:
description: A URL to the specific resource.
type: string
example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
'400':
$ref: '#/components/responses/BadRequestError'
'404':
$ref: '#/components/responses/NotFoundError'
'409':
$ref: '#/components/responses/ConflictError'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/InternalServerError'
security:
- BearerToken: []
get:
tags:
- Accounts
summary: Get All Accounts
description: 'Use this endpoint to Get all accounts.
You can use pagination with this resource. For more information, see [pagination](/guides/Getting-Started/pagination).
### Filtering
The following operators and attributes are available for [filtering](/guides/Getting-Started/filtering) accounts:
| Attribute | Operators | Example |
|-------------------|-------------------------------|---------------------------------------------------------------|
| `id` | `lt`,`le`,`eq`,`gt`,`ge`,`in` | `eq(id,3fa85f64-5717-4562-b3fc-2c963f66afa6)` |
| `created_at` | `lt`,`le`,`eq`,`gt`,`ge` | `ge(created_at,2024-04-29T00:00:00.000Z)` |
| `updated_at` | `lt`,`le`,`eq`,`gt`,`ge` | `le(updated_at,2024-04-29T00:00:00.000Z)` |
| `name` | `eq`,`like` | `like(name,*swan*)` |
| `legal_name` | `eq`,`like` | `like(legal_name,*swan*)` |
| `registration_id` | `eq`,`like` | `like(registration_id,00000000-0000-1000-8000-*)` |
| `external_ref` | `eq`,`like`,`in` | `like(external_ref,16be*)` |
| `account_tags` | `contains` | `contains(account_tags,26beb787-be6e-40c3-bbae-9c645820b075)` |
'
operationId: get-v2-accounts
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/page-limit'
- $ref: '#/components/parameters/page-offset'
- name: sort
in: query
description: Specifies the order in which accounts will be returned. For more information, see [Sorting](/guides/Getting-Started/sorting).
required: false
schema:
type: string
enum:
- created_at
- -created_at
- id
- -id
- name
- -name
- updated_at
- -updated_at
example: id
x-enumDescriptions:
created_at: Sort in increasing order of creation
-created_at: Sort in decreasing order of creation
id: Sort in increasing order of ID
-id: Sort in decreasing order of ID
name: Sort in increasing order of name
-name: Sort in decreasing order of name
updated_at: Sort in increasing order of last update
-updated_at: Sort in decreasing order of last update
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
allOf:
- $ref: '#/components/schemas/AccountResponse'
- type: object
properties:
links:
type: object
properties:
self:
description: A URL to the specific resource.
type: string
example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
meta:
$ref: '#/components/schemas/MetaList'
links:
type: object
properties:
current:
description: Always the current page.
type: string
format: uri
example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
first:
description: Always the first page.
type: string
format: uri
example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
last:
description: Always `null` if there is only one page.
type: string
format: uri
example: https://useast.api.elasticpath.com/v2/accounts?page[offset]=0&page[limit]=25
next:
description: Always `null` if there is only one page.
type: string
example: null
prev:
description: Always `null` if the user is on the first page.
type: string
example: null
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/InternalServerError'
/v2/accounts/{accountID}:
get:
tags:
- Accounts
summary: Get an Account
description: View a specific account contained within your store
operationId: get-v2-accounts-accountID
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/AccountResponse'
links:
type: object
properties:
self:
description: A URL to the specific resource.
type: string
example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
put:
tags:
- Accounts
summary: Update an Account
description: Update the information contained on an account.
operationId: put-v2-accounts-accountID
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
type: object
properties:
data:
type: object
allOf:
- $ref: '#/components/schemas/Account'
- $ref: '#/components/schemas/ReadOnlyParentId'
required:
- data
examples:
Update an Account:
value:
data:
type: account
name: acc-name
legal_name: acc-legal-name
registration_id: reg-id
external_ref: ext-ref
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/AccountResponse'
links:
type: object
properties:
self:
description: A URL to the specific resource.
type: string
format: uri
example: /v2/accounts/deb6b25f-8451-4211-9a22-95610333df23
'400':
description: Bad Request
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
detail:
type: string
example: 'Validation failed: field ''Name'' on the ''min'' tag.'
status:
type: string
example: '400'
title:
type: string
example: Bad Request
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
detail:
type: string
example: account not found
status:
type: string
example: '404'
title:
type: string
example: Not Found
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Accounts
summary: Delete an Account
description: Delete a specific account within a store
operationId: delete-v2-accounts-accountID
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
responses:
'204':
description: No Content
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
/v2/accounts/{accountID}/relationships/account-tags:
get:
tags:
- Accounts
summary: Get an Account's Tags Relationship
operationId: GetAnAccountTagsRelationship
description: Get a list of Account Tags on an Account
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountTagsRelationshipResponse'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
post:
tags:
- Accounts
summary: Add Account Tags
operationId: AddAccountTagsOnAccount
description: Add Account Tags onto an Account. Please note that after adding a tag to an account, the account member token should be regenerated to reflect the updated account status, allowing other services to react accordingly. See [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens).
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AddAccountTagsOnAccount'
examples:
Add Example:
summary: Add an Account Tag
value:
data:
- type: account_tag
id: 030693ce-39ad-4f4c-9941-d2d596478e94
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountTagsRelationshipResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'404':
$ref: '#/components/responses/NotFoundError'
'409':
$ref: '#/components/responses/ConflictError'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
tags:
- Accounts
summary: Remove Account Tags
operationId: RemoveAccountTagsOnAccount
description: Remove Account Tags from an Account. Please note that after removing a tag from an account, the account member token should be regenerated to reflect the updated status, allowing other services to react accordingly. See [Account Management Authentication Token](/docs/api/accounts/post-v-2-account-members-tokens).
parameters:
- name: accountID
in: path
description: The ID of the account you want to retrieve.
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RemoveAccountTagsOnAccount'
examples:
Remove Example:
summary: Remove an Account Tag
value:
data:
- type: account_tag
id: 030693ce-39ad-4f4c-9941-d2d596478e94
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountTagsRelationshipResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
ReadOnlyParentId:
type: object
properties:
parent_id:
type:
- string
- 'null'
format: uuid
readOnly: true
description: Specifies the ID of the parent account.
example: 96b1f750-55d3-4768-a3f8-adffba694a2c
WritableParentId:
type: object
properties:
parent_id:
type:
- string
- 'null'
format: uuid
description: Specifies the ID of the parent account, this field cannot be changed after creation.
example: 96b1f750-55d3-4768-a3f8-adffba694a2c
AddAccountTagsOnAccount:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
MetaTimestamps:
type: object
properties:
timestamps:
type: object
properties:
created_at:
description: The date the resource is created.
type: string
example: '2021-02-23T09:40:33.882Z'
updated_at:
description: The date the resource is updated.
type: string
example: '2021-02-23T09:40:33.882Z'
MetaListPage:
type: object
properties:
limit:
type: integer
description: The maximum number of records per page for this response. You can set this value up to 100.
example: 25
current:
type: integer
description: The current page.
example: 0
offset:
type: integer
description: The current offset by number of records, not pages. Offset is zero-based.
example: 0
total:
type: integer
description: The total page count.
example: 1
MetaListResults:
type: object
properties:
total:
type: integer
description: The total number of results after applying filters, if any, or all results.
example: 1
RemoveAccountTagsOnAccount:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
Account:
type: object
properties:
type:
type: string
description: Specifies the type of object. Set this value to `account`.
const: account
name:
type: string
description: Specifies the name of the account.
example: acc-name
legal_name:
type:
- string
- 'null'
description: Specifies the legal name of the account.
example: acc-legal-name
registration_id:
type:
- string
- 'null'
description: Specifies the registration ID. If specified, this field is checked for uniqueness.
example: reg-id
external_ref:
type:
- string
- 'null'
description: The unique attribute associated with the account. For example, this could be an external reference from a separate company system. The maximum length is 2048 characters. Default is `null`.
example: ext-ref
required:
- type
- name
AccountResponse:
allOf:
- $ref: '#/components/schemas/Account'
- $ref: '#/components/schemas/ReadOnlyParentId'
- type: object
properties:
id:
$ref: '#/components/schemas/UUID'
description: The unique identifier for an Account.
meta:
$ref: '#/components/schemas/MetaTimestamps'
description: Additional information for this realm. For more information, see [The meta object](https://elasticpath.dev/docs/commerce-cloud/accounts/using-account-management-api/account-management-api-overview#the-meta-object) section.
relationships:
type: object
properties:
account_tags:
type: object
properties:
data:
type: array
items:
type: object
properties:
id:
$ref: '#/components/schemas/UUID'
description: The unique identifier for an Account Tag.
type:
type: string
const: account_tag
description: Tags associated with the account.
ancestors:
type: array
items:
type: object
properties:
data:
type: object
properties:
id:
$ref: '#/components/schemas/UUID'
description: The unique identifier for an Account.
type:
type: string
const: account
description: All parent accounts in the hierarchy in sorted order (root first).
parent:
type: object
properties:
data:
type: object
properties:
type:
type: string
const: account
id:
$ref: '#/components/schemas/UUID'
description: The unique identifier for an Account.
Error:
type: object
required:
- status
- title
properties:
title:
type: string
description: A brief summary of the error.
examples:
- Bad Request
status:
type: string
format: string
description: The HTTP response code of the error.
examples:
- '400'
detail:
type: string
description: Optional additional detail about the error.
examples:
- The field 'name' is required
UUID:
type: string
description: The unique identifier.
format: uuid
x-go-type: uuid.UUID
x-go-type-import:
name: uuid
path: github.com/google/uuid
example: deb6b25f-8451-4211-9a22-95610333df23
ErrorResponse:
type: object
required:
- errors
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
AccountTagsRelationshipResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AccountTagsRelationshipIdentifier'
links:
type: object
properties:
self:
description: A URL to the specific resource.
type: string
example: https://useast.api.elasticpath.com/v2/accounts/deb6b25f-8451-4211-9a22-95610333df23/relationships/account-tags
MetaList:
type: object
properties:
page:
$ref: '#/components/schemas/MetaListPage'
results:
$ref: '#/components/schemas/MetaListResults'
AccountTagsRelationshipIdentifier:
type: object
properties:
id:
description: The unique identifier for the related Account Tag.
type: string
example: 652e39d8-d613-493e-8c20-fef99ad6327a
type:
description: Specifies the type of the resource object.
type: string
const: account_tag
responses:
ConflictError:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
conflict-error:
value:
errors:
- title: Conflict
status: '409'
detail: account membership with the given account id and account member id already exists
NotFoundError:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
not-found-error:
value:
errors:
- title: Not Found
status: '404'
detail: account not found
BadRequestError:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
bad-request-error:
value:
errors:
- title: Bad Request
status: '400'
detail: 'Validation failed: field ''Name'' on the ''min'' tag.'
UnprocessableEntity:
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unprocessable-entity:
value:
errors:
- title: Unprocessable Entity
status: '422'
detail: store id mismatch
UnauthorizedError:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
unauthorized-error:
value:
errors:
- title: Unauthorized
status: '401'
InternalServerError:
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
internal-server-error:
summary: Internal server error
value:
errors:
- title: Internal Server Error
status: '500'
detail: there was a problem processing your request
parameters:
page-limit:
name: page[limit]
in: query
description: The number of records per page.
required: false
schema:
type: integer
format: int64
minimum: 0
example: 25
filter:
name: filter
in: query
description: Specifies the filter attributes.
required: false
schema:
type: string
format: string
example: ilike(name,"*swan*")
page-offset:
name: page[offset]
in: query
description: The number of records to offset the results by.
required: false
schema:
type: integer
format: int64
minimum: 0
maximum: 10000
example: 10
securitySchemes:
BearerToken:
type: http
scheme: bearer