Iterable Users API
Manage user profiles, update user fields, bulk update users, get user data by email or userId, and delete users.
Manage user profiles, update user fields, bulk update users, get user data by email or userId, and delete users.
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/iterable-users-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Iterable Users API
version: '1.0'
description: 'Operations tagged users across 2 of this provider''s published API definitions: iterable-api-openapi.json, iterable-rest-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.iterable.com/
- url: https://api.iterable.com/api
description: US Data Center (USDC)
- url: https://api.eu.iterable.com/api
description: European Data Center (EDC)
tags:
- name: users
paths:
/api/auth/jwts/invalidate:
post:
description: Invalidates all JWTs issued for a given user before the current time or a specified time.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.
operationId: Invalidate JWT
responses:
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Invalidate all JWTs issued for a user
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidateJwtRequest'
description: Invalid JWT request
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/bulkUpdate:
post:
description: 'Bulk updates user data. This endpoint adds and overwrites user profile fields as needed. It does not modify top-level fields omitted from the request body. <br/><br/>If you''d like to merge (rather than overwrite) a user profile''s top-level objects with the values provided for them in the request body, set <code>mergeNestedObjects</code> to <code>true</code>.<br/><br/>When updating an existing field, you cannot change its data type (the new value must have the same data type as the old value).<br/><br/>When adding a new field, remember that each project has a soft limit of 1,000 unique user profile fields (across all its users, with a field''s uniqueness determined by its name and position on the user profile). <br/><br/>Iterable handles requests to this endpoint separately from requests to single-user endpoints (<code>update</code>, <code>updateEmail</code>, <code>updateSubscriptions</code>, etc.). For a given user, in a short period of time, only use single-user calls or bulk update calls. Otherwise, results may be inconsistent.<br/><br/>When updating the <code>emailListIds</code> field, this endpoint does not generate subscribe or unsubscribe events. The same is true for updates to <code>unsubscribedChannelIds</code> and <code>unsubscribedMessageTypeIds</code> (but these can only be updated by this endpoint in projects where the opt-in message types feature is not enabled).<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Max size of request body</b>: 4MB<br/><b>Rate limit</b>: 5 requests/second, per project'
operationId: bulkUpdateUser
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserBulkUpdateListResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'429':
description: Rate limit exceeded. Response includes <code>params</code> with:<br/><code>rateLimitLimit</code> — maximum token capacity (burst allowance)<br/><code>rateLimitRemaining</code> — tokens remaining after this request<br/><code>rateLimitReset</code> — seconds until enough tokens refill to retry
summary: Bulk update user data
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkUpdateUsersRequest'
description: Users to update
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/bulkUpdateSubscriptions:
post:
description: '<b>IMPORTANT</b>: This endpoint overwrites (does not merge) existing data for any non-<code>null</code> fields specified in the request.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.'
operationId: bulkUpdateSubscriptions
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/BulkUpdateSubscriptionsResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Email/userId conflict
summary: Bulk update user subscriptions
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkUpdateSubscriptionsRequest'
description: Bulk subscriptions to update
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/byUserId:
get:
description: 'Get a user by userId (passed as a query parameter).<br/><br/>Returns the same data as <code>GET /api/users/byUserId/{userId}</code>. However, when making calls from Iterable''s API Documentation page, this endpoint provides better support for special characters.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: getUserById
parameters:
- in: query
name: userId
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get a user by userId (query parameter)
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/byUserId/{userId}:
delete:
description: 'Asynchronous. Deletes a specific user by <code>userId</code>. Does not prevent future data collection about the user. If multiple users share the same <code>userId</code>, they''ll all be deleted. This endpoint can be used to delete users from email-based projects, userID-based projects, and hybrid projects.<br/><br/>On Iterable''s API Documentation page, this endpoint does not work for <code>userId</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href="https://support.iterable.com/hc/articles/360043464871#using-api-keys">Using API keys</a>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: delete
parameters:
- in: path
name: userId
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Delete user by userId
tags:
- users
security:
- api_key: []
get:
description: 'Get a user by <code>userId</code> (passed as a path parameter).<br/><br/>On Iterable''s API Documentation page, this endpoint does not work for <code>userId</code> values that contain a <code>/</code> character. In such cases, you can use <code>GET /api/users/byUserId</code>, or you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href="https://support.iterable.com/hc/articles/360043464871#using-api-keys">Using API keys</a>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: getUserById
parameters:
- description: userId
in: path
name: userId
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get a user by userId (path parameter)
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/disableDevice:
post:
description: Disables push notifications to a given device.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.
operationId: disableDevice
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Disable pushes to a mobile device
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DisableDeviceRequest'
description: Request to disable device
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/forget:
post:
description: 'Deletes the specified user''s data from the Iterable project and prevents future data collection about them. In email-based projects, you must forget users by <code>email</code>. In userID-based projects, you must forget users by <code>userId</code>. In hybrid projects, you can forget users by either <code>email</code> or <code>userId</code>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.<br/><br/><b>Daily Cap</b>: 1000 requests per 24 hour period, per project.'
operationId: forget
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Forget a user in compliance with GDPR
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
description: user's email to be added to blacklist.
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/forgotten:
get:
description: 'Returns a hash for each <code>email</code> addresses currently forgotten by your project. Each forgotten <code>email</code> is lowercased, trimmed, and hashed using SHA-256. This endpoint only works for email-based and hybrid projects. For userID-based projects, it returns an error.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.'
operationId: exportProjectForgottenUsers
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetForgottenUserEmailsResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get hashed forgotten users in compliance with GDPR
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/forgottenUserIds:
get:
description: 'Returns a hash for each <code>userId</code> currently forgotten by your project. Each forgotten <code>userId</code> is lowercased, trimmed, and hashed using SHA-256. This endpoint only works for userID-based and hybrid projects. For email-based projects, it returns an error.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.'
operationId: exportProjectForgottenUserIds
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetForgottenUserIdsResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get hashed forgotten userIds in compliance with GDPR
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/getByEmail:
get:
description: 'Get a user by email address (passed as a query parameter).<br/><br/>Returns the same data as <code>GET /api/users/{email}</code>. However, when making calls from Iterable''s API Documentation page, this endpoint provides better support for special characters.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: getUser
parameters:
- in: query
name: email
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get a user by email (query parameter)
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/getFields:
get:
description: 'Get all user fields within a project.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.'
operationId: getUserFields
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetUserFieldsResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get all user fields
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/getSentMessages:
get:
description: 'Gets messages sent to a user, by <code>email</code> address or <code>userId</code>. Returns 10 by default, up to 1,000.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.'
operationId: getSentMessages
parameters:
- description: user's email, either email or userId must be specified
in: query
name: email
required: false
schema:
type: string
- description: user's userId, either email or userId must be specified
in: query
name: userId
required: false
schema:
type: string
- description: 'max number of messages to return (default: 10, max limit: 1000)'
in: query
name: limit
required: false
schema:
type: integer
format: int32
default: 10
- description: only include messages from these campaigns
in: query
name: campaignIds
required: false
style: form
explode: true
schema:
type: array
items:
type: object
- description: start date time (yyyy-MM-dd HH:mm:ss ZZ)
in: query
name: startDateTime
required: false
schema:
type: string
format: date-time
- description: end date time (yyyy-MM-dd HH:mm:ss ZZ)
in: query
name: endDateTime
required: false
schema:
type: string
format: date-time
- description: exclude results coming from blast campaigns (ignored if campaignId is set)
in: query
name: excludeBlastCampaigns
required: false
schema:
type: boolean
default: false
- description: only include messages of this type
in: query
name: messageMedium
required: false
schema:
type: string
enum:
- Email
- Push
- InApp
- SMS
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/GetSentMessagesResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get messages sent to a user
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/merge:
post:
description: 'Merge two users.<br/><br/>In the request body, specify <code>sourceEmail</code> or <code>sourceUserId</code> (but not both), and <code>destinationEmail</code> or <code>destinationUserId</code> (but not both).<br/><br/>Returns an error if source user does not exist in Iterable. Will update source user if destination user is not found.<br/><br/><b>Rate limit</b>: 50 requests/second, per API key.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.'
operationId: mergeUsers
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'403':
description: Merging known user profiles is forbidden with specific API key type. Please use a server-side key.
'409':
description: Source or destination user forgotten
summary: Merge users
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MergeUsersRequest'
description: Merge users. All profile data and events will be migrated.
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/registerBrowserToken:
post:
description: 'Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Token limit</b>: Maximum of 500 browser tokens per user profile. Returns a 400 response code when this limit has been exceeded.'
operationId: registerBrowserToken
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Email/userId conflict
summary: Register a browser token for web push
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterBrowserTokenRequest'
description: Request to register browser
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/registerDeviceToken:
post:
description: 'Registers a device token for push. This will add the data if it doesn''t exist yet. It will also update data fields on the device. Data will be merged; missing fields are not deleted. Also, note that there is a soft limit on the number of unique fields a user can have (default is 1,000). Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Device limit</b>: Maximum of 500 devices per user profile. Endpoint returns a 400 response code when this limit has been exceeded.<br/><b>Rate limit</b>: 500 requests/second, per project.'
operationId: registerDeviceToken
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Email/userId conflict
summary: Register a device token for push
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RegisterDeviceTokenRequest'
description: Request to register device
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/unforget:
post:
description: 'Allows the Iterable project to resume collecting data about a previously forgotten user. Deleted data cannot be recovered. In email-based projects, you must unforget users by <code>email</code>. In userID-based projects, you must unforget users by <code>userId</code>. In hybrid projects and in projects that migrated from being email-based to being userID-based, you can unforget users by either <code>email</code> or <code>userId</code>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 3 requests/second, per project.<br/><br/><b>Daily Cap</b>: 1000 requests per 24 hour period, per project.'
operationId: unforget
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Unforget a user in compliance with GDPR
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
description: user's email to be removed from blacklist.
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/update:
post:
description: 'Updates user data or adds a user if none exists. Data is merged - missing fields are not deleted. Please note there is a soft limit (default: 1,000) on the number of unique fields users can have. Types of data fields must match the types sent in previous requests, across all data fields in the project.<br/>Processing time varies based on the current load for Iterable''s back-end services. To avoid race conditions, provide a buffer of at least 60 seconds between this request and subsequent dependent requests, such as <code>POST /api/email/target.</code><br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 500 requests/second, per project.'
operationId: updateUser
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Contact is GDPR forgotten<br/>Email/userId conflict
'429':
description: Rate limit exceeded. Response includes <code>params</code> with:<br/><code>rateLimitLimit</code> — maximum token capacity (burst allowance)<br/><code>rateLimitRemaining</code> — tokens remaining after this request<br/><code>rateLimitReset</code> — seconds until enough tokens refill to retry
summary: Update user data
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ApiUserUpdateRequest'
description: user object
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/updateEmail:
post:
description: Updates a user's <code>email</code>. <br/><br/>Use this endpoint with <a href="https://support.iterable.com/hc/articles/9216719179796">email-based projects.</a> To update an <code>email</code> in a userID-based or hybrid project, use <a href="#users_updateUser"><code>POST /api/users/update</code></a>. <br/><br/>In the request body, specify <code>currentEmail</code> or <code>currentUserId</code>, but not both. If you include both, <code>currentEmail</code> takes precedence.<br/><br/>Returns an error if the new email already exists in Iterable, or if the new email has been forgotten via a GDPR request.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.
operationId: updateEmail
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Contact is GDPR forgotten<br/>Email/userId conflict
summary: Update user email
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmailRequest'
description: Update a user's email. All profile data and events will be migrated.
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/updateSubscriptions:
post:
description: 'Updates user subscriptions. <b>IMPORTANT</b>: This endpoint overwrites (does not merge) existing data for any non-<code>null</code> fields specified in the request.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.'
operationId: updateSubscriptions
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
'409':
description: Email/userId conflict
summary: Update user subscriptions
tags:
- users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriptionsRequest'
description: Subscriptions to update
required: true
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/api/users/{email}:
delete:
description: 'Asynchronous. Deletes a specific user by <code>email</code>. Does not prevent future data collection about the user. This endpoint can be used to delete users from email-based projects and hybrid projects, but not userID-based projects.<br/><br/>On Iterable''s API Documentation page, this endpoint does not work for <code>email</code> values that contain a <code>/</code> character. In such cases, you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href="https://support.iterable.com/hc/articles/360043464871#using-api-keys">Using API keys</a>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: delete
parameters:
- description: email
in: path
name: email
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/IterableApiResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Delete a user by email
tags:
- users
security:
- api_key: []
get:
description: 'Get a user by email address (passed as a path parameter).<br/><br/>On Iterable''s API Documentation page, this endpoint does not work for <code>email</code> values that contain a <code>/</code> character. In such cases, you can use <code>GET /api/users/getByEmail</code> instead, or you can still call this endpoint with a tool like curl or Postman, or from your code. To learn how, read <a href="https://support.iterable.com/hc/articles/360043464871#using-api-keys">Using API keys</a>.<br/><br/>Learn about <a href="https://support.iterable.com/hc/articles/29156459027348">identifying users by <code>userId</code> and <code>email</code></a>.<br/><br/><b>Rate limit</b>: 100 requests/second, per project.'
operationId: getUser
parameters:
- description: email
in: path
name: email
required: true
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/UserResponse'
'400':
description: Invalid parameters
'401':
description: Invalid API key
summary: Get a user by email (path parameter)
tags:
- users
security:
- api_key: []
servers:
- url: https://api.iterable.com/
/users/update:
post:
operationId: updateUser
summary: Update a user profile
description: Updates an existing user profile or creates a new one if the user does not already exist. Accepts user fields, email, userId, and data fields to set or update on the user profile.
tags:
- users
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserUpdateRequest'
responses:
'200':
description: Successfully updated the user
content:
application/json:
schema:
$ref: '#/components/schemas/IterableResponse'
'400':
des
# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/iterable/refs/heads/main/openapi/iterable-users-api-openapi.yml