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/past-dev:past-dev-identities-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: 3.2.0
info:
title: Past Dev Identities API
version: 1.0.0
contact:
name: past.dev
url: https://past.dev/call
email: support@past.dev
description: 'Operations tagged identities across 2 of this provider''s published API definitions: past-dev-openapi.json, past-dev.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.past.dev
description: Production
security:
- bearerAuth: []
tags:
- name: Identities
description: Manage customer-owned identities and traits.
paths:
/api/v1/identities/{identity}:
put:
operationId: upsertIdentity
tags:
- Identities
summary: Replace an identity
description: Create an identity or replace its complete set of customer-authored string traits.
parameters:
- name: identity
in: path
required: true
schema:
type: string
maxLength: 200
description: The customer-owned identity id within the project selected by the bearer key, percent-encoded.
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:write
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpsertIdentityRequest'
responses:
'200':
description: The created or updated identity.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Identity'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
patch:
operationId: patchIdentity
tags:
- Identities
summary: Merge identity traits
description: Merge supplied traits into one identity. Explicit null removes a trait and missing keys remain unchanged.
parameters:
- name: identity
in: path
required: true
schema:
type: string
maxLength: 200
description: The customer-owned identity id within the project selected by the bearer key, percent-encoded.
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:write
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchIdentityRequest'
responses:
'200':
description: The updated identity.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Identity'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
get:
operationId: getIdentity
tags:
- Identities
summary: Read one identity
description: Return one identity with traits, origin, timestamps, and the audience slugs it currently reaches.
parameters:
- name: identity
in: path
required: true
schema:
type: string
maxLength: 200
description: The customer-owned identity id within the project selected by the bearer key, percent-encoded.
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:read
responses:
'200':
description: The requested identity.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Identity'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No matching identity exists in the selected project.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
delete:
operationId: deleteIdentity
tags:
- Identities
summary: Delete one identity
description: Delete the directory record and remove it from audiences. Stored memory is retained. Returns no body.
parameters:
- name: identity
in: path
required: true
schema:
type: string
maxLength: 200
description: The customer-owned identity id within the project selected by the bearer key, percent-encoded.
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:write
responses:
'204':
description: The identity was deleted. No response body.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: No matching identity exists in the selected project.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.past.dev
description: Production
/api/v1/identities/bulk:
post:
operationId: bulkUpsertIdentities
tags:
- Identities
parameters:
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:write
summary: Replace identities in bulk
description: Replace traits for up to 1,000 identities in one transaction. A malformed row refuses the complete batch.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkIdentityRequest'
responses:
'200':
description: One created or updated status for each distinct identity.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/BulkIdentityResponse'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: A concurrent write raced this batch. Nothing was applied; retry.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.past.dev
description: Production
/api/v1/identities:
get:
operationId: listIdentities
tags:
- Identities
summary: List identities
description: List identities newest first with cursor pagination and optional filtering by trait key and value.
security:
- bearerAuth: []
- managementKeyAuth: []
- agentTokenAuth:
- memory:read
parameters:
- name: project
in: query
required: false
schema:
type: string
description: Project slug. Required with a management key. A project key names its project by itself, and a different slug returns 400 project-mismatch.
- name: after
in: query
schema:
type: string
description: Opaque cursor from the previous page.
- name: limit
in: query
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
description: Page size. A value outside the range is clamped.
- name: traitKey
in: query
schema:
type: string
description: Require this trait key to exist.
- name: traitValue
in: query
schema:
type: string
description: When traitKey is present, require this exact value.
responses:
'200':
description: One page of identities.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/IdentityList'
'400':
description: The request is malformed or violates a field constraint. Match behavior on the response code field.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: 'missing-api-key: no bearer. malformed-api-key: the header or the key has the wrong shape, or an agent token was sent to a route that accepts keys only. unauthorized: the key is unknown, expired, revoked, or of the kind this route refuses, or the agent token is invalid or expired.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: 'project-archived: the project of the key, or the project an agent token names, is archived. Unarchive it in the console to resume. insufficient-scope: the agent token does not carry the scope of the route.'
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Any other failure uses the same JSON error envelope.
headers:
X-Request-Id:
$ref: '#/components/headers/RequestId'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.past.dev
description: Production
components:
schemas:
IdentityList:
type: object
required:
- identities
- hasMore
- endCursor
additionalProperties: false
properties:
identities:
type: array
items:
$ref: '#/components/schemas/Identity'
hasMore:
type: boolean
endCursor:
type:
- string
- 'null'
BulkIdentityResponse:
type: object
required:
- identities
additionalProperties: false
properties:
identities:
type: array
items:
$ref: '#/components/schemas/BulkIdentityResult'
PatchIdentityRequest:
type: object
additionalProperties: false
properties:
traits:
type: object
propertyNames:
maxLength: 200
additionalProperties:
type:
- string
- 'null'
maxLength: 2000
BulkIdentityResult:
type: object
required:
- identity
- status
additionalProperties: false
properties:
identity:
type: string
status:
type: string
enum:
- created
- updated
Identity:
type: object
required:
- identity
- traits
- origin
- lastSeenAt
- createdAt
- updatedAt
additionalProperties: false
properties:
identity:
type: string
traits:
type: object
propertyNames:
maxLength: 200
additionalProperties:
type: string
maxLength: 2000
origin:
type: string
enum:
- api
- ingest
- csv
- audience
- connector
- console
- login
- link
lastSeenAt:
type:
- string
- 'null'
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
audiences:
type:
- array
- 'null'
items:
type: string
description: The audience slugs the identity reaches, on the single-record read; null elsewhere.
BulkIdentityRequest:
type: array
minItems: 1
maxItems: 1000
items:
$ref: '#/components/schemas/BulkIdentityRow'
Error:
type: object
required:
- code
- status
properties:
code:
type: string
description: Stable kebab-case identifier.
status:
type: integer
description: HTTP status repeated in the body.
debugMessage:
type: string
data: {}
UpsertIdentityRequest:
type: object
additionalProperties: false
properties:
traits:
type: object
propertyNames:
maxLength: 200
additionalProperties:
type: string
maxLength: 2000
BulkIdentityRow:
type: object
required:
- identity
additionalProperties: false
properties:
identity:
type: string
traits:
type: object
propertyNames:
maxLength: 200
additionalProperties:
type: string
maxLength: 2000
headers:
RequestId:
description: Server-generated id of this call, beginning with req_. Present on every /api/v1 response. The console's Requests screen lists the call under it.
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Project API key beginning with past_sk_.
managementKeyAuth:
type: http
scheme: bearer
description: Management key beginning with past_mk_. One per organization, created from Settings in the console.
agentTokenAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Agent access token for one person, issued by https://sso.past.dev after the person approves the agent. https://api.past.dev/auth.md gives the procedure. The operation names the scope it asks for: memory:read or memory:write. Send X-Past-Project with the project slug; without it, the only live project of the organization is used, and an organization with two or more returns 400 project-required. Managed service only.'
x-refined-from:
- past-dev-openapi.json
- past-dev.json