magento Customers API
Customer account management including registration, profile updates, address management, authentication, and customer group assignment.
Customer account management including registration, profile updates, address management, authentication, and customer group assignment.
openapi: 3.1.0
info:
title: Magento REST Authentication Customers API
description: 'The Adobe Commerce (Magento) REST API provides a comprehensive set of endpoints for interacting with all major aspects of an e-commerce store, including catalog management, orders, customers, inventory, shipping, and payments. It supports three authentication mechanisms: OAuth 1.0a for third-party integrations, token-based authentication for mobile apps and administrators, and guest access for select public endpoints. The API follows REST conventions and returns JSON responses, enabling developers to build integrations, automate store operations, and power headless commerce storefronts. All endpoints are versioned under the /V1 prefix and support searchCriteria query parameters for filtering, sorting, and paginating collection responses.'
version: '2.4'
contact:
name: Adobe Commerce Developer Support
url: https://developer.adobe.com/commerce/webapi/rest/
termsOfService: https://www.adobe.com/legal/terms.html
servers:
- url: https://{store_domain}/rest/{store_code}
description: Production Server
variables:
store_domain:
default: your-store.example.com
description: The hostname of your Adobe Commerce store
store_code:
default: V1
description: Store code followed by API version. Use "all" as store code for admin-scope operations, or the specific store view code for store-scoped operations. The V1 version path segment follows.
security:
- bearerAuth: []
tags:
- name: Customers
description: Customer account management including registration, profile updates, address management, authentication, and customer group assignment.
paths:
/V1/customers:
post:
operationId: createCustomer
summary: Create a customer
description: Creates a new customer account. The email address must be unique within the store. A password can be provided directly or auto-generated and sent to the customer via email. The customer is assigned to a default customer group unless a group_id is specified in the request.
tags:
- Customers
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
responses:
'200':
description: Customer created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/V1/customers/search:
get:
operationId: searchCustomers
summary: Search customers
description: Returns a paginated list of customers matching the provided search criteria. Supports filtering by any customer attribute including email, firstname, lastname, group_id, and created_at. Results can be sorted and paginated using searchCriteria parameters.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/searchCriteriaFilterGroups'
- $ref: '#/components/parameters/searchCriteriaSortOrders'
- $ref: '#/components/parameters/searchCriteriaPageSize'
- $ref: '#/components/parameters/searchCriteriaCurrentPage'
responses:
'200':
description: Paginated list of customers
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerSearchResults'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/V1/customers/{customerId}:
get:
operationId: getCustomer
summary: Get customer by ID
description: Retrieves a single customer account by its numeric ID. Returns the full customer object including contact details, addresses, and group assignment. Admin authentication is required to retrieve any customer account; customer tokens only allow retrieval of the authenticated customer's own account via the /V1/customers/me endpoint.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/customerId'
responses:
'200':
description: Customer object
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateCustomer
summary: Update a customer
description: Updates an existing customer account by its numeric ID. Fields included in the request body overwrite existing values. Partial updates are supported; omitted optional fields retain their current values. Admin authentication is required.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/customerId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
responses:
'200':
description: Updated customer object
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCustomer
summary: Delete a customer
description: Permanently deletes a customer account by its numeric ID. All associated data including addresses, order history references, and wishlist items are also removed. This operation cannot be undone. Admin authentication is required.
tags:
- Customers
parameters:
- $ref: '#/components/parameters/customerId'
responses:
'200':
description: Customer deleted successfully
content:
application/json:
schema:
type: boolean
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
parameters:
customerId:
name: customerId
in: path
description: The numeric customer entity ID.
required: true
schema:
type: integer
searchCriteriaCurrentPage:
name: searchCriteria[currentPage]
in: query
description: Page number to return. First page is 1.
required: false
schema:
type: integer
minimum: 1
searchCriteriaFilterGroups:
name: searchCriteria[filter_groups][0][filters][0][field]
in: query
description: Field name to filter on. Multiple filter groups and filters can be specified using indexed array notation. Filters within a group are OR'd; filter groups themselves are AND'd.
required: false
schema:
type: string
searchCriteriaSortOrders:
name: searchCriteria[sortOrders][0][field]
in: query
description: Field name to sort results by. Direction is set in the corresponding direction parameter.
required: false
schema:
type: string
searchCriteriaPageSize:
name: searchCriteria[pageSize]
in: query
description: Number of records to return per page. Default varies by resource.
required: false
schema:
type: integer
minimum: 1
maximum: 300
schemas:
CustomerSearchResults:
type: object
description: Paginated search results containing a list of customer accounts.
properties:
items:
type: array
description: Array of customer objects matching the search criteria.
items:
$ref: '#/components/schemas/Customer'
search_criteria:
type: object
description: The search criteria applied.
total_count:
type: integer
description: Total number of matching customers across all pages.
CustomerRequest:
type: object
description: Request body for creating or updating a customer account.
required:
- customer
properties:
customer:
$ref: '#/components/schemas/Customer'
password:
type: string
description: Plain-text password to set on the customer account. If omitted, a password reset email is sent.
format: password
CustomAttribute:
type: object
description: A key-value pair representing a custom EAV attribute on a catalog entity.
required:
- attribute_code
- value
properties:
attribute_code:
type: string
description: The unique attribute code identifier.
value:
description: The attribute value. Can be a string, integer, or array depending on the attribute type.
Address:
type: object
description: A postal address used for billing or shipping.
properties:
firstname:
type: string
description: First name of the address recipient.
lastname:
type: string
description: Last name of the address recipient.
email:
type: string
format: email
description: Email address associated with this address record.
street:
type: array
description: Street address lines.
items:
type: string
city:
type: string
description: City name.
region:
type: string
description: State or region name.
region_code:
type: string
description: Two-letter state or region code.
country_id:
type: string
description: ISO 3166-1 alpha-2 country code.
minLength: 2
maxLength: 2
postcode:
type: string
description: Postal or ZIP code.
telephone:
type: string
description: Phone number for this address.
Customer:
type: object
description: A registered customer account in Adobe Commerce.
properties:
id:
type: integer
description: Numeric customer entity ID.
group_id:
type: integer
description: ID of the customer group this customer belongs to.
email:
type: string
format: email
description: Customer email address, used as the login identifier.
firstname:
type: string
description: Customer first name.
lastname:
type: string
description: Customer last name.
store_id:
type: integer
description: ID of the store view where this customer account was created.
website_id:
type: integer
description: ID of the website scope for this customer account.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the customer account was created.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp when the customer account was last updated.
addresses:
type: array
description: Customer address book entries.
items:
$ref: '#/components/schemas/Address'
custom_attributes:
type: array
description: Custom EAV attribute values for this customer.
items:
$ref: '#/components/schemas/CustomAttribute'
Error:
type: object
description: Standard error response returned for 4xx and 5xx responses.
properties:
message:
type: string
description: Human-readable error message.
parameters:
type: array
description: Additional error context parameters.
items:
type: object
responses:
Unauthorized:
description: Unauthorized — missing or invalid authentication token
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: Bad request — invalid input parameters or request body
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Not found — the requested resource does not exist
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Bearer token obtained from the /V1/integration/admin/token or /V1/integration/customer/token endpoint. Include in the Authorization header as "Bearer {token}".
externalDocs:
description: Adobe Commerce REST API Documentation
url: https://developer.adobe.com/commerce/webapi/rest/