---
title: "Create Public Ferry Diagram"
method: POST
path: "/v2/public/ferry/diagrams"
tags: ["ferry-diagrams"]
---

# Create Public Ferry Diagram

`POST /v2/public/ferry/diagrams`

## Request

- Base URL: `https://api.sanka.com`
- URL: `https://api.sanka.com/v2/public/ferry/diagrams`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sankahq/apis/sanka-public-api/docs/v2/public/ferry/diagrams/post.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `workspace_id` string, nullable

## Headers

- `X-Workspace-Code` string

## Request body

- FerryDiagramCreateRequest
  - `name` string, required
  - `description` string
  - `nodes` FerryDiagramNode[]
    - `id` string, required
    - `type` 'objectTable' | 'process' | 'note' | 'section', required
    - `position` FerryDiagramPosition, required
      - `x` number, required
      - `y` number, required
    - `data` FerryDiagramNodeData, required
      - `label` string, required
      - `description` string
      - `fields` string[]
      - `moduleName` string, nullable
      - `objectKey` string, nullable
      - `objectSlug` string, nullable
      - `color` 'default' | 'brand' | 'success' | 'warning' | 'danger'
      - `shape` 'rectangle' | 'roundedRectangle' | 'square' | 'circle' | 'diamond' | 'triangle' | 'invertedTriangle' | 'oval' | 'cylinder' | 'pill', nullable
      - `fontSize` number, nullable: Label font size in CSS pixels. Omit it to use the node type's default size.
      - `fillColor` string, nullable: Custom fill color as #RRGGBB. It overrides the fill of the `color` preset. Without a custom text color, clients choose a readable dark or light text color.
      - `strokeColor` string, nullable: Custom outline color as #RRGGBB. It overrides the `color` preset outline.
      - `textColor` string, nullable: Custom label color as #RRGGBB. Without a custom fill, clients draw a white fill so the text stays readable in light and dark themes.
    - `width` number, nullable: Frame width in CSS pixels, supplied together with height. Sections require it (up to 8,000); shaped process nodes and notes may set it (up to 1,600).
    - `height` number, nullable: Frame height in CSS pixels, supplied together with width. Sections require it (up to 8,000); shaped process nodes and notes may set it (up to 1,200).
  - `edges` FerryDiagramEdge[]
    - `id` string, required
    - `source` string, required
    - `target` string, required
    - `label` string
    - `type` 'default' | 'smoothstep' | 'straight'
    - `sourceHandle` string, nullable
    - `strokeWidth` number, nullable: Connector stroke width in CSS pixels.
    - `targetHandle` string, nullable
    - `sourceArrow` boolean: Render an arrowhead at the connector source endpoint.
    - `sourceCardinality` 'one' | 'zero_or_one' | 'one_or_many' | 'zero_or_many', nullable: Optional ER cardinality at the connector source endpoint. Clients render it as one bar, circle plus bar, bar plus Crow's Foot, or circle plus Crow's Foot.
    - `targetArrow` boolean: Render an arrowhead at the connector target endpoint.
    - `targetCardinality` 'one' | 'zero_or_one' | 'one_or_many' | 'zero_or_many', nullable: Optional ER cardinality at the connector target endpoint. Clients render it as one bar, circle plus bar, bar plus Crow's Foot, or circle plus Crow's Foot.
    - `strokeStyle` 'solid' | 'dashed' | 'dotted', nullable: Connector line pattern. Omit it for a solid line.
    - `strokeColor` string, nullable: Custom connector and arrowhead color as #RRGGBB.
    - `fontSize` number, nullable: Connector label font size in CSS pixels. Labels keep explicit line breaks. Omit it to use the default size.
  - `viewport` FerryDiagramViewport
    - `x` number
    - `y` number
    - `zoom` number

## Response `200`

Successful Response

