Blueshift Custom user lists API

A custom user list contains information about the users of your site such as name, email, phone number, and location. You can use this list as a segment and run campaigns for them.

Operations 8

PUT /api/v1/custom_user_lists/add_user_to_list/{list_id} Add user to list
PUT /api/v1/custom_user_lists/bulk_add_users_to_list/{list_id} Bulk add users to list
PUT /api/v1/custom_user_lists/bulk_remove_users_from_list/{list_id} Bulk remove users from list
POST /api/v1/custom_user_lists/create Create empty list
GET /api/v1/custom_user_lists/id/{custom_user_list_id} Get customer list details
PUT /api/v1/custom_user_lists/overwrite_list/{list_id} Overwrite users in a list
PUT /api/v1/custom_user_lists/remove_user_from_list/{list_id} Remove user from list
GET /api/v1/custom_user_lists/seed_lists Get seed lists from your account

Documentation

Specifications

Other Resources

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/blueshift-custom-user-lists-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

blueshift-custom-user-lists-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: These APIs will help you manage different workflows in Blueshift. Our powerful REST APIs provide an easy way to integrate your data and third party applications with Blueshift.
  version: 1.0.0
  title: Blueshift Custom user lists API
  contact:
    email: support@getblueshift.com
servers:
- url: https://api.getblueshift.com
- url: https://api.eu.getblueshift.com
tags:
- name: Custom user lists
  description: A custom user list contains information about the users of your site such as name, email, phone number, and location. You can use this list as a segment and run campaigns for them.
