# Card corners

Use `style.cornerRadii` for a card's corners. Send all four non-negative values in board pixels: `topLeft`, `topRight`, `bottomRight` and `bottomLeft`. For uniform corners, send the same value four times.

## Set corners

Read the board with [`ListCards`](https://app.plentylabs.com/api/playground?op=ListCards) to get the card's identity, then send this mutation with its board id, asset type and asset id. This example rounds the top corners to 24 pixels and keeps the bottom corners square.

```graphql
mutation SetCardCorners($boardId: ID!, $assetType: String!, $assetId: String!) {
  updateCanvasCards(input: {
    boardId: $boardId
    requireExisting: true
    cards: [{
      assetType: $assetType
      assetId: $assetId
      style: {
        cornerRadii: { topLeft: 24, topRight: 24, bottomRight: 0, bottomLeft: 0 }
      }
    }]
  }) {
    success
    rowsAffected
  }
}
```

MCP clients use [`ArrangeCards`](https://app.plentylabs.com/api/playground?op=ArrangeCards) with the same card entry in cards. After placing an asset with [`PlaceCards`](https://app.plentylabs.com/api/playground?op=PlaceCards), use ArrangeCards to set its corners. API clients can also supply style.cornerRadii when creating cards.

## Read and reset

- Read `style.cornerRadii { topLeft topRight bottomRight bottomLeft }`. This includes uniform values saved by older clients. `ListCards` already selects these fields.
- Omit `cornerRadii` when updating other properties to preserve the current corners.
- Send `style: { cornerRadii: null }` to clear all explicit card corner settings and restore the card's default corners. A null read means there is no explicit override; it does not necessarily mean square corners.
- Send four zeroes when you explicitly want square corners.

## Migrating from cornerRadius

`CanvasCardStyle.cornerRadius` and `CanvasCardStyleInput.cornerRadius` are deprecated and remain accepted for existing integrations. Replace a scalar write such as `cornerRadius: 12` with the following, and switch reads to `cornerRadii` so independent corners are represented correctly:

```json
{
  "style": {
    "cornerRadii": {
      "topLeft": 12,
      "topRight": 12,
      "bottomRight": 12,
      "bottomLeft": 12
    }
  }
}
```

- Send only `cornerRadii` in new integrations. When both fields are sent, a non-null `cornerRadii` takes precedence. For existing integrations, `cornerRadius: 12` together with `cornerRadii: null` still sets uniform 12-pixel corners.
- A legacy `cornerRadius`-only update still sets all four corners uniformly, replacing any previous independent corners. A legacy null resets the corners.
- The legacy scalar read does not describe independent corners. Use `cornerRadii` as the source of truth.

This migration applies to card style only. A shape's `shape.cornerRadius` and radii of elements inside an artboard are separate settings with their own units and remain unchanged.
