Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
version: 1.0.0
title: Kantata OX API Documentation Events 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: Events
description: Up to 9 days of trackable changes ("events") for an account can be accessed via the Subscribed Events API.
paths:
/subscribed_events:
get:
summary: Fetching a list of Subscribed Events
description: 'Returns up to 9 days of records for all event types,
unless filter parameters have been applied.
Only records associated with the requester''s Kantata OX account are returned.
This endpoint returns structured Subscribed Event 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 `subscribed_events` top-level JSON key.
Please see our Response Format section for more information.'
operationId: Get Subscribed Events
tags:
- Events
parameters:
- in: query
name: created_after
required: false
description: 'Filter for events created after a specified datetime. Events may be generated out of order or the
`subject_changed_at` and `created_at` times of an event can differ due to the lag between event
occurrence and generation. The datetime must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.'
schema:
type: string
format: date-time
- in: query
name: created_before
required: false
description: 'Filter for events created before a specified datetime. Events may be generated out of order or the
`subject_changed_at` and `created_at` times of an event can differ due to the lag between event
occurrence and generation. The datetime must be in [ISO 8601](https://www.w3.org/TR/NOTE-datetime) format.'
schema:
type: string
format: date-time
- in: query
name: event_types
required: false
description: 'Filter for records of specified [event types](https://mavenlink.zendesk.com/hc/en-us/articles/4407962435227).
Specify multiple event types in a comma-separated list, like
`GET /api/v1/subscribed_events?event_types=time_entry:created,time_entry:updated,time_entry:deleted`.'
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`.
- `subject` (polymorphic) - When included, each event object will include a `subject_ref` that references the subject the event belongs to. The `subject_ref` is a JSON object with an `id` and `key`, where the `key` is the subject type.
For example, a `workspace:updated` event will have a `subject_ref` referencing the workspace, and the `key` will be `workspaces`.
If the subject is not available, `subject_ref` will be null. A subject may be unavailable if it was deleted or was transferred to another account.'
schema:
type: string
- in: query
name: most_recent
required: false
description: 'If true, only the most recent event will be returned for each subject
(i.e. the most recent change that occurred for each subject). This filter cannot be used
in combination with `most_recent_by_event_type`.'
schema:
type: boolean
- in: query
name: most_recent_by_event_type
required: false
description: 'If true, only the most recent event of each event type will be returned for each subject.
For example, if a workspace was created, updated 3 times, and deleted, the following events will be
generated: 1 `workspace:created` event, 3 `workspace:updated` events, and 1 `workspace:deleted` event.
If `most_recent_by_event_type` is true, the `workspace:created` event, the most recent `workspace:updated`
event, and the `workspace:deleted` event will be returned. This filter cannot be used in combination with
`most_recent`.'
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: optional_fields
description: Allows you to request one or more optional fields as an array.
schema:
type: array
items:
type: string
enum:
- previous_payload
- current_payload
- payload_changes
- 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: subject_id
required: false
description: 'Filter for events belonging to a specific subject (e.g. a user, a project, etc). When using this filter,
you must also provide a `subject_type`. Multiple IDs can be provided in a comma-separated list
(e.g. `GET /api/v1/subscribed_events?subject_type=TimeEntry&subject_id=27,28,29`).'
schema:
type: string
- in: query
name: subject_type
required: false
description: "Filter for events by a specific subject type. You can pass in only one subject type for this parameter.\n Supported subject types: \"AccountColor\", \"AccountLocation\", \"AccountMembership\", \"Assignment\", \"BudgetChangeOrder\",\n \"CostRate\", \"CustomField\", \"CustomFieldSet\", \"DefaultStatusSet\", \"EmailAddress\", \"Estimate\", \"EstimateScenario\",\n \"EstimateScenarioResource\", \"Expense\", \"ExpenseReportSubmission\", \"Invoice\", \"LineItemLock\", \"Organization\",\n \"OrganizationMembership\", \"Participation\", \"ProjectAccessControl\", \"Role\", \"ScheduleChangeOrder\", \"Skill\",\n \"SkillMembership\", \"StatusSet\", \"StatusSetOption\", \"Story\", \"StoryAllocationDay\", \"TimeEntry\",\n \"TimeOffEntry\", \"TimesheetSubmission\", \"User\", \"Vendor\", \"Workspace\", \"WorkspaceAllocation\", \"WorkspaceApprover\",\n \"WorkspaceGroup\", \"WorkspaceInvitation\", \"WorkspaceResource\", \"WorkspaceStatusSet\", \"Workweek\", \"WorkweekMembership\"."
schema:
type: string
- in: query
name: user_ids
required: false
description: 'Filter for events triggered by specific users. Multiple IDs can be provided in a comma-separated list
(e.g. `GET /api/v1/subscribed_events?user_ids=5,25,45`).'
schema:
type: string
responses:
'200':
description: A list of Subscribed Events 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
subscribed_events:
type: object
additionalProperties:
$ref: '#/components/schemas/SubscribedEvents__Models__SubscribedEvent'
account_colors:
type: object
additionalProperties:
$ref: '#/components/schemas/AccountColor'
account_locations:
type: object
additionalProperties:
$ref: '#/components/schemas/AccountLocation'
account_memberships:
type: object
additionalProperties:
$ref: '#/components/schemas/AccountMembership'
assignments:
type: object
additionalProperties:
$ref: '#/components/schemas/Assignment'
billing_milestones:
type: object
additionalProperties:
$ref: '#/components/schemas/BillingMilestone'
cost_rates:
type: object
additionalProperties:
$ref: '#/components/schemas/CostRate'
custom_fields:
type: object
additionalProperties:
$ref: '#/components/schemas/CustomField'
custom_field_sets:
type: object
additionalProperties:
$ref: '#/components/schemas/CustomFieldSet'
estimates:
type: object
additionalProperties:
$ref: '#/components/schemas/Estimate'
estimate_scenarios:
type: object
additionalProperties:
$ref: '#/components/schemas/EstimateScenario'
estimate_scenario_resources:
type: object
additionalProperties:
$ref: '#/components/schemas/EstimateScenarioResource'
expenses:
type: object
additionalProperties:
$ref: '#/components/schemas/Expense'
expense_budgets:
type: object
additionalProperties:
$ref: '#/components/schemas/ExpenseBudget'
expense_report_submissions:
type: object
additionalProperties:
$ref: '#/components/schemas/ExpenseReportSubmission'
invoices:
type: object
additionalProperties:
$ref: '#/components/schemas/Invoice'
line_item_locks:
type: object
additionalProperties:
$ref: '#/components/schemas/LineItemLock'
organizations:
type: object
additionalProperties:
$ref: '#/components/schemas/Organization'
organization_memberships:
type: object
additionalProperties:
$ref: '#/components/schemas/OrganizationMembership'
participations:
type: object
additionalProperties:
$ref: '#/components/schemas/Participation'
project_accounting_records:
type: object
additionalProperties:
$ref: '#/components/schemas/ProjectAccounting__Models__ProjectAccountingRecord'
roles:
type: object
additionalProperties:
$ref: '#/components/schemas/Role'
skills:
type: object
additionalProperties:
$ref: '#/components/schemas/Skill'
skill_memberships:
type: object
additionalProperties:
$ref: '#/components/schemas/SkillMembership'
task_status_sets:
type: object
additionalProperties:
$ref: '#/components/schemas/StatusSet'
custom_task_statuses:
type: object
additionalProperties:
$ref: '#/components/schemas/StatusSetOption'
stories:
type: object
additionalProperties:
$ref: '#/components/schemas/Story'
story_allocation_days:
type: object
additionalProperties:
$ref: '#/components/schemas/StoryAllocationDay'
time_entries:
type: object
additionalProperties:
$ref: '#/components/schemas/TimeEntry'
time_off_entries:
type: object
additionalProperties:
$ref: '#/components/schemas/TimeOffEntry'
timesheet_submissions:
type: object
additionalProperties:
$ref: '#/components/schemas/TimesheetSubmission'
users:
type: object
additionalProperties:
$ref: '#/components/schemas/User'
vendors:
type: object
additionalProperties:
$ref: '#/components/schemas/Vendor'
workspaces:
type: object
additionalProperties:
$ref: '#/components/schemas/Workspace'
workspace_allocations:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkspaceAllocation'
workspace_groups:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkspaceGroup'
workspace_invitations:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkspaceInvitation'
workspace_resources:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkspaceResource'
workspace_task_status_sets:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkspaceStatusSet'
workweeks:
type: object
additionalProperties:
$ref: '#/components/schemas/Workweek'
workweek_memberships:
type: object
additionalProperties:
$ref: '#/components/schemas/WorkweekMembership'
'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'
components:
schemas:
Story:
title: Story
description: 'Stories (known as [tasks](https://knowledge.kantata.com/hc/en-us/articles/202806550-Tasks-Overview) in the UI)
are the tasks, deliverables, issues, and milestones required to complete a project.
Stories belong to [Workspaces](/tag/Workspaces), appear in the
[Local Task Tracker](https://knowledge.kantata.com/hc/en-us/articles/202490134-Project-Task-Tracker) and the
[Global Tasks Tracker](https://knowledge.kantata.com/hc/en-us/articles/216424897-Global-Tasks-Tracker),
can be linked to [Posts](/tag/Posts), can have substories (subtasks) and
[Story Tasks](https://developer.kantata.com/tag/Story-Tasks) (checklists), and have many attributes for
planning, organization, and financials.'
type: object
properties:
ancestor_ids:
type: array
items:
type: string
description: The IDs of all the ancestor (i.e. parent) tasks of the task. This is empty for a top-level task.
ancestry_depth:
type: integer
format: int32
description: The number of levels a subtask is nested below the top-level task. Possible values are between `0` (i.e. a top-level task) and `4`.
archived:
type: boolean
description: Whether the task is archived.
archived_editable:
type: boolean
description: 'For archived tasks, whether the authenticated user can edit the task.
Only returned when requested through the optional_fields param.'
assigned_role_id:
type: string
description: '`assigned_role_id` will only be included in the response if `assigned_role` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
assignee_ids:
type: array
items:
type: string
description: '`assignee_ids` will only be included in the response if `assignees` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
assignment_timestamped_at:
type: string
format: date-time
attachment_ids:
type: array
items:
type: string
description: '`attachment_ids` will only be included in the response if `attachments` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
billable:
type: boolean
description: Whether the task is billable.
budget_estimate_in_cents:
type: integer
format: int32
description: 'The task budget, in the subunits of the currency (e.g. cents for USD).
Visible when the API user can view story budgets in the story''s workspace.'
budget_used_in_cents:
type: integer
format: int32
description: 'How much of the task budget has been used, in the subunits of the currency (e.g. cents for USD).
Visible when the API user can view story budgets in the story''s workspace.'
can_align_time:
type: boolean
description: 'Whether [Daily Scheduled Hours](/tag/Daily-Scheduled-Hours-(Story-Allocation-Days)) (i.e. Story Allocation Days) that are out of sync with the task start or due date can be realigned to the task start date.
Only returned when requested through the optional_fields param.'
can_edit:
type: boolean
description: 'Whether the authenticated user can edit the task. For archived tasks, refer to `archived_editable` instead.
Only returned when requested through the optional_fields param.'
can_post:
type: boolean
description: 'Whether the authenticated user can create posts in the project the task is in.
Only returned when requested through the optional_fields param.'
created_at:
type: string
format: date-time
creator_id:
type: string
description: '`creator_id` will only be included in the response if `creator` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
current_assignment_ids:
type: array
items:
type: string
description: '`current_assignment_ids` will only be included in the response if `current_assignments` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
custom_field_value_ids:
type: array
items:
type: string
description: '`custom_field_value_ids` will only be included in the response if `custom_field_values` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
custom_task_status_id:
type: integer
format: int32
description: 'The ID of the task''s custom status. If the workspace is not using a custom task status set, this is `null`.
Only returned when requested through the optional_fields param.'
deleted_at:
type: string
format: date-time
descendant_ids:
type: array
items:
type: string
description: '`descendant_ids` will only be included in the response if `descendants` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
description:
type: string
description: The task description. Markdown syntax is included.
due_date:
type: string
format: date
description: When the task is due.
external_reference_ids:
type: array
items:
type: string
description: '`external_reference_ids` will only be included in the response if `external_references` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
fixed_fee:
type: boolean
description: Whether the task is fixed fee (`true`) or time and materials (`false`).
follower_ids:
type: array
items:
type: string
description: '`follower_ids` will only be included in the response if `followers` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
formatted_description:
type: string
description: 'The task description with special formatting, like emoji and @-mentions.
Only returned when requested through the optional_fields param.'
google_document_ids:
type: array
items:
type: string
description: '`google_document_ids` will only be included in the response if `google_documents` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
has_out_of_bounds_sads:
type: boolean
description: 'Whether the task has any [Daily Scheduled Hours](/tag/Daily-Scheduled-Hours-(Story-Allocation-Days)) (i.e. Story Allocation Days) before its start date or after its due date.
Only returned when requested through the optional_fields param.'
invoiced_balance_in_cents:
type: integer
format: int32
description: 'How much has been invoiced for the task, in the subunits of the currency (e.g. cents for USD).
Visible when the API user can view story budgets in the story''s workspace.'
is_time_trackable_type:
type: boolean
description: 'Whether the task can have time and expenses tracked against it, as set in account settings.
Only returned when requested through the optional_fields param.'
logged_billable_time_in_minutes:
type: integer
format: int32
description: 'How much billable time has been tracked against the task, in minutes.
Visible when the API user can view story time estimates in the story''s workspace.'
logged_nonbillable_time_in_minutes:
type: integer
format: int32
description: 'How much non-billable time has been tracked against the task, in minutes.
Visible when the API user can view story time estimates in the story''s workspace.'
parent_id:
type: string
description: '`parent_id` will only be included in the response if `parent` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
parsed_description:
type: string
description: 'The task description. Markdown syntax is not included.
Only returned when requested through the optional_fields param.'
percentage_complete:
type: integer
format: int32
description: The percentage of work done on the task.
position:
type: integer
format: int32
description: Represents the task's position in the Task Tracker. This is not the same as the WBS (Work Breakdown Structure) number shown in the UI.
potential_workspace_resource_ids:
type: array
items:
type: string
description: '`potential_workspace_resource_ids` will only be included in the response if `potential_workspace_resources` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
potential_workspace_resources_with_unnamed_ids:
type: array
items:
type: string
description: '`potential_workspace_resources_with_unnamed_ids` will only be included in the response if `potential_workspace_resources_with_unnamed` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
priority:
type: integer
format: int32
description: The priority of the task. Possible values are `critical`, `high`, `normal`, `low`.
project_plan:
type: boolean
description: Whether the story is a project task (`true`) or is a To Do (`false`).
read_only:
type: boolean
description: 'Whether the authenticated user can only view the task and cannot edit it.
Only returned when requested through the optional_fields param.'
render_description_markdown:
type: boolean
description: 'Whether the account the task is in is set to render Markdown in task descriptions as formatted and styled text.
Only returned when requested through the optional_fields param.'
reply_ids:
type: array
items:
type: string
description: '`reply_ids` will only be included in the response if `replies` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
root_id:
type: string
description: '`root_id` will only be included in the response if `root` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
source_dependency_ids:
type: array
items:
type: string
description: '`source_dependency_ids` will only be included in the response if `source_dependencies` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
start_date:
type: string
format: date
description: When the task starts.
state:
type: string
description: 'The status type of the story. Possible values are `not started`, `started`, `needs info`, or `completed`. If task status sets are not activated on the account, the following values are also possible: `new`, `reopened`, `in progress`, `blocked`, `fixed`, `duplicate`, `can''t reproduce`, `resolved`, or `won''t fix`. The actual task status is returned in the `status` field.'
status:
type: string
description: The status of the story.
story_state_change_ids:
type: array
items:
type: string
description: '`story_state_change_ids` will only be included in the response if `story_state_changes` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
story_task_ids:
type: array
items:
type: string
description: '`story_task_ids` will only be included in the response if `story_tasks` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
story_type:
type: string
description: The task's type. Possible values are `task`, `deliverable `, `milestone`, and `issue`.
sub_stories_billable_time_in_minutes:
type: integer
format: int32
description: 'How much billable time has been tracked against the task''s descendants, in minutes.
Visible when the API user can view story time estimates in the story''s workspace.'
sub_stories_budget_estimate_in_cents:
type: integer
format: int32
description: 'The budget of the task''s descendants, in the subunits of the currency (e.g. cents for USD).
Visible when the API user can view story budgets in the story''s workspace.'
sub_stories_budget_used_in_cents:
type: integer
format: int32
description: 'How much of the budgets of the task''s descendants has been used, in the subunits of the currency (e.g. cents for USD).
Visible when the API user can view story budgets in the story''s workspace.'
sub_stories_time_estimate_in_minutes:
type: integer
format: int32
description: 'The estimated time of the task''s descendants, in minutes.
Visible when the API user can view story time estimates in the story''s workspace.'
sub_story_count:
type: integer
format: int32
description: How many descendant tasks the task has.
sub_story_ids:
type: array
items:
type: string
description: '`sub_story_ids` will only be included in the response if `sub_stories` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
subtree_depth:
type: integer
format: int32
description: How many ancestor tasks the task has.
tag_ids:
type: array
items:
type: string
description: '`tag_ids` will only be included in the response if `tags` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
target_dependency_ids:
type: array
items:
type: string
description: '`target_dependency_ids` will only be included in the response if `target_dependencies` is in the list of included associations. See <a href=''#section/Includes''>include</a> section for usage.'
time_estimate_
# --- truncated at 32 KB (163 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mavenlink/refs/heads/main/openapi/mavenlink-events-api-openapi.yml