openapi: 3.0.0 info: version: 1.5.0 title: Coda Account Pages API license: name: Coda Developer Terms url: https://coda.io/trust/developer description: "# Introduction\n\nThe Coda API is a RESTful API that lets you programmatically interact with Coda docs:\n\n * List and search Coda docs\n * Create new docs and copy existing ones\n * Share and publish docs\n * Discover pages, tables, formulas, and controls\n * Read, insert, upsert, update, and delete rows\n\nIf you plan to integrate Coda with an AI tool, you may also want to consider using the\n[Coda MCP server](https://coda.io/resources/guides/getting_started_with_coda_mcp). It's optimized for LLM usage\npatterns and often exposes more granular methods for accessing and modifying data.\n\n# Getting Started\n\nOur [Getting Started Guide](https://coda.io/@oleg/getting-started-guide-coda-api) helps you learn the\nbasic of working with the API and shows a few ways you can use it. Check it out, and learn how to:\n\n- Read data from Coda tables and write back to them\n- Build a one-way sync from one Coda doc to another\n- Automate reminders\n- Sync your Google Calendar to Coda\n\n# Changes to the API\n\nAs we update and release newer versions of the API, we reserve the right to remove\nolder APIs and functionality with a 3-month deprecation notice. We will post about such changes as well as announce\nnew features in the [Developers Central](https://community.coda.io/c/developers-central) section of our Community,\nand update the [API updates](https://coda.io/api-updates) doc.\n\n# Using the API\n\nCoda's REST API is designed to be straightforward to use. You can use the language and platform of your choice to\nmake requests. To get a feel for the API, you can also use a tool like [Postman](https://www.getpostman.com/) or\n[Insomnia](https://insomnia.rest/).\n\n## API Endpoint\n\nThis API uses a base path of `https://coda.io/apis/v1`.\n\n## Resource IDs and Links\n\nEach resource instance retrieved via the API has the following fields:\n\n - `id`: The resource's immutable ID, which can be used to refer to it within its context\n - `type`: The type of resource, useful for identifying it in a heterogenous collection of results\n - `href`: A fully qualified URI that can be used to refer to and get the latest details on the resource\n\nMost resources can be queried by their name or ID. We recommend sticking with IDs where possible, as names are\nfragile and prone to being changed by your doc's users.\n\n### List Endpoints\n\nEndpoints supporting listing of resources have the following fields:\n\n - `items`: An array containing the listed resources, limited by the `limit` or `pageToken` query parameters\n - `nextPageLink`: If more results are available, an API link to the next page of results\n - `nextPageToken`: If more results are available, a page token that can be passed into the `pageToken` query parameter\n\n**The maximum page size may change at any time, and may be different for different endpoints.** Please do not rely on it\nfor any behavior of your application. If you pass a `limit` parameter that is larger than our maximum allowed limit,\nwe will only return as many results as our maximum limit. You should look for the presence of the `nextPageToken` on the\nresponse to see if there are more results available, rather than relying on a result set that matches your provided limit.\n\nTo fetch a subsequent page of results, pass the `pageToken` parameter. Set this parameter to the value given to you as the `nextPageToken`\nin a page response. If no value is provided, there are no more results available. You only need to pass the `pageToken` to get\nthe next page of results, you don't need to pass any of the parameters from your original request, as they are all\nimplied by the `pageToken`. Any other parameters provided alongside a `pageToken` will be ignored.\n\n### Doc IDs\n\nWhile most object IDs will have to be discovered via the API, you may find yourself frequently wanting to get the\nID of a specific Coda doc.\n\nHere's a handy tool that will extract it for you. (See if you can find the pattern!)\n\n
\n\n## Rate Limiting\n\nThe Coda API sets a reasonable limit on the number of requests that can be made per minute. Once this limit is\nreached, calls to the API will start returning errors with an HTTP status code of 429.\n\nThese are the current rate limits. They are subject to change at any time without notice. For robustness,\nall API scripts should check for HTTP 429 Too Many Requests errors and back off and retry the request.\nLimits apply per-user across all endpoints that share the same limit and across all docs.\n\nReading data (with the exceptions below): {{READ_RATE_LIMIT}}\nThis is rich text
PageContentFormat: x-schema-name: PageContentFormat description: Supported content types for page (canvas) content. type: string enum: - html - markdown x-tsEnumNames: - Html - Markdown PageContentDeleteResult: x-schema-name: PageContentDeleteResult description: The result of a page content deletion. allOf: - $ref: '#/components/schemas/DocumentMutateResponse' - type: object required: - id additionalProperties: false properties: id: type: string description: ID of the page whose content was deleted. example: canvas-tuVwxYz PageLineStyle: x-schema-name: PageLineStyle description: The style of a line element in a canvas page. type: string enum: - blockQuote - bulletedList - checkboxList - code - collapsibleList - h1 - h2 - h3 - numberedList - paragraph - pullQuote x-tsEnumNames: - BlockQuote - BulletedList - CheckboxList - Code - CollapsibleList - H1 - H2 - H3 - NumberedList - Paragraph - PullQuote PageContentOutputFormat: x-schema-name: PageContentOutputFormat description: Supported output content formats that can be requested for getting content for an existing page. type: string enum: - html - markdown x-tsEnumNames: - Html - Markdown PageContentInsertionMode: x-schema-name: PageContentInsertionMode description: Mode for updating the content on an existing page. type: string enum: - append - prepend - replace x-tsEnumNames: - Append - Prepend - Replace PageEmbedRenderMethod: x-schema-name: PageEmbedRenderMethod description: Render mode for a page using the Embed page type. type: string enum: - compatibility - standard x-tsEnumNames: - Compatibility - Standard PageContentUpdate: x-schema-name: PageContentUpdate description: Payload for updating the content of an existing page. type: object additionalProperties: false required: - insertionMode - canvasContent properties: insertionMode: $ref: '#/components/schemas/PageContentInsertionMode' elementId: type: string example: cl-lzqh0Q0poT description: 'ID of the element on the page to use as a reference point for editing content. If provided, the operation will be relative to this element (e.g., append after it, prepend before it, replace it). If omitted, the operation will be performed on the entire page (e.g., append to end, prepend to beginning, replace all). ' canvasContent: $ref: '#/components/schemas/PageContent' PageType: x-schema-name: PageType description: The type of a page in a doc. type: string enum: - canvas - embed - syncPage x-tsEnumNames: - Canvas - Embed - SyncPage nextPageToken: description: If specified, an opaque token used to fetch the next page of results. type: string example: eyJsaW1pd LinkedDataType: x-schema-name: LinkedDataType description: A schema.org identifier for the object. type: string enum: - ImageObject - MonetaryAmount - Person - WebPage - StructuredValue x-tsEnumNames: - ImageObject - MonetaryAmount - Person - WebPage - StructuredValue PageUpdateResult: x-schema-name: PageUpdateResult description: The result of a page update. allOf: - $ref: '#/components/schemas/DocumentMutateResponse' - type: object required: - id additionalProperties: false properties: id: type: string description: ID of the updated page. example: canvas-tuVwxYz BeginPageContentExportResponse: x-schema-name: BeginPageContentExportResponse description: Response when beginning an export of page content. type: object additionalProperties: false required: - id - status - href properties: id: type: string description: The identifier of this export request. example: AbCDeFGH status: type: string description: The status of this export. example: complete href: type: string description: The URL that reports the status of this export. Poll this URL to get the content URL when the export has completed. example: https://coda.io/apis/v1/docs/somedoc/pages/somepage/export/some-request-id Icon: x-schema-name: icon description: Info about the icon. type: object required: - name - type - browserLink additionalProperties: false properties: name: type: string description: Name of the icon. type: type: string description: MIME type of the icon browserLink: type: string format: url description: Browser-friendly link to an icon. example: https://cdn.coda.io/icons/png/color/icon-32.png PageContentItemType: x-schema-name: PageContentItemType description: The type of content item in a page. type: string enum: - line x-tsEnumNames: - Line PageCreate: x-schema-name: PageCreate description: Payload for creating a new page in a doc. type: object additionalProperties: false properties: name: type: string description: Name of the page. example: Launch Status subtitle: type: string description: Subtitle of the page. example: See the status of launch-related tasks. iconName: type: string description: Name of the icon. example: rocket imageUrl: type: string description: Url of the cover image to use. example: https://example.com/image.jpg parentPageId: type: string description: The ID of this new page's parent, if creating a subpage. example: canvas-tuVwxYz pageContent: $ref: '#/components/schemas/PageCreateContent' PageContentItemContent: x-schema-name: PageContentItemContent description: Content details of the item. type: object required: - style - format - content additionalProperties: false properties: style: $ref: '#/components/schemas/PageLineStyle' format: $ref: '#/components/schemas/PageContentItemContentFormat' content: type: string description: Content of the item in the specified format. example: This is a paragraph of text. lineLevel: type: integer description: 'Indentation level of the element. Present for indentable elements (paragraphs, blockquotes, and list items). ' example: 0 PageReference: x-schema-name: PageReference description: Reference to a page. type: object required: - id - type - browserLink - href - name additionalProperties: false properties: id: type: string description: ID of the page. example: canvas-IjkLmnO type: type: string description: The type of this resource. enum: - page x-tsType: Type.Page href: type: string format: url description: API link to the page. example: https://coda.io/apis/v1/docs/AbCDeFGH/pages/canvas-IjkLmnO browserLink: type: string format: url description: Browser-friendly link to the page. example: https://coda.io/d/_dAbCDeFGH/Launch-Status_sumnO name: type: string description: Name of the page. example: Launch Status BeginPageContentExportRequest: x-schema-name: BeginPageContentExportRequest description: Request for beginning an export of page content. type: object additionalProperties: false required: - outputFormat properties: outputFormat: $ref: '#/components/schemas/PageContentOutputFormat' DocumentMutateResponse: x-schema-name: DocumentMutateResponse description: Base response type for an operation that mutates a document. type: object additionalProperties: false required: - requestId properties: requestId: type: string description: An arbitrary unique identifier for this request. example: abc-123-def-456 Page: x-schema-name: Page description: Metadata about a page. type: object required: - id - type - href - name - isHidden - isEffectivelyHidden - browserLink - children - contentType additionalProperties: false properties: id: type: string description: ID of the page. example: canvas-IjkLmnO type: type: string description: The type of this resource. enum: - page x-tsType: Type.Page href: type: string format: url description: API link to the page. example: https://coda.io/apis/v1/docs/AbCDeFGH/pages/canvas-IjkLmnO browserLink: type: string format: url description: Browser-friendly link to the page. example: https://coda.io/d/_dAbCDeFGH/Launch-Status_sumnO name: type: string description: Name of the page. example: Launch Status subtitle: type: string description: Subtitle of the page. example: See the status of launch-related tasks. icon: $ref: '#/components/schemas/Icon' image: $ref: '#/components/schemas/Image' contentType: $ref: '#/components/schemas/PageType' isHidden: type: boolean description: Whether the page is hidden in the UI. example: true isEffectivelyHidden: type: boolean description: Whether the page or any of its parents is hidden in the UI. example: true parent: $ref: '#/components/schemas/PageReference' children: type: array items: $ref: '#/components/schemas/PageReference' authors: description: Authors of the page type: array items: $ref: '#/components/schemas/PersonValue' createdAt: type: string format: date-time description: Timestamp for when the page was created. example: '2018-04-11T00:18:57.946Z' createdBy: $ref: '#/components/schemas/PersonValue' updatedAt: type: string format: date-time description: Timestamp for when page content was last modified. example: '2018-04-11T00:18:57.946Z' updatedBy: $ref: '#/components/schemas/PersonValue' PageContentExportStatusResponse: x-schema-name: PageContentExportStatusResponse description: Response when requesting the status of a page content export. type: object additionalProperties: false required: - id - status - href properties: id: type: string description: The identifier of this export request. example: AbCDeFGH status: type: string description: The status of this export. example: complete href: type: string description: The URL that reports the status of this export. example: https://coda.io/apis/v1/docs/somedoc/pages/somepage/export/some-request-id downloadLink: type: string description: Once the export completes, the location where the resulting export file can be downloaded; this link typically expires after a short time. Call this method again to get a fresh link. example: https://coda.io/blobs/DOC_EXPORT_RENDERING/some-request-id error: type: string description: Message describing an error, if this export failed. PageContentList: x-schema-name: PageContentList description: List of page content elements. type: object required: - items - href additionalProperties: false properties: items: type: array items: $ref: '#/components/schemas/PageContentItem' href: type: string format: url description: API link to these results example: https://coda.io/apis/v1/docs/AbCDeFGH/pages/canvas-IjkLmnO/content?limit=20 nextPageToken: $ref: '#/components/schemas/nextPageToken' nextPageLink: allOf: - $ref: '#/components/schemas/nextPageLink' - type: string example: https://coda.io/apis/v1/docs/AbCDeFGH/pages/canvas-IjkLmnO/content?pageToken=eyJsaW1pd LinkedDataObject: x-schema-name: LinkedDataObject description: Base type for a JSON-LD (Linked Data) object. type: object additionalProperties: false required: - '@context' - '@type' properties: '@context': type: string description: A url describing the schema context for this object, typically "http://schema.org/". example: http://schema.org/ '@type': $ref: '#/components/schemas/LinkedDataType' additionalType: type: string description: 'An identifier of additional type info specific to Coda that may not be present in a schema.org taxonomy, ' nextPageLink: description: If specified, a link that can be used to fetch the next page of results. type: string format: url PageDeleteResult: x-schema-name: PageDeleteResult description: The result of a page deletion. allOf: - $ref: '#/components/schemas/DocumentMutateResponse' - type: object required: - id additionalProperties: false properties: id: type: string description: ID of the page to be deleted. example: canvas-tuVwxYz Image: x-schema-name: Image description: Info about the image. type: object required: - browserLink additionalProperties: false properties: browserLink: type: string format: url description: Browser-friendly link to an image. example: https://codahosted.io/docs/nUYhlXysYO/blobs/bl-lYkYKNzkuT/3f879b9ecfa27448 type: type: string description: MIME type of the image. width: type: number description: The width in pixels of the image. example: 800 height: type: number description: The height in pixels of the image. example: 600 PageContentDelete: x-schema-name: PageContentDelete description: Payload for deleting content from a page. type: object additionalProperties: false properties: elementIds: type: array description: 'IDs of the elements to delete from the page. If omitted or empty, all content will be deleted. ' items: type: string example: - cl-lzqh0Q0poT - cl-abc123def PageList: x-schema-name: PageList description: List of pages. type: object required: - items additionalProperties: false properties: items: type: array items: $ref: '#/components/schemas/Page' href: type: string format: url description: API link to these results example: https://coda.io/apis/v1/docs/AbCDeFGH/pages?limit=20 nextPageToken: $ref: '#/components/schemas/nextPageToken' nextPageLink: allOf: - $ref: '#/components/schemas/nextPageLink' - type: string example: https://coda.io/apis/v1/docs/AbCDeFGH/pages?pageToken=eyJsaW1pd PageCreateContent: x-schema-name: PageCreateContent description: Content that can be added to a page at creation time, either text (or rich text) or a URL to create a full-page embed. discriminator: propertyName: type oneOf: - type: object required: - type - canvasContent additionalProperties: false properties: type: type: string description: Indicates a page containing canvas content. enum: - canvas x-tsType: PageType.Canvas canvasContent: $ref: '#/components/schemas/PageContent' - type: object required: - type - url additionalProperties: false properties: type: type: string description: Indicates a page that embeds other content. enum: - embed x-tsType: PageType.Embed url: type: string description: The URL of the content to embed. example: https://example.com renderMethod: $ref: '#/components/schemas/PageEmbedRenderMethod' - discriminator: propertyName: mode oneOf: - type: object required: - type - mode - sourcePageId - includeSubpages - sourceDocId additionalProperties: false properties: type: type: string description: Indicates a page that embeds other Coda content. enum: - syncPage x-tsType: PageType.SyncPage mode: type: string description: Indicates a single-page sync page. enum: - page x-tsType: SyncPageType.Page includeSubpages: type: boolean description: Include subpages in the sync page. sourcePageId: type: string description: The page id to insert as a sync page. example: canvas-IjkLmnO sourceDocId: type: string description: The id of the document to insert as a sync page. example: sHbI4uIwiK - type: object required: - type - mode - sourceDocId additionalProperties: false properties: type: type: string description: Indicates a page that embeds other content. enum: - syncPage x-tsType: PageType.SyncPage mode: type: string description: Indicates a full doc sync page. enum: - document x-tsType: SyncPageType.Document sourceDocId: type: string description: The id of the document to insert as a sync page. example: sHbI4uIwiK PageUpdate: x-schema-name: PageUpdate description: Payload for updating a page. type: object additionalProperties: false properties: name: type: string description: Name of the page. example: Launch Status subtitle: type: string description: Subtitle of the page. example: See the status of launch-related tasks. iconName: type: string description: Name of the icon. example: rocket imageUrl: type: string description: Url of the cover image to use. example: https://example.com/image.jpg isHidden: type: boolean description: Whether the page is hidden or not. Note that for pages that cannot be hidden, like the sole top-level page in a doc, this will be ignored. example: true contentUpdate: allOf: - type: object description: Content with which to update an existing page. additionalProperties: false - $ref: '#/components/schemas/PageContentUpdate' PageContentItemContentFormat: x-schema-name: PageContentItemContentFormat description: Content format for the item. type: string enum: - plainText x-tsEnumNames: - PlainText PersonValue: x-schema-name: PersonValue description: A named reference to a person, where the person is identified by email address. allOf: - $ref: '#/components/schemas/LinkedDataObject' - type: object additionalProperties: false required: - '@type' - name properties: '@type': type: string enum: - Person x-tsType: LinkedDataType.Person name: type: string description: The full name of the person. example: Alice Atkins email: type: string description: The email address of the person. example: alice@atkins.com PageContentItem: x-schema-name: PageContentItem description: Content item in a page (canvas). type: object required: - id - type additionalProperties: false properties: id: type: string description: ID of the content item. example: cl-2ZUJuRhNuN type: $ref: '#/components/schemas/PageContentItemType' itemContent: $ref: '#/components/schemas/PageContentItemContent' PageCreateResult: x-schema-name: PageCreateResult description: The result of a page creation. allOf: - $ref: '#/components/schemas/DocumentMutateResponse' - type: object required: - id additionalProperties: false properties: id: type: string description: ID of the created page. example: canvas-tuVwxYz parameters: pageIdOrName: name: pageIdOrName description: 'ID or name of the page. Names are discouraged because they''re easily prone to being changed by users. If you''re using a name, be sure to URI-encode it. If you provide a name and there are multiple pages with the same name, an arbitrary one will be selected. ' x-sdk-description: 'ID or name of the page. Names are discouraged because they''re easily prone to being changed by users. Note that if you''re using a name and there are multiple pages with the same name, an arbitrary one will be returned. ' in: path required: true example: canvas-IjkLmnO schema: type: string docId: name: docId description: ID of the doc. in: path required: true example: AbCDeFGH schema: type: string requestId: name: requestId description: ID of the request. in: path required: true example: abc-123-def-456 schema: type: string limit: name: limit description: Maximum number of results to return in this query. in: query example: 10 schema: type: integer minimum: 1 default: 25 pageContentLimit: name: limit description: Maximum number of content items to return in this query. in: query example: 50 schema: type: integer minimum: 1 maximum: 500 default: 50 contentFormat: name: contentFormat description: The format to return content in. Defaults to plainText. in: query example: plainText schema: type: string enum: - plainText default: plainText pageToken: name: pageToken description: An opaque token used to fetch the next page of results. in: query example: eyJsaW1pd schema: type: string responses: BadRequestError: description: The request parameters did not conform to expectations. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 400 statusMessage: type: string description: HTTP status message of the error. example: Bad Request message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Bad Request GoneError: description: The resource has been deleted. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 410 statusMessage: type: string description: HTTP status message of the error. example: Gone message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Gone NotFoundError: description: The resource could not be located with the current API token. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 404 statusMessage: type: string description: HTTP status message of the error. example: Not Found message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Not Found ForbiddenError: description: The API token does not grant access to this resource. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 403 statusMessage: type: string description: HTTP status message of the error. example: Forbidden message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Forbidden TooManyRequestsError: description: The client has sent too many requests. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 429 statusMessage: type: string description: HTTP status message of the error. example: Too Many Requests message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Too Many Requests UnauthorizedError: description: The API token is invalid or has expired. content: application/json: schema: description: An HTTP error resulting from an unsuccessful request. required: - statusCode - statusMessage - message additionalProperties: false properties: statusCode: type: number description: HTTP status code of the error. example: 401 statusMessage: type: string description: HTTP status message of the error. example: Unauthorized message: type: string description: Any additional context on the error, or the same as `statusMessage` otherwise. example: Unauthorized securitySchemes: Bearer: description: "The Coda API can be accessed using an API token, which can be obtained from [*My account*](https://coda.io/account)\nin Coda. This token should be specified by setting a header as follows.\n\n```Authorization: Bearer| Restriction | Description | Allowed HTTP Methods |
|---|---|---|
| Read access | \nAllows access to API methods that read the state of an object | \nGET | \n
| Write access | \nAllows access to API methods that write the state of an object | \nPOST, PUT, DELETE | \n
| Read and write access | \nAllows access to all methods for an object | \nAll | \n