- CreatePublicFerryDiagramApiV2PublicFerryDiagramsPost200Envelope
  - `success` true, required
  - `data` FerryDiagramData, required
    - `name` string, required
    - `description` string
    - `nodes` FerryDiagramNode[]
      - `id` string, required
      - `type` 'objectTable' | 'process' | 'note' | 'section', required
      - `position` FerryDiagramPosition, required
        - `x` number, required
        - `y` number, required
      - `data` FerryDiagramNodeData, required
        - `label` string, required
        - `description` string
        - `fields` string[]
        - `moduleName` string, nullable
        - `objectKey` string, nullable
        - `objectSlug` string, nullable
        - `color` 'default' | 'brand' | 'success' | 'warning' | 'danger'
        - `shape` 'rectangle' | 'roundedRectangle' | 'square' | 'circle' | 'diamond' | 'triangle' | 'invertedTriangle' | 'oval' | 'cylinder' | 'pill', nullable
        - `fontSize` number, nullable: Label font size in CSS pixels. Omit it to use the node type's default size.
        - `fillColor` string, nullable: Custom fill color as #RRGGBB. It overrides the fill of the `color` preset. Without a custom text color, clients choose a readable dark or light text color.
        - `strokeColor` string, nullable: Custom outline color as #RRGGBB. It overrides the `color` preset outline.
        - `textColor` string, nullable: Custom label color as #RRGGBB. Without a custom fill, clients draw a white fill so the text stays readable in light and dark themes.
      - `width` number, nullable: Frame width in CSS pixels, supplied together with height. Sections require it (up to 8,000); shaped process nodes and notes may set it (up to 1,600).
      - `height` number, nullable: Frame height in CSS pixels, supplied together with width. Sections require it (up to 8,000); shaped process nodes and notes may set it (up to 1,200).
    - `edges` FerryDiagramEdge[]
      - `id` string, required
      - `source` string, required
      - `target` string, required
      - `label` string
      - `type` 'default' | 'smoothstep' | 'straight'
      - `sourceHandle` string, nullable
      - `strokeWidth` number, nullable: Connector stroke width in CSS pixels.
      - `targetHandle` string, nullable
      - `sourceArrow` boolean: Render an arrowhead at the connector source endpoint.
      - `sourceCardinality` 'one' | 'zero_or_one' | 'one_or_many' | 'zero_or_many', nullable: Optional ER cardinality at the connector source endpoint. Clients render it as one bar, circle plus bar, bar plus Crow's Foot, or circle plus Crow's Foot.
      - `targetArrow` boolean: Render an arrowhead at the connector target endpoint.
      - `targetCardinality` 'one' | 'zero_or_one' | 'one_or_many' | 'zero_or_many', nullable: Optional ER cardinality at the connector target endpoint. Clients render it as one bar, circle plus bar, bar plus Crow's Foot, or circle plus Crow's Foot.
      - `strokeStyle` 'solid' | 'dashed' | 'dotted', nullable: Connector line pattern. Omit it for a solid line.
      - `strokeColor` string, nullable: Custom connector and arrowhead color as #RRGGBB.
      - `fontSize` number, nullable: Connector label font size in CSS pixels. Labels keep explicit line breaks. Omit it to use the default size.
    - `viewport` FerryDiagramViewport
      - `x` number
      - `y` number
      - `zoom` number
    - `id` string, required
    - `workspaceId` string, required
    - `revision` integer, required
    - `createdById` integer, nullable
    - `updatedById` integer, nullable
    - `createdAt` union
      - string, date-time
      - string
    - `updatedAt` union
      - string, date-time
      - string
  - `meta` EnvelopeMeta, required
    - `ctx_id` string, required
    - `pagination` PaginationMeta
      - `page` integer, required
      - `page_size` integer, required
      - `total` integer, required
      - `next_cursor` string, nullable
    - `toast` ToastMessage
      - `variant` 'success' | 'error' | 'info' | 'warning', required
      - `code` string, required
      - `message` string, required
      - `i18n` ToastMessageI18n, required
        - `en` string, required
        - `ja` string, required

## Other responses

- `401`: Error response
- `403`: Error response
- `422`: Error response

## Changes

- **2026-10-14** `1074cf295bac`: 2 warning, 32 info
  - added the new `section` enum value to the `data/nodes/items/type` response property for the response status `200`
  - added the new `straight` enum value to the `data/edges/items/type` response property for the response status `200`
  - added the new optional request property `edges/items/fontSize`
  - added the new optional request property `edges/items/sourceArrow`
  - …30 more
- **2026-07-13** `181809818c49`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sankahq/apis/sanka-public-api/changes/v2/public/ferry/diagrams/post.md)

---

[API](https://skmtc.dev/sankahq/apis/sanka-public-api.md) - [All operations](https://skmtc.dev/sankahq/apis/sanka-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sankahq/apis/sanka-public-api/revisions/16f03a9e3ab9?raw)
