Exec Knowledge Hub - Pages API
The Knowledge Hub - Pages API from Exec — 3 operation(s) for knowledge hub - pages.
The Knowledge Hub - Pages API from Exec — 3 operation(s) for knowledge hub - pages.
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/exec:exec-knowledge-hub-pages-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: Exec Knowledge Hub - Pages API
version: '1.0'
description: 'REST API for programmatic access to your Exec workspace.
Use the Exec API to read workspace data, list members, retrieve group information,
and create interactive scenario creation sessions.
## Authentication
All requests require a valid API key passed in the Authorization header:
```
Authorization: Bearer exec_live_...
```
Create API keys in your workspace settings under **Settings > API**.'
servers:
- url: https://api.exec.com/rest/v1
description: Production
security:
- bearerAuth: []
tags:
- name: Knowledge Hub - Pages
x-group: Knowledge Hub
paths:
/knowledge-hub/pages:
get:
operationId: listKnowledgeHubPages
summary: List pages
description: 'Returns a paginated list of Knowledge Hub pages. List rows are metadata
only — the page body is omitted. Fetch a single page to get its content.
Filter by folder, status, owner, skill, free-text query, or update-date
range. Results are sorted by `updated_at` (newest first) by default.
API keys are workspace-scoped and admin-created, so the response includes
every non-archived page in the workspace — including private and draft
pages — regardless of visibility.'
tags:
- Knowledge Hub - Pages
parameters:
- name: folder_id
in: query
description: Filter by folder UUID
schema:
type: string
- name: status
in: query
description: Filter by page status
schema:
type: string
enum:
- draft
- published
- archived
- name: owner_id
in: query
description: Filter by the page owner's user UUID
schema:
type: string
- name: skill_id
in: query
description: Filter by an associated skill UUID
schema:
type: string
- name: query
in: query
description: Case-insensitive search over page titles
schema:
type: string
- name: updated_after
in: query
description: Only include pages updated on or after this date (ISO 8601)
schema:
type: string
format: date-time
- name: updated_before
in: query
description: Only include pages updated on or before this date (ISO 8601)
schema:
type: string
format: date-time
- name: sort
in: query
description: 'Sort field. `updated_at` and `created_at` are newest-first; `title`
is A–Z.
'
schema:
type: string
default: updated_at
enum:
- updated_at
- created_at
- title
- name: page
in: query
description: Pagination page number (1-indexed) — which page of results to return, not a Knowledge Hub page.
schema:
type: integer
default: 1
minimum: 1
- name: page_size
in: query
description: Number of results per page (max 100)
schema:
type: integer
default: 50
minimum: 1
maximum: 100
responses:
'200':
description: Paginated list of pages (metadata only)
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/KnowledgeHubPage'
pagination:
$ref: '#/components/schemas/Pagination'
example:
data:
- id: p1a2b3c4d5e6
title: Pricing objection guide
status: published
visibility: workspace
owner:
id: u1a2b3c4d5e6
email: jane@acme.com
first_name: Jane
last_name: Smith
folders:
- id: f1a2b3c4d5e6
name: Sales
emoji: 💼
skills:
- id: sk1a2b3c4d5e
name: Objection handling
source_count: 3
version: 4
cover: ''
published_at: '2026-06-01T12:00:00Z'
created_at: '2026-05-01T09:00:00Z'
updated_at: '2026-06-10T15:30:00Z'
pagination:
page: 1
page_size: 50
total_count: 123
total_pages: 3
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createKnowledgeHubPage
summary: Create page
description: 'Creates a Knowledge Hub page. New pages go through the draft → publish
version flow: set `status` to `published` to publish immediately, or
`draft` (the default) to save without publishing.
Returns the created page with its body (`201`).'
tags:
- Knowledge Hub - Pages
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
properties:
title:
type: string
description: Page title
content:
type: string
description: Markdown body of the page
status:
type: string
enum:
- draft
- published
default: draft
description: Whether to save as a draft or publish immediately
visibility:
type: string
enum:
- private
- workspace
default: workspace
description: Visibility scope for the new page
folder_ids:
type: array
items:
type: string
description: UUIDs of folders to place the page in
source_ids:
type: array
items:
type: string
description: UUIDs of sources to attach to the page
skill_ids:
type: array
items:
type: string
description: UUIDs of skills to associate with the page
example:
title: Pricing objection guide
content: '## Handling pricing objections
Lead with value before discussing discounts…'
status: published
visibility: workspace
folder_ids:
- f1a2b3c4d5e6
source_ids:
- s1a2b3c4d5e6
skill_ids:
- sk1a2b3c4d5e
responses:
'201':
description: Page created
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeHubPageDetail'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/knowledge-hub/pages/{page_id}:
get:
operationId: getKnowledgeHubPage
summary: Get page
description: 'Returns a single page with its published markdown body, attached sources,
skills, and version info.
Use `?include=draft` to also return the current draft body
(`draft.title` and `draft.content`).'
tags:
- Knowledge Hub - Pages
parameters:
- name: page_id
in: path
required: true
description: The page's unique identifier (UUID)
schema:
type: string
- name: include
in: query
description: 'Comma-separated list of optional sections to include.
Available values: `draft` (the current draft title and body).
'
schema:
type: string
example: draft
responses:
'200':
description: Page detail
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeHubPageDetail'
example:
id: p1a2b3c4d5e6
title: Pricing objection guide
status: published
visibility: workspace
owner:
id: u1a2b3c4d5e6
email: jane@acme.com
first_name: Jane
last_name: Smith
folders:
- id: f1a2b3c4d5e6
name: Sales
emoji: 💼
skills:
- id: sk1a2b3c4d5e
name: Objection handling
source_count: 1
version: 4
cover: ''
published_at: '2026-06-01T12:00:00Z'
created_at: '2026-05-01T09:00:00Z'
updated_at: '2026-06-10T15:30:00Z'
content: '## Handling pricing objections
Lead with value before discussing discounts…'
sources:
- id: s1a2b3c4d5e6
title: Q2 pricing deck.pdf
source_type: upload
status: ready
content_format: plain_text
token_count: 5234
has_images: false
external_url: null
summary: Quarterly pricing and packaging overview.
cover: ''
folders:
- id: f9a8b7c6d5e4
name: File Attachments
emoji: 📎
created_by:
id: u1a2b3c4d5e6
email: jane@acme.com
first_name: Jane
last_name: Smith
created_at: '2026-05-01T09:00:00Z'
updated_at: '2026-05-01T09:05:00Z'
processed_at: '2026-05-01T09:05:00Z'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateKnowledgeHubPage
summary: Update page
description: 'Updates a page. Only the fields you provide are changed; omitted fields
are left untouched. Editing `content` creates a new draft; set `status`
to `published` to publish the new version.
`PUT` is also accepted and behaves the same way.'
tags:
- Knowledge Hub - Pages
parameters:
- name: page_id
in: path
required: true
description: The page's unique identifier (UUID)
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
description: New page title
content:
type: string
description: New markdown body (creates a new draft)
status:
type: string
enum:
- draft
- published
description: Set to `published` to publish the new version. To archive a page, use `DELETE`.
folder_ids:
type: array
items:
type: string
description: Replace the page's folders with these UUIDs
source_ids:
type: array
items:
type: string
description: Replace the page's attached sources with these UUIDs
skill_ids:
type: array
items:
type: string
description: Replace the page's linked skills with these UUIDs
example:
title: Pricing objection guide (updated)
content: '## Handling pricing objections
Updated guidance…'
status: published
responses:
'200':
description: Updated page
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeHubPageDetail'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: replaceKnowledgeHubPage
x-hidden: true
summary: Update page (PUT)
description: Alias of `PATCH /knowledge-hub/pages/{page_id}`; see that operation.
tags:
- Knowledge Hub - Pages
parameters:
- name: page_id
in: path
required: true
description: The page's unique identifier (UUID)
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
content:
type: string
status:
type: string
enum:
- draft
- published
folder_ids:
type: array
items:
type: string
source_ids:
type: array
items:
type: string
skill_ids:
type: array
items:
type: string
responses:
'200':
description: Updated page
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeHubPageDetail'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: archiveKnowledgeHubPage
summary: Archive page
description: Archives (soft-deletes) a page. The page is hidden from lists but its history is preserved.
tags:
- Knowledge Hub - Pages
parameters:
- name: page_id
in: path
required: true
description: The page's unique identifier (UUID)
schema:
type: string
responses:
'200':
description: Page archived
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteResult'
example:
id: p1a2b3c4d5e6
deleted: true
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/knowledge-hub/pages/{page_id}/versions:
get:
operationId: listKnowledgeHubPageVersions
summary: List page versions
description: Returns the version history for a page, newest first.
tags:
- Knowledge Hub - Pages
parameters:
- name: page_id
in: path
required: true
description: The page's unique identifier (UUID)
schema:
type: string
- name: page
in: query
description: Pagination page number (1-indexed) — which page of results to return, not a Knowledge Hub page.
schema:
type: integer
default: 1
minimum: 1
- name: page_size
in: query
description: Number of results per page (max 100)
schema:
type: integer
default: 50
minimum: 1
maximum: 100
responses:
'200':
description: Paginated version history
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/KnowledgeHubPageVersion'
pagination:
$ref: '#/components/schemas/Pagination'
example:
data:
- version: 4
title: Pricing objection guide
change_type: manual_edit
created_by:
id: u1a2b3c4d5e6
email: jane@acme.com
first_name: Jane
last_name: Smith
created_at: '2026-06-01T12:00:00Z'
updated_at: '2026-06-01T12:00:00Z'
- version: 3
title: Pricing objection guide
change_type: ai_generation
created_by: null
created_at: '2026-05-20T10:00:00Z'
updated_at: '2026-05-20T10:00:00Z'
pagination:
page: 1
page_size: 50
total_count: 4
total_pages: 1
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
KnowledgeHubFolderRef:
type: object
description: A compact folder reference embedded in pages and sources.
properties:
id:
type: string
description: Unique folder identifier (UUID)
name:
type: string
description: Folder name
emoji:
type:
- string
- 'null'
description: Emoji icon shown next to the folder
KnowledgeHubPageDraft:
type: object
description: The unpublished draft of a page.
properties:
title:
type: string
description: Draft title
content:
type:
- string
- 'null'
description: Markdown body of the draft
KnowledgeHubSource:
type: object
description: A Knowledge Hub source — an uploaded file or ingested URL whose text is extracted and indexed.
properties:
id:
type: string
description: Unique source identifier (UUID)
title:
type: string
description: Source title
source_type:
type: string
enum:
- upload
- url
- notion
- google_drive
- guru
- page
- integration
description: Where the source came from
status:
type: string
enum:
- pending
- processing
- ready
- failed
description: Text-extraction status
content_format:
type:
- string
- 'null'
enum:
- markdown
- plain_text
- image
- video
description: Format of the extracted content
token_count:
type:
- integer
- 'null'
description: Number of tokens in the extracted text
has_images:
type: boolean
description: Whether the source contains images
external_url:
type:
- string
- 'null'
description: Original URL for url/notion/guru/google_drive sources (null otherwise)
summary:
type:
- string
- 'null'
description: AI-generated summary of the source
cover:
type: string
description: Cover image reference (empty string if none)
folders:
type: array
description: Folders the source belongs to
items:
$ref: '#/components/schemas/KnowledgeHubFolderRef'
created_by:
$ref: '#/components/schemas/User'
description: User who added the source
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
processed_at:
type:
- string
- 'null'
format: date-time
description: When extraction finished
content:
type:
- string
- 'null'
description: Extracted text (only included when requested via `?include=content`)
User:
type: object
properties:
id:
type: string
description: Unique user identifier
email:
type: string
format: email
description: User's email address
first_name:
type: string
description: User's first name
last_name:
type: string
description: User's last name
ValidationErrorDetail:
type: object
properties:
error:
type: object
properties:
type:
type: string
description: Error category (e.g., "invalid_request")
code:
type: string
description: Specific error code (e.g., "user_not_found")
message:
type: string
description: Human-readable error message
Pagination:
type: object
properties:
page:
type: integer
description: Current page number
page_size:
type: integer
description: Number of items per page
total_count:
type: integer
description: Total number of items
total_pages:
type: integer
description: Total number of pages
KnowledgeHubPageVersion:
type: object
description: A single entry in a page's version history.
properties:
version:
type: integer
description: Version number
title:
type: string
description: Page title at this version
change_type:
type: string
enum:
- created
- ai_generation
- manual_edit
- restore
- clone
description: What kind of change produced this version
created_by:
$ref: '#/components/schemas/User'
description: User who created this version (null for system/AI changes)
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
KnowledgeHubPage:
type: object
description: A Knowledge Hub page. List responses return this metadata-only shape (no body).
properties:
id:
type: string
description: Unique page identifier (UUID)
title:
type: string
description: Page title
status:
type: string
enum:
- draft
- published
- archived
description: Current page status
visibility:
type: string
enum:
- private
- workspace
- global
description: Visibility scope of the page
owner:
$ref: '#/components/schemas/User'
description: User who owns the page
folders:
type: array
description: Folders the page belongs to
items:
$ref: '#/components/schemas/KnowledgeHubFolderRef'
skills:
type: array
description: Skills associated with the page
items:
$ref: '#/components/schemas/KnowledgeHubSkillRef'
source_count:
type: integer
description: Number of sources attached to the page
version:
type:
- integer
- 'null'
description: Version number of the published version, or null if never published
cover:
type: string
description: Cover image reference (empty string if none)
published_at:
type:
- string
- 'null'
format: date-time
description: When the page was last published
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
KnowledgeHubSkillRef:
type: object
description: A compact skill reference embedded in pages.
properties:
id:
type: string
description: Unique skill identifier (UUID)
name:
type: string
description: Skill name
DeleteResult:
type: object
description: Returned by archive/delete endpoints.
properties:
id:
type: string
description: Identifier of the archived/deleted resource
deleted:
type: boolean
description: Always true on success
KnowledgeHubPageDetail:
description: A single page with its published body, attached sources, and (optionally) its draft.
allOf:
- $ref: '#/components/schemas/KnowledgeHubPage'
- type: object
properties:
content:
type:
- string
- 'null'
description: Markdown body of the published version (null if unpublished)
sources:
type: array
description: Sources attached to the page
items:
$ref: '#/components/schemas/KnowledgeHubSource'
draft:
$ref: '#/components/schemas/KnowledgeHubPageDraft'
description: Current draft (only included when requested via `?include=draft`)
responses:
BadRequest:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDetail'
example:
error:
type: invalid_request
code: invalid_pagination
message: Invalid pagination parameters
Unauthorized:
description: Missing or invalid API key
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDetail'
example:
error:
type: authentication_error
code: invalid_api_key
message: Invalid or inactive API key
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDetail'
example:
error:
type: not_found
message: 'Scenario not found: abc123'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'API key created in Settings > API.
Format: `exec_live_` followed by 40 alphanumeric characters.
'
x-provenance:
method: harvested
publisher: Exec
source: https://docs.exec.com/api-reference/openapi.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)