Lytics Profiles API

Get and delete user profiles.

Operations 9

DELETE /attributes/{table}/{key}/{value} Delete profile attributes
GET /attributes/{table}/{key}/{value} Get profile attributes
PATCH /attributes/{table}/{key}/{value} Update some profile attributes
PUT /attributes/{table}/{key}/{value} Update all profile attributes
GET /identity/deletestatus/{request_id} Get the status of a user profile deletion
POST /identity/lookup Get a user profile (POST)
DELETE /identity/queue/bulk/{table}/{field} Bulk delete user profiles
DELETE /identity/{table}/{key}/{value} Delete a user profile
GET /identity/{table}/{key}/{value} Get a user profile (GET)

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/lytics-profiles-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 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 Specification

lytics-profiles-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@lytics.com
    name: Lytics Support
    url: https://support.lytics.com/hc/en-us
  description: Version 2 of the Lytics API
  termsOfService: https://www.lytics.com/terms-of-service/
  title: Lytics Profiles API
  version: '2.0'
servers:
- url: https://api.lytics.io/v2
tags:
- description: Get and delete user profiles.
  name: Profiles
paths:
  /attributes/{table}/{key}/{value}:
    delete:
      description: Delete profile attributes for a user.
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiResponse'
          description: OK
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      summary: Delete profile attributes
      tags:
      - Profiles
    get:
      description: Get profile attributes for a user.
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.AttributeResponse'
                  type: object
          description: User profile"  example({"data":{"email":"hello@lytics.com","first_name":"John","last_name":"Doe","age":30,"city":"Portland","last_updated":"2023-10-15T14:30:00Z"},"status":200,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600"})
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":400,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"BADREQ-001","message":"Invalid table name"}]})
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":404,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"NOTFOUND-003","message":"The attribute you are trying to read does not exist"}]})
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":500,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"INTERNAL-019","message":"Internal server error"}]})
      security:
      - ApiKeyAuth: []
      - ApiKeyAuth: []
      summary: Get profile attributes
      tags:
      - Profiles
    patch:
      description: Update some of the profile attributes for a user.
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: object
        description: Profile attributes to update
        required: true
        x-originalParamName: attributes
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.AttributeResponse'
                  type: object
          description: User profile"  example({"data":{"email":"hello@lytics.com","first_name":"John","last_name":"Doe","age":30,"city":"Portland","external_audiences":["sports enthusiasts", "music lovers", "new customers"],"last_updated":"2025-10-15T14:30:00Z"},"status":200,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600"})
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":400,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"BADREQ-001","message":"The body of your request could not be processed. Please check the format of your request."}]})
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":404,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"NOTFOUND-003","message":"The attribute you are trying to update does not exist"}]})
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":500,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"INTERNAL-019","message":"Internal server error"}]})
      security:
      - ApiKeyAuth: []
      summary: Update some profile attributes
      tags:
      - Profiles
    put:
      description: Update all of the profile attributes for a user.
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              type: object
        description: Profile attributes to update
        required: true
        x-originalParamName: attributes
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.AttributeResponse'
                  type: object
          description: User profile"  example({"data":{"email":"hello@lytics.com","first_name":"John","last_name":"Doe","age":30,"city":"Portland","external_audiences":["sports enthusiasts", "music lovers", "new customers"],"last_updated":"2025-10-15T14:30:00Z"},"status":200,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600"})
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":400,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"BADREQ-001","message":"The body of your request could not be processed. Please check the format of your request."}]})
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":404,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"NOTFOUND-003","message":"The attribute you are trying to update does not exist"}]})
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: status":500,"request_id":"bc58cac9-4712-4ff2-81c2-89941bd7b600","errors":[{"code":"INTERNAL-019","message":"Internal server error"}]})
      security:
      - ApiKeyAuth: []
      summary: Update all profile attributes
      tags:
      - Profiles
  /identity/deletestatus/{request_id}:
    get:
      description: Get the status of a GDPR-compliant user profile deletion request
      parameters:
      - description: The GDPR delete request ID
        in: path
        name: request_id
        required: true
        schema:
          type: string
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.IdentityDeleteResponse'
                  type: object
          description: Delete status
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      summary: Get the status of a user profile deletion
      tags:
      - Profiles
  /identity/lookup:
    post:
      description: Get a user profile by identity key/value using POST
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: Fields to exclude (e.g. email,city)
        in: query
        name: field_blocklist
        schema:
          items:
            type: string
          type: array
      requestBody:
        content:
          '*/*':
            schema:
              type: object
        description: identity/lookup body parameters (table, key, value)
        required: true
        x-originalParamName: body
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.IdentityResponse'
                  type: object
          description: User profile
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      summary: Get a user profile (POST)
      tags:
      - Profiles
  /identity/queue/bulk/{table}/{field}:
    delete:
      description: Queue bulk GDPR-compliant deletion requests for multiple user profiles
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity field (e.g. email)
        in: path
        name: field
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
        description: Bulk delete request body
        required: true
        x-originalParamName: body
      responses:
        '202':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.IdentityDeleteBulkResponse'
                  type: object
          description: Bulk delete results
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      summary: Bulk delete user profiles
      tags:
      - Profiles
  /identity/{table}/{key}/{value}:
    delete:
      description: Delete a user profile, compliant with GDPR deletion requests
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      responses:
        '202':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.IdentityDeleteResponse'
                  type: object
          description: Accepted
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      - ApiKeyAuth: []
      summary: Delete a user profile
      tags:
      - Profiles
    get:
      description: Get a user profile by identity key/value
      parameters:
      - description: The account ID. Defaults to the user's default account.
        in: query
        name: account_id
        schema:
          type: string
      - description: The table (e.g. user)
        in: path
        name: table
        required: true
        schema:
          type: string
      - description: Identity Key (e.g. email)
        in: path
        name: key
        required: true
        schema:
          type: string
      - description: Value (e.g. hello@lytics.com)
        in: path
        name: value
        required: true
        schema:
          type: string
      - description: Fields to exclude (e.g. email,city)
        in: query
        name: field_blocklist
        schema:
          items:
            type: string
          type: array
      responses:
        '200':
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/models.ApiResponse'
                - properties:
                    data:
                      $ref: '#/components/schemas/models.IdentityResponse'
                  type: object
          description: User profile
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models.ApiErrorResponse'
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
      summary: Get a user profile (GET)
      tags:
      - Profiles
