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.
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
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