Qualified Sessions API
Website sessions, with page views and the conversations and meetings that occurred in them.
Website sessions, with page views and the conversations and meetings that occurred in them.
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/qualified-com-sessions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: Qualified Enterprise Sessions API
version: '2.0'
description: '# Overview
_Last updated: August 9, 2026_
The Qualified Enterprise API connects your Qualified data to your warehouse, CDP, and downstream systems.'
servers:
- url: https://api.qualified.com
description: Production
security:
- bearerToken: []
tags:
- name: Sessions
description: Website sessions, with page views and the conversations and meetings that occurred in them.
paths:
/v2/sessions:
get:
summary: List sessions
operationId: listSessions
description: 'Returns website sessions, newest first. Window with `ended_after`/`ended_before`. Sessions become available in this list 30 minutes after they end.
**Scope:** `session:view`'
tags:
- Sessions
parameters:
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Before'
- $ref: '#/components/parameters/EndedAfter'
- $ref: '#/components/parameters/EndedBefore'
- $ref: '#/components/parameters/VisitorId'
responses:
'200':
description: A page of sessions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Session'
pageInfo:
$ref: '#/components/schemas/PageInfo'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
/v2/sessions/{id}:
get:
summary: Get a session
operationId: getSession
description: 'Returns a single session by id. A by-id read is not subject to the list hold-back and returns the latest data.
**Scope:** `session:view`'
tags:
- Sessions
parameters:
- name: id
in: path
required: true
description: Encoded session id.
schema:
type: string
responses:
'200':
description: The session.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Session'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
PageInfo:
type: object
description: Cursor-based pagination metadata.
properties:
hasNextPage:
type: boolean
description: Whether more results exist after `endCursor`.
hasPreviousPage:
type: boolean
description: Whether more results exist before `startCursor`.
startCursor:
type:
- string
- 'null'
description: Cursor for the first item on this page.
endCursor:
type:
- string
- 'null'
description: Cursor for the last item on this page.
Session:
type: object
description: A visitor's website session, with its page views and the conversations and meetings that occurred in it.
properties:
id:
type: string
description: Encoded session identifier.
createdAt:
type: string
format: date-time
description: When the session started.
endedAt:
type:
- string
- 'null'
format: date-time
description: When the session ended.
visitorId:
type: string
description: Encoded id of the visitor this session belongs to. Always present and immutable, so it is the durable key for a session whether or not the visitor is identified. Match it against a lead's `visitorIds` to resolve the session to a person.
visitor:
type:
- object
- 'null'
description: A point-in-time snapshot of the visitor as of this session, so anonymous sessions still carry the data captured during them. Present when visitor data is available.
properties:
email:
type:
- string
- 'null'
description: Visitor email. Null while the visitor is anonymous; set once the visitor is identified. Also available on the associated lead.
fields:
type: object
additionalProperties: true
description: Visitor field values captured during the session (for example the answers the visitor gave), keyed by field API name.
salesforceLeadId:
type:
- string
- 'null'
description: Salesforce Lead ID, returned verbatim (not encoded).
salesforceContactId:
type:
- string
- 'null'
description: Salesforce Contact ID, returned verbatim (not encoded).
pardotProspectId:
type:
- string
- 'null'
description: Pardot Prospect ID, returned verbatim (not encoded).
marketoLeadId:
type:
- string
- 'null'
description: Marketo Lead ID, returned verbatim (not encoded).
hubspotContactId:
type:
- string
- 'null'
description: HubSpot Contact ID, returned verbatim (not encoded).
eloquaContactId:
type:
- string
- 'null'
description: Eloqua Contact ID, returned verbatim (not encoded).
userAgent:
type: object
description: Browser user-agent information.
properties:
string:
type: string
description: Raw user-agent string.
deviceType:
type: string
description: Detected device type.
conversationIds:
type: array
items:
type: string
description: Encoded ids of the engaged conversations in this session.
pageViews:
type: array
description: Pages viewed during the session.
items:
type: object
properties:
baseUrl:
type: string
description: Page URL with the query string and fragment removed (scheme, host, and path only).
createdAt:
type: string
format: date-time
description: When the page was viewed.
endedAt:
type:
- string
- 'null'
format: date-time
description: When the visitor left the page.
utmSource:
type:
- string
- 'null'
description: UTM source.
utmMedium:
type:
- string
- 'null'
description: UTM medium.
utmCampaign:
type:
- string
- 'null'
description: UTM campaign.
utmTerm:
type:
- string
- 'null'
description: UTM term.
utmContent:
type:
- string
- 'null'
description: UTM content.
referrer:
type:
- string
- 'null'
description: Referring URL.
meetingIds:
type: array
items:
type: string
description: Encoded ids of meetings offered during this session. Not scoped to engaged conversations.
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error message.
CodeErrorResponse:
type: object
properties:
code:
type: string
description: Machine-readable error code.
message:
type: string
description: Human-readable error message.
parameters:
Before:
name: before
in: query
required: false
description: Cursor for backward pagination. Pass the `startCursor` from the previous response.
schema:
type: string
VisitorId:
name: visitor_id
in: query
required: false
description: Return only records for this visitor, including activity recorded before the visitor was identified. To pull everything for one person, read the lead's `visitorIds` and query each in turn.
schema:
type: string
EndedAfter:
name: ended_after
in: query
required: false
description: Return records that ended at or after this time. Interpreted as UTC unless an offset is given. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day.
schema:
type: string
After:
name: after
in: query
required: false
description: Cursor for forward pagination. Pass the `endCursor` from the previous response.
schema:
type: string
EndedBefore:
name: ended_before
in: query
required: false
description: Return records that ended at or before this time. Interpreted as UTC unless an offset is given. A bare date (`YYYY-MM-DD`) means midnight UTC at the start of that day, so pass the next day's date to include a whole day.
schema:
type: string
responses:
BadRequest:
description: Malformed request, such as an invalid date or cursor.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalServerError:
description: Unexpected server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal server error
NotFound:
description: The record was not found, or the id could not be decoded.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ErrorResponse'
- $ref: '#/components/schemas/CodeErrorResponse'
Unauthorized:
description: Missing or invalid token, or the API is not enabled for the team.
content:
application/json:
schema:
$ref: '#/components/schemas/CodeErrorResponse'
example:
code: invalid_token
TooManyRequests:
description: A rate limit was exceeded. The three time-window limits set a `Retry-After` header; the concurrency limit does not, so treat its absence as "retry once an in-flight request finishes".
content:
application/json:
schema:
$ref: '#/components/schemas/CodeErrorResponse'
example:
code: rate_limited
message: Enterprise API rate limit exceeded
Forbidden:
description: The token lacks the required OAuth scope.
content:
application/json:
schema:
$ref: '#/components/schemas/CodeErrorResponse'
example:
code: insufficient_scope
securitySchemes:
bearerToken:
type: http
scheme: bearer
bearerFormat: Token
x-tagGroups:
- name: Write APIs
tags:
- Leads
- Companies
- Bulk
- name: Activity APIs
tags:
- Sessions
- Conversations
- Messages
- Meetings
- Emails
- name: Utility APIs
tags:
- Cancel Meeting
- GDPR
- name: Legacy Reporting API
tags:
- Bot Conversations
- Rep Conversations