🏷️ API version: 2026-04

You can now create, publish, delete, and query knowledge base articles via the API.

Queries

  • articles — retrieve published articles by object ID, with optional workspace filtering and pagination
  • article_blocks — paginate through an article's content blocks
query {
  articles(object_ids: ["12345"], limit: 10, page: 1) {
    id
    name
    privacy_kind
    blocks {
      id
      type
      content
    }
  }
}

Mutations

mutation {
  create_article(
    name: "Getting started guide"
    workspace_id: "123456"
  ) {
    object_id
    name
  }
}
mutation {
  publish_article(
    object_id: "789"
    privacy_kind: PUBLIC
  ) {
    object_id
    name
    state
  }
}
🏷️ API version: 2026-04

New fields have been added to support app features within the platform:

Folder

FieldTypeDescription
app_feature_slugStringThe app feature slug associated with this folder (Folders 2.0)

The same app_feature_slug field has also been added to GraphqlHierarchyObjectFolderItem (favorites folder items).

AppFeatureType

FieldTypeDescription
reference_idIDThe reference ID of the app feature
🏷️ API version: 2026-04

The API now supports AI agent attribution in two areas:

Reaction attribution

The Reaction type on updates includes two new fields to identify when a reaction was created by an AI agent on behalf of a user:

FieldTypeDescription
attribution_entity_refStringReference ID of the entity that created the reaction (e.g., agent_{agentId})
attribution_entity_typeAttributionEntityThe type of entity — currently supports AGENT

Agent as assignee kind

The Kind enum now includes agent as a value, allowing AI agents to appear as assignees alongside person and team.

New query_params filter on workspaces query

🏷️ API version: 2026-04

The workspaces query now accepts a query_params argument to filter workspaces by account product kind.

Supported product kinds: core, crm, forms, marketing, project_management, service, software, whiteboard.

query {
  workspaces(query_params: { account_product_kind: project_management }) {
    id
    name
  }
}
🏷️ API version: 2026-04

The Board type now includes two new fields:

FieldTypeDescription
created_from_board_idIDThe source board this board was created from (e.g., when duplicated from a template)
folderFolderThe folder containing this board (null if the board is not in a folder)
query {
  boards(ids: [1234567890]) {
    id
    name
    created_from_board_id
    folder {
      id
      name
    }
  }
}
🏷️ API version: 2026-04

The AggregateGroupByResult type no longer exposes separate typed fields for group-by values. The following fields have been removed:

  • value_string (String)
  • value_int (Int)
  • value_float (Float)
  • value_boolean (Boolean)

These are replaced by a single unified field:

"""The value of the group by result. Can be an integer, float, string, or boolean."""
value: JSON

If your integration references value_string, value_int, value_float, or value_boolean, you must migrate to the value field and handle type coercion on the client side.

🏷️ API version: 2026-04

You can now update a board’s item terminology (item nickname) via the update_board mutation.

By setting the board_attribute to item_nickname, you can programmatically control the singular and plural labels used for items on a board.

mutation {
  update_board(
    board_id: 1234567890
    board_attribute: item_nickname
    new_value: "{\"preset_type\":\"other\",\"singular\":\"Task\",\"plural\":\"Tasks\"}"
  )
}

🏷️ API version: 2026-04

You can now manage feature-level lifecycle event subscriptions via the API. Use get_app_lifecycle_subscriptions, update_app_lifecycle_subscription, and delete_app_lifecycle_subscription to retrieve, configure, or remove webhook subscriptions for specific app features.

👉 Read more about feature-level lifecycle event subscriptions here.

query {
  get_app_lifecycle_subscriptions(app_id: "123", version_id: "456") {
    id
    entity_id
    event_type
    webhook_url
    is_sync
  }
}
mutation {
  update_app_lifecycle_subscription(
    entity_identifier: "my-app::my-object-feature"
    entity_type: "appFeature"
    input: {
      lifecycle_events: [
        {
          event_type: "AppFeatureObject:create"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: false
        }
        {
          event_type: "AppFeatureObject:delete"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: false
        }
        {
          event_type: "AppFeatureObject:update_attributes"
          webhook_url: "https://myapp.com/webhooks/lifecycle"
          is_sync: true
        }
      ]
    }
  ) {
    id
    event_type
    webhook_url
    is_sync
  }
}
mutation {
  delete_app_lifecycle_subscription(
    entity_identifier: "my-app::my-object-feature"
    entity_type: "appFeature"
  )
}

🏷️ API version: 2026-04

You can now use the create_marketplace_app_discount mutation to create a marketplace app discount via the API. This mutation can be used for both potential and existing customers.

create_marketplace_app_discount replaces the grant_marketplace_app_discount mutation, which will be deprecated in a future release.

mutation {
  create_marketplace_app_discount_offer(
    app_id: "12345"
    account_slug: "my-company"
    discount_data: {
      discount: 20
      days_valid: 30
      period: MONTHLY
      app_plan_ids: ["plan_001"]
    }
  ) {
    granted_discount {
      app_id
      app_plan_ids
      discount
      period
    }
  }
}