Mem0 Profiles API
The Profiles API from Mem0 — 4 operation(s) for profiles.
The Profiles API from Mem0 — 4 operation(s) for profiles.
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/mem0:mem0-profiles-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 3.2.0
info:
title: Mem0 API Docs Profiles API
description: mem0.ai API Docs
contact:
email: support@mem0.ai
license:
name: Apache 2.0
version: v1
servers:
- url: https://api.mem0.ai/
security:
- ApiKeyAuth: []
tags:
- name: Profiles
paths:
/v2/entities/{entity_type}/{entity_id}/profile/:
get:
tags:
- Profiles
operationId: profiles_read
summary: Get an entity's profile
description: 'Return the memory profile for one user.
Generation is asynchronous, so a known entity that has no profile yet is a normal 200 carrying a `status`. A 404 means only that no such entity exists.'
parameters:
- name: entity_type
in: path
required: true
schema:
type: string
enum:
- user
description: The kind of entity that carries the profile.
- name: entity_id
in: path
required: true
schema:
type: string
description: The entity's id, as supplied when the memory was added.
responses:
'200':
description: The profile envelope.
content:
application/json:
schema:
type: object
properties:
profile:
type: object
additionalProperties: true
description: The generated profile, shaped by the project's schema. Empty unless status is succeeded.
status:
type: string
enum:
- succeeded
- pending
- failed
- not_enabled
- insufficient_data
description: Generation state. Branch on this rather than on an empty profile.
entity_type:
type: string
enum:
- user
entity_id:
type: string
updated_at:
type:
- string
- 'null'
format: date-time
generation_count:
type: integer
'400':
description: Unsupported entity type.
'404':
description: No such entity in this project.
/v2/profiles/settings/:
get:
tags:
- Profiles
operationId: profiles_settings_read
summary: Get profile settings
description: Return the profile settings for the project the API key is scoped to.
responses:
'200':
description: Current settings.
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: Whether profile generation runs for this project. Project-wide.
entities:
type: object
description: Settings for user profiles, under `user`.
properties:
user:
type: object
properties:
schema:
type:
- object
- 'null'
additionalProperties: true
description: JSON Schema describing the profile. Every property needs a description.
custom_instructions:
type:
- string
- 'null'
description: Extra guidance for the extraction step.
capabilities:
type: object
properties:
jobs:
type: boolean
estimates:
type: boolean
samples:
type: boolean
full_rebuild:
type: boolean
description: Whether a project-wide rebuild (regenerate/backfill) is available. Currently false.
post:
tags:
- Profiles
operationId: profiles_settings_update
summary: Update profile settings
description: Update the project's profile settings. Only the fields present in the body are written, so one setting can change without re-sending the others.
requestBody:
required: true
content:
application/json:
schema:
type: object
description: Only the fields present are written. `schema` and `custom_instructions` nest under `entities.user`; a flat body is rejected.
properties:
enabled:
type: boolean
description: Whether profile generation runs for this project. Project-wide.
entities:
type: object
description: Settings for user profiles, under `user`.
properties:
user:
type: object
properties:
schema:
type:
- object
- 'null'
additionalProperties: true
description: JSON Schema describing the profile. Every property needs a description. Send null to clear it.
custom_instructions:
type:
- string
- 'null'
description: Extra guidance for the extraction step. Send null to clear it.
responses:
'200':
description: Settings as stored after the update.
content:
application/json:
schema:
type: object
properties:
enabled:
type: boolean
description: Whether profile generation runs for this project. Project-wide.
entities:
type: object
description: Settings for user profiles, under `user`.
properties:
user:
type: object
properties:
schema:
type:
- object
- 'null'
additionalProperties: true
description: JSON Schema describing the profile. Every property needs a description.
custom_instructions:
type:
- string
- 'null'
description: Extra guidance for the extraction step.
capabilities:
type: object
properties:
jobs:
type: boolean
estimates:
type: boolean
samples:
type: boolean
full_rebuild:
type: boolean
description: Whether a project-wide rebuild (regenerate/backfill) is available. Currently false.
'400':
description: The schema is not a valid profile schema.
/v2/profiles/jobs/:
post:
tags:
- Profiles
operationId: profiles_create_job
summary: Generate profiles
description: 'Start one generation. `operation` says what to build:
- `sample` — up to 10 real entities, so a schema can be judged before it is used widely. These are real profiles: they are saved to those entities and count toward usage.
- `trigger` — one entity, named by `entity_id`.
Send an `Idempotency-Key` header. Replaying the same key returns the same job instead of charging twice. Poll `status_url` from the response until the status is terminal.'
parameters:
- in: header
name: Idempotency-Key
required: true
schema:
type: string
minLength: 8
maxLength: 128
description: 'Makes a retry safe: the same key returns the same job.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- operation
- entity_type
properties:
operation:
type: string
enum:
- sample
- trigger
description: What to generate. Optional only when `entity_id` is set, which means `trigger`.
entity_type:
type: string
enum:
- user
entity_id:
type: string
description: One entity, for `trigger`.
limit:
type: integer
minimum: 1
maximum: 10
description: How many entities to sample.
responses:
'202':
description: Job accepted.
content:
application/json:
schema:
type: object
properties:
job_id:
type: string
status:
type: string
status_url:
type: string
description: Poll this. Building the path yourself breaks on a route change.
operation:
type: string
entity_type:
type: string
entity_count_reserved:
type: integer
description: Entities reserved against usage for this job.
event_id:
type:
- string
- 'null'
replayed:
type: boolean
description: True when an Idempotency-Key returned an existing job.
sampled:
type: integer
description: '`sample` only.'
entity_ids:
type: array
items:
type: string
description: '`sample` only: the entity ids picked. Read each with `GET /v2/entities/user/{entity_id}/profile/`.'
'400':
description: Unknown or missing `operation`, or profiles are not configured.
'402':
description: Payment required.
'409':
description: A job is already running, or the Idempotency-Key was used for a different request. Branch on `error.code`.
'429':
description: Cooldown. `retry_after_seconds` sits inside `error`.
'503':
description: '`jobs_unavailable` — generation is switched off for this project.'
/v2/profiles/jobs/{job_id}/:
get:
tags:
- Profiles
operationId: profiles_get_job
summary: Read a generation job
description: The job nests under `job`. `total` is null until `enumeration_complete`, and `completed` is `succeeded + failed + skipped`.
parameters:
- in: path
name: job_id
required: true
schema:
type: string
responses:
'200':
description: The job.
content:
application/json:
schema:
type: object
properties:
job:
type: object
properties:
id:
type: string
operation:
type: string
entity_type:
type: string
status:
type: string
enum:
- QUEUED
- RUNNING
- SUCCEEDED
- PARTIALLY_SUCCEEDED
- FAILED
- CANCELLED
total:
type:
- integer
- 'null'
enumeration_complete:
type: boolean
completed:
type: integer
succeeded:
type: integer
failed:
type: integer
skipped:
type: integer
'404':
description: No such job in this project.
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: Authorization
description: 'API key authentication. Prefix your Mem0 API key with ''Token ''. Example: ''Token your_api_key'''
x-original-swagger-version: '2.0'