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/mavenlink-project-snapshots-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:
version: 1.0.0
title: Kantata OX API Documentation Project Snapshots API
description: Kantata OX's API provides access to the majority of Kantata OX's data model.
termsOfService: https://www.kantata.com/terms-of-use
contact:
name: Kantata OX Support
url: https://knowledge.kantata.com/hc/en-us
license:
name: COPYRIGHT © 2026 Kantata, Inc.
url: https://www.kantata.com/terms-of-use
x-logo:
url: https://theme.zdassets.com/theme_assets/56104/04e93064d309f75d054b8cee885d1ea51e9be8f7.png
backgroundColor: '#FFFFFF'
altText: Kantata OX API Documentation
href: https://developer.kantata.com
servers:
- url: https://api.mavenlink.com/api/v1
tags:
- name: Project Snapshots
description: 'Project snapshots capture the state of a project at a specific point in time. Snapshots are useful for gaining a historical perspective on a project, and for comparing the current state of a project to a previous state.
Project financials, tasks, and resources are all captured in a snapshot, as well as project and task custom field values.
To use these endpoints, you must have the Edit Financials permission or higher in a project.'
paths:
/project_snapshots:
get:
summary: Fetching a list of Project Snapshots
description: 'Gets a list of Project Snapshots. You can only see snapshots for projects where you have the Edit Financials project permission or higher.
This endpoint returns structured Project Snapshots objects.
As with all Kantata OX API endpoints, the returned data will be referenced in sorted order in the `results` array
and will be indexed by ID in the `project_snapshots` top-level JSON key.
Please see our Response Format section for more information.'
operationId: Get Project Snapshots
tags:
- Project Snapshots
parameters:
- in: query
name: by_title
description: Filter for snapshots with a title that match the specified search term. This filter is not case sensitive.
schema:
type: string
- in: query
name: include
description: 'Any of the below associations can be included in your request by providing the `include` param, e.g. `include=association1,association2`.
- `project_snapshot_assignments` (Project::Snapshots::Models::ProjectSnapshotAssignment) - Retrieves task assignments saved in snapshots. The response will include `project_snapshot_assignment_ids`, which references the data in the `project_snapshot_assignments` top-level key.
- `project_snapshot_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves project custom fields saved in snapshots. The response will include `project_snapshot_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_resources` (Project::Snapshots::Models::ProjectSnapshotResource) - Retrieves the resources saved in snapshots. The response will include `project_snapshot_resource_ids`, which references the data in the `project_snapshot_resources` top-level key.
- `project_snapshot_task_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves task custom fields saved in snapshots. The response will include `project_snapshot_task_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_tasks` (Project::Snapshots::Models::ProjectSnapshotTask) - Retrieves the tasks saved in snapshots. The response will include `project_snapshot_task_ids`, which references the data in the `project_snapshot_tasks` top-level key.'
schema:
type: string
- in: query
name: is_baseline
description: Return only snapshots that are marked as the baseline.
schema:
type: boolean
- in: query
name: only
description: 'Allows you to request one or more resources directly by ID. Multiple IDs can be supplied
in a comma separated list, like `GET /api/v1/workspaces.json?only=5,6,7`.'
schema:
type: string
- in: query
name: order
description: 'Supply `order` with the name of a valid sort field for the endpoint and a direction.
Valid values: `created_at:asc` and `created_at:desc`.'
schema:
type: string
default: created_at:desc
- in: query
name: page
schema:
type: integer
format: int32
default: 1
- in: query
name: per_page
schema:
type: integer
format: int32
default: 20
maximum: 200
- in: query
name: workspace_id
description: Filter for snapshots by workspace ID.
schema:
type: integer
format: int32
responses:
'200':
description: A list of Project Snapshots have been retrieved.
content:
application/json:
schema:
type: object
properties:
count:
type: integer
format: int32
meta:
type: object
properties:
count:
type: integer
format: int32
page_count:
type: integer
format: int32
page_number:
type: integer
format: int32
page_size:
type: integer
format: int32
results:
type: array
items:
type: object
properties:
key:
type: string
id:
type: string
project_snapshots:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshot'
project_snapshot_resources:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotResource'
project_snapshot_tasks:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotTask'
project_snapshot_custom_field_values:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotCustomFieldValue'
project_snapshot_assignments:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotAssignment'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'403':
description: Forbidden request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Page Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'503':
description: Service is unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
post:
summary: Creating a Project Snapshot
description: 'Creates a Project Snapshot. You must have the Edit Financials project permission or higher to create a project snapshot.
This endpoint has its own rate limit. See the Knowledge Base for more information.
This endpoint returns structured Project Snapshots objects.
As with all Kantata OX API endpoints, the returned data will be referenced in sorted order in the `results` array
and will be indexed by ID in the `project_snapshots` top-level JSON key.
Please see our Response Format section for more information.'
operationId: Create Project Snapshot
tags:
- Project Snapshots
parameters:
- in: query
name: include
description: 'Any of the below associations can be included in your request by providing the `include` param, e.g. `include=association1,association2`.
- `project_snapshot_assignments` (Project::Snapshots::Models::ProjectSnapshotAssignment) - Retrieves task assignments saved in snapshots. The response will include `project_snapshot_assignment_ids`, which references the data in the `project_snapshot_assignments` top-level key.
- `project_snapshot_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves project custom fields saved in snapshots. The response will include `project_snapshot_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_resources` (Project::Snapshots::Models::ProjectSnapshotResource) - Retrieves the resources saved in snapshots. The response will include `project_snapshot_resource_ids`, which references the data in the `project_snapshot_resources` top-level key.
- `project_snapshot_task_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves task custom fields saved in snapshots. The response will include `project_snapshot_task_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_tasks` (Project::Snapshots::Models::ProjectSnapshotTask) - Retrieves the tasks saved in snapshots. The response will include `project_snapshot_task_ids`, which references the data in the `project_snapshot_tasks` top-level key.'
schema:
type: string
responses:
'200':
description: Project Snapshots has been created.
content:
application/json:
schema:
type: object
properties:
count:
type: integer
format: int32
meta:
type: object
properties:
count:
type: integer
format: int32
page_count:
type: integer
format: int32
page_number:
type: integer
format: int32
page_size:
type: integer
format: int32
results:
type: array
items:
type: object
properties:
key:
type: string
id:
type: string
project_snapshots:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshot'
project_snapshot_resources:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotResource'
project_snapshot_tasks:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotTask'
project_snapshot_custom_field_values:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotCustomFieldValue'
project_snapshot_assignments:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotAssignment'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'403':
description: Forbidden request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Page Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'503':
description: Service is unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
requestBody:
content:
application/json:
schema:
type: object
properties:
project_snapshot:
type: object
properties:
workspace_id:
type: integer
format: int32
description: The ID of the workspace to take a snapshot of.
title:
type: string
description: The title of the snapshot.
description:
type: string
description: The description of the snapshot.
replace_baseline:
type: boolean
description: Whether the snapshot should be set as the workspace's baseline.
required:
- workspace_id
required: true
/project_snapshots/{id}:
put:
summary: Updating a Project Snapshot
description: 'Updates the metadata of a Project Snapshot.
This endpoint returns structured Project Snapshots objects.
As with all Kantata OX API endpoints, the returned data will be referenced in sorted order in the `results` array
and will be indexed by ID in the `project_snapshots` top-level JSON key.
Please see our Response Format section for more information.'
operationId: Update Project Snapshot
tags:
- Project Snapshots
parameters:
- in: path
name: id
required: true
description: The ID of the Model.
schema:
type: integer
- in: query
name: include
description: 'Any of the below associations can be included in your request by providing the `include` param, e.g. `include=association1,association2`.
- `project_snapshot_assignments` (Project::Snapshots::Models::ProjectSnapshotAssignment) - Retrieves task assignments saved in snapshots. The response will include `project_snapshot_assignment_ids`, which references the data in the `project_snapshot_assignments` top-level key.
- `project_snapshot_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves project custom fields saved in snapshots. The response will include `project_snapshot_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_resources` (Project::Snapshots::Models::ProjectSnapshotResource) - Retrieves the resources saved in snapshots. The response will include `project_snapshot_resource_ids`, which references the data in the `project_snapshot_resources` top-level key.
- `project_snapshot_task_custom_field_values` (Project::Snapshots::Models::ProjectSnapshotCustomFieldValue) - Retrieves task custom fields saved in snapshots. The response will include `project_snapshot_task_custom_field_value_ids`, which references the data in the `project_snapshot_custom_field_values` top-level key.
- `project_snapshot_tasks` (Project::Snapshots::Models::ProjectSnapshotTask) - Retrieves the tasks saved in snapshots. The response will include `project_snapshot_task_ids`, which references the data in the `project_snapshot_tasks` top-level key.'
schema:
type: string
responses:
'200':
description: Project Snapshots has been updated.
content:
application/json:
schema:
type: object
properties:
count:
type: integer
format: int32
meta:
type: object
properties:
count:
type: integer
format: int32
page_count:
type: integer
format: int32
page_number:
type: integer
format: int32
page_size:
type: integer
format: int32
results:
type: array
items:
type: object
properties:
key:
type: string
id:
type: string
project_snapshots:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshot'
project_snapshot_resources:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotResource'
project_snapshot_tasks:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotTask'
project_snapshot_custom_field_values:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotCustomFieldValue'
project_snapshot_assignments:
type: object
additionalProperties:
$ref: '#/components/schemas/Project__Snapshots__Models__ProjectSnapshotAssignment'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'401':
description: Unauthorized request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'403':
description: Forbidden request
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'404':
description: Page Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
'503':
description: Service is unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/Errors'
requestBody:
content:
application/json:
schema:
type: object
properties:
project_snapshot:
type: object
properties:
title:
type: string
description: The title of the snapshot.
description:
type: string
description: The description of the snapshot.
replace_baseline:
type: boolean
description: Whether the snapshot should be set as the workspace's baseline.
required: true
components:
schemas:
Project__Snapshots__Models__ProjectSnapshotResource:
title: Project Snapshot Resources
description: Project Snapshot Resources represent the state of project resources when a snapshot was taken, including their roles and total project allocation.
type: object
properties:
allocated_minutes:
type: integer
format: int32
description: The number of minutes the resource was allocated on the project at the time of the snapshot.
name:
type: string
description: For named resources, this is the person's full name. For unnamed resources, this is the title.
project_snapshot_id:
type: integer
format: int32
description: The ID of the snapshot this snapshot resource is for.
resource_id:
type: integer
format: int32
description: The ID of the resource.
role_id:
type: integer
format: int32
description: The ID of the role the resource had on the project at the time of the snapshot.
user_id:
type: integer
format: int32
description: The ID of the user for the resource at the time of the snapshot. For unnamed resources, this is null.
Project__Snapshots__Models__ProjectSnapshot:
title: Project Snapshots
description: 'Project snapshots capture the state of a project at a specific point in time. Snapshots are useful for gaining a historical perspective on a project, and for comparing the current state of a project to a previous state.
Project financials, tasks, and resources are all captured in a snapshot, as well as project and task custom field values.'
type: object
properties:
budget_in_cents:
type: integer
format: int32
description: The budget of the project at the time of the snapshot, in the subunits of the currency (e.g. cents for USD).
created_at:
type: string
format: date-time
description: When the snapshot was created.
currency:
type: string
description: The [ISO code](https://knowledge.kantata.com/hc/en-us/articles/360041576473) of the currency set on the project at the time of the snapshot.
description:
type: string
description: The description of the snapshot.
due_date:
type: string
format: date
description: The due date of the project at the time of the snapshot.
duration:
type: string
description: The duration of the project at the time of the snapshot, based on the earliest start date and latest due date of tasks.
is_baseline:
type: boolean
description: Whether the snapshot is set as the baseline for the project.
project_snapshot_assignment_ids:
type: array
items:
type: string
description: '`project_snapshot_assignment_ids` will only be included in the response if `project_snapshot_assignments` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
project_snapshot_custom_field_value_ids:
type: array
items:
type: string
description: '`project_snapshot_custom_field_value_ids` will only be included in the response if `project_snapshot_custom_field_values` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
project_snapshot_resource_ids:
type: array
items:
type: string
description: '`project_snapshot_resource_ids` will only be included in the response if `project_snapshot_resources` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
project_snapshot_task_custom_field_value_ids:
type: array
items:
type: string
description: '`project_snapshot_task_custom_field_value_ids` will only be included in the response if `project_snapshot_task_custom_field_values` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
project_snapshot_task_ids:
type: array
items:
type: string
description: '`project_snapshot_task_ids` will only be included in the response if `project_snapshot_tasks` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
start_date:
type: string
format: date
description: The start date of the project at the time of the snapshot.
status_as_text:
type: string
description: The status of the project at the time of the snapshot.
status_color:
type: string
description: The status color of the project at the time of the snapshot.
title:
type: string
description: The title of the snapshot.
workspace_id:
type: string
description: The ID of the project the snapshot is for.
Error:
type: object
properties:
type:
type: string
message:
type: string
Project__Snapshots__Models__ProjectSnapshotAssignment:
title: Project Snapshot Assignments
description: Project snapshot assignments represent the state of task assignments in a project when a snapshot was taken, including resource estimated minutes, scheduled minutes, and rates.
type: object
properties:
bill_rate_in_cents:
type: integer
format: int32
description: The bill rate in cents of the resource at the time of the snapshot.
cost_rate_in_cents:
type: integer
format: int32
description: The cost rate in cents of the resource at the time of the snapshot.
estimated_minutes:
type: integer
format: int32
description: The estimated time in minutes for the resource of this assignment at the time of the snapshot.
project_snapshot_resource_id:
type: integer
format: int32
description: The ID of the resource the assignment is for.
project_snapshot_task_id:
type: integer
format: int32
description: The ID of the task the assignment is for.
scheduled_minutes:
type: integer
format: int32
description: The scheduled minutes of the assignment.
Errors:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
Project__Snapshots__Models__ProjectSnapshotTask:
title: Project Snapshot Task
description: Project snapshot tasks represent the state of tasks in a project when a snapshot was taken.
type: object
properties:
archived:
type: boolean
description: Whether the task was archived when the snapshot was taken.
billable:
type: boolean
description: Whether the task was billable when the snapshot was taken.
budget_estimate_in_cents:
type: integer
format: int32
description: The budget of the task when the snapshot was taken.
description:
type: string
description: The description of the task when the snapshot was taken.
due_date:
type: string
description: The due date of the task when the snapshot was taken.
percentage_complete:
type: integer
format: int32
description: The percentage complete of the task when the snapshot was taken.
priority_level:
type: integer
format: int32
description: The priority level of the task when the snapshot was taken.
project_plan:
type: boolean
description: Whether the task was a project task (`true`) or a To Do (`false`) when the snapshot was taken.
project_snapshot_id:
type: integer
format: int32
description: The ID of the snapshot this snapshot task is for.
start_date:
type: string
description: The start date of the task when the snapshot was taken.
state:
type: string
description: The status of the task when the snapshot was taken.
story_id:
type: integer
format: int32
description: The ID of the story (task).
story_type:
type: string
description: The type of the task when the snapshot was taken.
time_estimate_in_minutes:
type: integer
format: int32
description: The task estimate in minutes when the snapshot was taken.
title:
type: string
description: The title of the task when the snapshot was taken.
wbs:
type: integer
format: int32
description: The WBS number of the task when the snapshot was taken.
Project__Snapshots__Models__ProjectSnapshotCustomFieldValue:
title: Snapshot Custom Field Value
description: Snapshot custom field values represent the state of project and task custom field values when a snapshot was taken.
type: object
properties:
custom_field_name:
type: string
description: The name of the custom field.
subject_id:
type: integer
format: int32
description: The ID of the snapshot project or snapshot task the custom field value is for. This is not the same as the project or task ID.
subject_type:
type: string
description: The subject type of the custom field value, e.g. `SnapshotWorkspace` (snapshot project) or `SnapshotStory` (snapshot task).
value:
type: string
description: The value of the custom field.
value_type:
type: string
description: The value type of the custom field, e.g. `string`, `date`, `number`, `currency`, `single`, or `multi`.
securitySchemes:
BearerToken:
type: apiKey
name: Bearer
in: header
OauthSecurity:
type: oauth2
flows:
authorizationCode:
scopes: {}
authorizationUrl: https://app.mavenlink.com/oauth/authorize
tokenUrl: https://app.mavenlink.com/oauth/token
x-tagGroups:
- name: '# Subscribed Events'
tags:
- Event Types
- Events
- name: Account Locations
tags:
- Account Locations
- name: Account Settings & Members
tags:
- Access Group Memberships
- Account Colors
- Account Invitations
- Account Memberships
- Backup Approver Associations
- Billable Utilizations
- Cost Rates
- Custom Branding
- Organization Memberships
- Organizations
- Roles
- Skill Categories
- Skill Memberships
- Skills
- Task Status Sets
- Task Statuses
- User Group Memberships
- Users
- name: Currencies
tags:
- Currencies
- name: Custom Fields
tags:
- Custom Field Choices
- Custom Field Sets
- Custom Field Values
- Custom Fields
- n
# --- truncated at 32 KB (34 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavenlink/refs/heads/main/openapi/mavenlink-project-snapshots-api-openapi.yml