components:
  schemas:
    models.AttributeResponse:
      additionalProperties: true
      type: object
    models.ApiErrorResponse:
      properties:
        errors:
          description: Lytics API Errors
          items:
            $ref: '#/components/schemas/lioerrors.ApiV2ErrorOut'
          type: array
        request_id:
          type: string
        status:
          description: HTTP Status Code
          type: integer
      type: object
    models.IdentityResponse:
      properties:
        entity:
          additionalProperties: true
          description: Materialized view of a profile, with applicable mappings
          type: object
        field_sources:
          additionalProperties:
            items:
              type: string
            type: array
          description: 'FieldSources lists, per field, the attribute-store sources feeding it

            (Cloud Connect v2 datamodels, Attribute API) that have no schema mapping.

            Only populated when requested via field_sources=true.'
          type: object
        fragments:
          description: Identity fragments that compose the profile
          items:
            $ref: '#/components/schemas/models.IdentityFragment'
          type: array
        keys:
          description: Identifiers for this entity.
          items:
            $ref: '#/components/schemas/models.Kv'
          type: array
      type: object
    models.Kv:
      properties:
        key:
          type: string
        value:
          type: string
      type: object
    models.IdentityFragment:
      properties:
        conflict:
          description: If this fragment has any conflicts preventing linking with the current profile.
          type: boolean
        conflicts_with:
          description: Identifier of the conflicted neighbor.
          type: string
        created:
          description: When this fragment was created
          type: string
        keys:
          description: Identifiers for this fragment.
          items:
            $ref: '#/components/schemas/models.Kv'
          type: array
        modified:
          description: When this fragment was last modified
          type: string
        neighbor_limit:
          description: Whether this fragment approaches overlinking limits
          type: boolean
        neighbors:
          description: Neighbors to this fragment.
          items:
            $ref: '#/components/schemas/models.Kv'
          type: array
        streams:
          description: All streams that contribute data to this fragment.
          items:
            type: string
          type: array
      type: object
    lioerrors.ApiV2ErrorOut:
      properties:
        code:
          description: Lytics Error Code
          enum:
          - UNKNOWN-000
          - BADREQ-001
          - JOB-BADREQ-002
          - NOTFOUND-003
          - JOB-NOTFOUND-004
          - WF-NOTFOUND-005
          - AUTH-NOTFOUND-006
          - AUTHTYPE-NOTFOUND-007
          - AUTH-BADREQ-008
          - TABLE-NOTFOUND-009
          - SCHEMA-NOTFOUND-010
          - SCHEMAVERSION-NOTFOUND-011
          - ENTITY-NOTFOUND-012
          - QUERY-NOTFOUND-013
          - STREAM-NOTFOUND-014
          - PROVIDER-BADREQ-015
          - PROVIDER-NOTFOUND-016
          - UNAUTHORIZED-017
          - SCHEMA-INVALID-018
          - INTERNAL-019
          - ROUTERULE-NOTFOUND-020
          - ACCOUNT-NOTFOUND-021
          - JOB-FAULT-022
          - USER-NOTFOUND-023
          - USER-BADREQ-024
          - JSON-BADREQ-025
          - FORBIDDEN-026
          type: string
        level:
          description: When the error was generated
          type: string
        message:
          description: A description of the error that occurred
          type: string
        timestamp:
          description: The time the error occurred
          format: date-time
          type: string
      type: object
    models.ApiResponse:
      properties:
        _meta:
          additionalProperties: true
          description: Response Metadata
          type: object
        data:
          description: Response Payload
          type: object
        request_id:
          type: string
        status:
          description: HTTP Status Code
          type: integer
      type: object
    models.IdentityDeleteResponse:
      properties:
        completed:
          type: boolean
        request_id:
          type: string
        requested:
          type: string
        state:
          type: string
        submitted:
          type: string
      type: object
    models.IdentityDeleteBulkResponse:
      properties:
        errors:
          description: A map of value:error for unsuccessful submissions
          type: object
        successes:
          additionalProperties:
            type: string
          description: A map of value:request_id for successful submissions
          type: object
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: Authorization
      type: apiKey