paths:
  /api/v1/custom_user_lists/add_user_to_list/{list_id}:
    put:
      summary: Add user to list
      description: Use this endpoint to add a user to a custom list.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: list_id
        required: true
        description: 'Specify the ID of the custom user list to which you want to add a user. You can find the list ID in the URL when viewing the list in the Blueshift app. For example: `https://app.getblueshift.com/dashboard#/app/custom_list/41148/edit` - the list ID here is `41148`.'
        schema:
          type: integer
        example: 41148
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identifier_key:
                  type: string
                  description: 'Specify how you want to identify the user:


                    • Use `email` to identify by email address

                    • Use `customer_id` to identify by customer ID


                    This must match the source type configured when the list was created.'
                  example: email
                  enum:
                  - email
                  - customer_id
                identifier_value:
                  type: string
                  description: 'Specify the actual identifier value:


                    • If `identifier_key` is `email`: provide the user''s email address (e.g., `john.doe@example.com`)

                    • If `identifier_key` is `customer_id`: provide the customer ID (e.g., `23a1fae1-2103-4e18-b58c-9db0ea9f7bf7`)


                    You can find the customer ID in the URL when viewing a customer profile: `https://app.getblueshift.com/dashboard#/app/customer/<CUSTOMER_ID>/show/overview`'
                  example: john.doe@example.com
              required:
              - identifier_key
              - identifier_value
        description: Specify the details of the user that you want to add to the list.
      responses:
        '200':
          description: OK
        '400':
          description: Bad request - The request was invalid or cannot be otherwise served. An accompanying error message will explain further.
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: Resource not found - Can happen due to resource conflicts. Re-try with exponential backoff. Contact us on support@blueshift.com if the issue persists.
        '409':
          description: Conflict error, please retry - The request could not be completed due to a conflict with the current state of the target resource, re-try with exponential backoff.
        '422':
          description: Unprocessable Entity - The request was well-formed but contains semantic errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: Validation failed
        '429':
          description: "Rate limit exceeded\t- Too many requests. Contact us on support@blueshift.com for recommended throughput."
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information."
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff.
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff.
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff.
  /api/v1/custom_user_lists/bulk_add_users_to_list/{list_id}:
    put:
      summary: Bulk add users to list
      description: Bulk add users to a custom list — up to 25 per call, or 500 with `async=true`.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: list_id
        required: true
        description: Specify the ID of the list to which you want to add users in bulk.
        schema:
          type: integer
      - in: query
        name: async
        required: false
        description: Set this parameter to `true` to add users to the list asynchronously. In async mode, you can send up to 500 identifier values in one API call, and the request runs in the background after it is accepted. Omit this parameter or set it to `false` to add users synchronously, where you can send up to 25 identifier values in one API call. The response format is the same in both modes.
        schema:
          type: boolean
          default: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identifier_key:
                  type: string
                  description: Specify the key that you use to identify the users. This field can either take `customer_id` or `email`.
                identifier_values:
                  type: array
                  items:
                    type: string
                  description: Specify the values of the identifier key. For example, if you specify `customer_id` in the `identifier_key` field, specify the users' alphanumeric customer IDs in this field. Such as [`abcd1234`]. If you specify `email` in the `identifier_key`, specify the email address of the users you want to add to the list. Such as, [`johndoe@blueshift.com`]. You can send a maximum of 25 values in sync mode and 500 values in async mode.
              required:
              - identifier_key
              - identifier_values
        description: Specify the details of the users that you want to add to the list.
      responses:
        '200':
          description: OK - The request was successful. In sync mode, the users are added to the list. In async mode, the request is accepted and runs in the background. The response format is the same in both modes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  errors:
                    type: array
                    items:
                      type: object
                    example: []
              example:
                status: ok
                errors: []
        '400':
          description: Input params not valid - The request contains an invalid parameter, such as an unsupported `identifier_key`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        detail:
                          type: string
                          example: Input params not valid
              example:
                errors:
                - detail: Input params not valid
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: The list has been deleted.
        '413':
          description: 'Request Entity Too Large - The number of identifier values exceeds the limit: 25 in sync mode (`async` omitted or `false`), 500 in async mode (`async=true`).'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: You can add maximum 25 users in one api call
              examples:
                sync_limit_exceeded:
                  summary: Sync mode - more than 25 values
                  value:
                    error: You can add maximum 25 users in one api call
                async_limit_exceeded:
                  summary: Async mode - more than 500 values
                  value:
                    error: You can add maximum 500 users in one async api call
        '422':
          description: Functionality not supported for old list.
        '429':
          description: "Rate limit exceeded\t- Too many requests"
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information"
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff
  /api/v1/custom_user_lists/bulk_remove_users_from_list/{list_id}:
    put:
      summary: Bulk remove users from list
      description: Bulk remove users from a custom list — up to 25 per call, or 500 with `async=true`.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: list_id
        required: true
        description: Specify the ID of the list from which you want to remove users in bulk.
        schema:
          type: integer
      - in: query
        name: async
        required: false
        description: Set this parameter to `true` to remove users from the list asynchronously. In async mode, you can send up to 500 identifier values in one API call, and the request runs in the background after it is accepted. Omit this parameter or set it to `false` to remove users synchronously, where you can send up to 25 identifier values in one API call. The response format is the same in both modes.
        schema:
          type: boolean
          default: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identifier_key:
                  type: string
                  description: Specify the key that you use to identify the users. This field can either take `customer_id` or `email`.
                identifier_values:
                  type: array
                  items:
                    type: string
                  description: Specify the values of the identifier key. For example, if you specify `customer_id` in the `identifier_key` field, specify the users' alphanumeric customer IDs in this field. Such as [`abcd1234`]. If you specify `email` in the `identifier_key`, specify the email address of the users you want to remove from the list. Such as, [`johndoe@blueshift.com`]. You can send a maximum of 25 values in sync mode and 500 values in async mode.
              required:
              - identifier_key
              - identifier_values
        description: Specify the details of the users that you want to bulk remove from the list.
      responses:
        '200':
          description: OK - The request was successful. In sync mode, the users are removed from the list. In async mode, the request is accepted and runs in the background. The response format is the same in both modes.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  errors:
                    type: array
                    items:
                      type: object
                    example: []
              example:
                status: ok
                errors: []
        '400':
          description: Input params not valid - The request contains an invalid parameter, such as an unsupported `identifier_key`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        detail:
                          type: string
                          example: Input params not valid
              example:
                errors:
                - detail: Input params not valid
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: The list has been deleted.
        '413':
          description: 'Request Entity Too Large - The number of identifier values exceeds the limit: 25 in sync mode (`async` omitted or `false`), 500 in async mode (`async=true`).'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: You can remove maximum 25 users in one api call
              examples:
                sync_limit_exceeded:
                  summary: Sync mode - more than 25 values
                  value:
                    error: You can remove maximum 25 users in one api call
                async_limit_exceeded:
                  summary: Async mode - more than 500 values
                  value:
                    error: You can remove maximum 500 users in one async api call
        '422':
          description: Functionality not supported for old list.
        '429':
          description: "Rate limit exceeded\t- Too many requests"
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information"
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff
  /api/v1/custom_user_lists/create:
    post:
      summary: Create empty list
      description: Use this endpoint to create an empty user list.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  example: SF user list
                  description: Specify a name for the list. You can identify the list that you create using this name on the dashboard. Ensure that the name that you specify is unique.
                description:
                  type: string
                  example: The list of users who are based in San Francisco.
                  description: Specify an appropirate description of that provides context on what the list contains.
                is_seed_list:
                  type: integer
                  example: 0
                  description: Specify if this list is a seed list or not. Specify '0' if this is not a seed list. If it is, specify '1'. A seed list is a list of users -- such as internal users -- who should receive a copy of the message that you send in a campaign. You can choose a seed list in either a one-time or a recurring campaign.
                source:
                  type: string
                  example: email
                  description: "Specify the source that you want to use to add customers to this list. You can specify either `email` or `customer_id`.  If you leave this field empty, `email` is automatically selected for the list.  \n"
              required:
              - name
              - description
        description: Specify the details about the custom list.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                  account_id:
                    type: integer
                    example: 182
                  filename:
                    type: string
                  description:
                    type: string
                  user_count:
                    type: integer
                  status:
                    type: string
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-10-03T04:57:24.000Z'
                  updated_at:
                    type: string
                    format: date-time
                  is_exporting:
                    type: boolean
                  user_id:
                    type: string
                    example: 4981
                  source:
                    type: string
                  uuid:
                    type: string
                  is_seed_list:
                    type: boolean
                  deleted_at:
                    type: string
                    format: date-time
                  import_method:
                    type: string
                  version:
                    type: string
                  author:
                    type: string
                example:
                - id: 48
                  account_id: 15
                  filename: f4
                  description: description
                  filesize: null
                  user_count: 0
                  status: ready
                  created_at: '2021-08-25T06:06:59.411Z'
                  updated_at: '2021-08-25T06:06:59.411Z'
                  is_exporting: false
                  user_id: 4981
                  source: email
                  uuid: 35cb281b-efd6-46b8-8f95-90921e4b1d1f
                  is_seed_list: false
                  deleted_at: null
                  import_method: api
                  version: v2
                  author: John Doe
        '400':
          description: Bad request - The request was invalid or cannot be otherwise served. An accompanying error message will explain further.
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: Resource not found - Can happen due to resource conflicts. Re-try with exponential backoff. Contact us on support@blueshift.com if the issue persists.
        '409':
          description: Conflict error, please retry - The request could not be completed due to a conflict with the current state of the target resource, re-try with exponential backoff.
        '422':
          description: Unprocessable Entity - The request was well-formed but contains semantic errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: Validation failed
        '429':
          description: "Rate limit exceeded\t- Too many requests. Contact us on support@blueshift.com for recommended throughput."
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information."
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff.
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff.
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff.
  /api/v1/custom_user_lists/id/{custom_user_list_id}:
    get:
      summary: Get customer list details
      description: Use this endpoint to get details of the specified customer list from your account.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: custom_user_list_id
        required: true
        description: Specify the ID of the list.
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    example: 6883
                  account_id:
                    type: integer
                    example: 182
                  filename:
                    type: string
                    description: The file that you used to import the seed list.
                    example: dummy_push_upload.csv_2017-11-28:T10:11:38
                  description:
                    type: string
                    example: email,device_tokens,device_ids
                  filesize:
                    type: integer
                    example: 159
                  user_count:
                    type: integer
                    example: 1000
                  status:
                    type: string
                    example: ready
                  created_at:
                    type: string
                    format: date-time
                    example: '2024-08-25T06:06:59.412Z'
                  updated_at:
                    type: string
                    format: date-time
                    example: '2021-08-25T06:06:59.412Z'
                  is_exporting:
                    type: boolean
                    example: false
                  user_id:
                    type: integer
                    example: 3808
                  source:
                    type: string
                    example: email
                  uuid:
                    type: string
                    example: 5ab42b99-3332-4af7-8aad-91b6baa934fa
                  is_seed_list:
                    type: boolean
                    example: true
                  deleted_at:
                    type: string
                    format: date-time
                    example: null
                  version:
                    type: string
                    example: v1
                  import_method:
                    type: string
                    example: upload
                  author:
                    type: string
                    example: John Doe
        '400':
          description: Bad request - The request was invalid or cannot be otherwise served. An accompanying error message will explain further.
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: Resource not found - The customer list you are looking for could not be found.
        '409':
          description: Conflict error, please retry - The request could not be completed due to a conflict with the current state of the target resource, re-try with exponential backoff.
        '422':
          description: Unprocessable Entity - The request was well-formed but contains semantic errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: Validation failed
        '429':
          description: "Rate limit exceeded\t- Too many requests. Contact us on support@blueshift.com for recommended throughput."
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information."
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff.
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff.
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff.
  /api/v1/custom_user_lists/overwrite_list/{list_id}:
    put:
      summary: Overwrite users in a list
      description: Use this endpoint to overwrite all users in a custom list.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: list_id
        required: true
        description: Specify the ID of the list to which you want to overwrite users.
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                s3_file_path:
                  type: string
                  description: Specify the S3 path of the file containing identifiers that will overwrite users in the custom user list. The recommendation is to upload the file to the import/custom_lists location under the Blueshift S3 bucket.
              required:
              - s3_file_path
        description: Specify the S3 file path with which you want to overwrite the user list
      responses:
        '200':
          description: OK
        '400':
          description: Bad request - The request was invalid or cannot be otherwise served. An accompanying error message will explain further.
        '401':
          description: Unauthorized - API authentication failed due to an invalid or missing API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Not authorized
        '403':
          description: Forbidden - The API key does not have sufficient permissions to perform this action.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Forbidden
        '404':
          description: Resource not found - Can happen due to resource conflicts. Re-try with exponential backoff. Contact us on support@blueshift.com if the issue persists.
        '409':
          description: Conflict error, please retry - The request could not be completed due to a conflict with the current state of the target resource, re-try with exponential backoff.
        '422':
          description: Unprocessable Entity - The request was well-formed but contains semantic errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: false
                  error:
                    type: string
                    example: Validation failed
        '429':
          description: "Rate limit exceeded\t- Too many requests. Contact us on support@blueshift.com for recommended throughput."
        '500':
          description: "Internal Server Error\t- Please contact blueshift for more information."
        '502':
          description: Service unavailable, please retry - Bad Gateway, re-try with exponential backoff.
        '503':
          description: Service unavailable, please retry - Service Unavailable, re-try with exponential backoff.
        '504':
          description: Service unavailable, please retry - Gateway Timeout, please re-try with exponential backoff.
  /api/v1/custom_user_lists/remove_user_from_list/{list_id}:
    put:
      summary: Remove user from list
      description: Use this endpoint to remove a user from a custom list.
      tags:
      - Custom user lists
      security:
      - user_api_auth: []
      parameters:
      - in: path
        name: list_id
        required: true
        description: Specify the ID of the list from which you want to remove a user.
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                identifier_key:
                  type: string
                  description: Specify the key that you use to identify a user. This field can either take `customer_id` or `email`.
                  example: janedoe@acme.com
                identifier_value:
                  type: string
                  description: Specify the value of the identifier key. For example, if you specify `customer_id` in the `identifier_key` field, specify the user's alphanumeric customer ID in this field. Such as `abcd1234`. If you specify `email` in the `identifier_key`, specify the user's email address.
                  example: '48759893'
              required:
              - identifier_key
              - identifier

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blueshift/refs/heads/main/openapi/blueshift-custom-user-lists-api-openapi.yml