> This page is for Developer Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/_mcp/server.

## App Canvas Creation Requires ResourceId

App canvas creation now lists `resourceId` as a required field when creating a new canvas.

These changes are effective **March 3rd 2023.**

### What’s changing?

Creating an app canvas via the API marks the `resourceId` required when it was previously optional. Although the field was optional, in practice, the canvas was never rendered to a user without an associated `resourceId`. Any canvases created this way were never visible to users in Benchling.

POST requests to `/canvases` should include `resourceId`.

### When is this happening?

App canvas creation will start requiring `resourceId` on **March 3rd 2023**

## App Canvas Initialization Experience

App canvas initialization for apps with an `ASSAY_RUN` canvas feature responding to webhooks will no longer receive a `canvasId` as part of the payload.

These changes are effective **March 3rd 2023.**

### What’s changing?

Previously, the app canvas initialization experience was inconsistent depending on the `type` of `features` specified by the developer in the app’s manifest. For `ASSAY_RUN` features, Benchling would automatically create an app canvas internally, and send a  `v2-alpha.canvas.interaction` webhook containing the created `canvasId`.

Moving forward, Benchling will allow the app to create the canvas, and will send a `v0-beta.canvas.initialized` webhook that will no longer contain a `canvasId`.

Users should POST a new canvas to the target `resourceId` of the assay run. Previously, they were able to `PATCH` a canvas that was created automatically as part of this process.

### When is this happening?

The updated canvas payloads and experience will be available starting **March 3rd 2023.**

## Webhook Type for App Canvas Interactions

The two webhook payloads for app canvas interactions and initializations will have their `type` key within the `message` attribute changed from:

1. `v2-alpha.canvas.interaction to v0-beta.canvas.userInteracted`
2. `v2-alpha.canvas.initialize to v0-beta.canvas.initialized`

These changes are effective **March 3rd 2023**.

### What’s changing?

The webhook OpenAPI spec correctly described the `type` in `message`, however the server was sending the payloads with an erroneous `v2-` prefix and wrong suffix in the response.

Other webhook types are unaffected.

### When is this happening?

The new canvas interacted webhook payoad will start returning updated types starting **March 3rd 2023**.