Coda Docs API

Coda docs are foundational, top-level collaborative projects that contain pages. The API lets you list and search your docs to obtain basic metadata like titles and ownership information.

OpenAPI Specification

coda-docs-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: 1.5.0
  title: Coda Account Docs 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<form>\n  <fieldset style=\"margin: 0px 25px 25px 25px; display: inline;\">\n    <legend>Doc ID Extractor</legend>\n    <input type=\"text\" id=\"de_docUrl\" placeholder=\"Paste in a Coda doc URL\"\n           style=\"width: 250px; padding: 8px; margin-right: 20px;\" />\n    <span>\n      Your doc ID is:&nbsp;&nbsp;&nbsp;\n      <input id=\"de_docId\" readonly=\"true\"\n             style=\"width: 150px; padding: 8px; font-family: monospace; border: 1px dashed gray;\" />\n  </fieldset>\n</form>\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}}\n<br/>\nWriting data (POST/PUT/PATCH): {{WRITE_RATE_LIMIT}}\n<br/>\nWriting doc content data (POST/PUT/PATCH): {{WRITE_DOC_CONTENT_RATE_LIMIT}}\n<br/>\nListing docs: {{LIST_DOCS_RATE_LIMIT}}\n<br/>\nReading analytics: {{ANALYTICS_RATE_LIMIT}}\n\n## Consistency\n\nWhile edits made in Coda are shared with other collaborators in real-time, it can take a few seconds for them to\nbecome available via the API. You may also notice that changes made via the API, such as updating a row, are not\nimmediate. These endpoints all return an HTTP 202 status code, instead of a standard 200, indicating that the\nedit has been accepted and queued for processing. This generally takes a few seconds, and the edit may fail if\ninvalid. Each such edit will return a `requestId` in the response, and you can pass this `requestId` to the\n[`#getMutationStatus`](#operation/getMutationStatus) endpoint to find out if it has been applied.\n\nSimilarly, when you get doc data from the API (rows, pages, columns, etc), the data you receive comes from\nthe most recent \"snapshot\" of the doc, which might be slightly stale relative to the data you observe in\nyour browser. If you want to ensure that the data you receive is up to date and are ok getting an error if not,\nyou can pass this header in your request: `X-Coda-Doc-Version: latest`. If the API's view of the doc is\nnot up to date, the API will return an HTTP 400 response.\n\n## Volatile Formulas\n\nCoda exposes a number of \"volatile\" formulas, as as `Today()`, `Now()`, and `User()`. When used in a live Coda\ndoc, these formulas affect what's visible in realtime, tailored to the current user.\n\nSuch formulas behave differently with the API. Time-based values may only be current to the last edit made to the\ndoc. User-based values may be blank or invalid.\n\n## Free and Paid Workspaces\n\nWe make the Coda API available to all of our users free of charge, in both free and paid workspaces. However, API\nusage is subject to the role of the user associated with the API token in the workspace applicable to each API\nrequest. What this means is:\n\n- For the [`#createDoc`](#operation/createDoc) endpoint specifically, the owner of the API token must be a Doc\n  Maker (or Admin) in the workspace. If the \"Any member can create docs\" option in enabled in the workspace\n  settings, they can be an Editor and will get auto-promoted to Doc Maker upon using this endpoint. Lastly, if in\n  addition, the API key owner matches the \"Auto-join email domains\" setting, they will be auto-added to the\n  workspace and promoted to Doc Maker upon using this endpoint\n\nThis behavior applies to the API as well as any integrations that may use it, such as Zapier.\n\n## Examples\n\nTo help you get started, this documentation provides code examples in Python, Unix shell, and Google Apps Script.\nThese examples are based on a simple doc that looks something like this:\n\n![](https://cdn.coda.io/external/img/api_example_doc.png)\n\n### Python examples\n\nThese examples use Python 3.6+. If you don't already have the `requests` module, use `pip` or `easy_install` to\nget it.\n\n### Shell examples\n\nThe shell examples are intended to be run in a Unix shell. If you're on Windows, you will need to install\n[WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10).\n\nThese examples use the standard cURL utility to pull from the API, and then process it with `jq` to extract and\nformat example output. If you don't already have it, you can either [install it](https://stedolan.github.io/jq/)\nor run the command without it to see the raw JSON output.\n\n### Google Apps Script examples\n\n![](https://cdn.coda.io/external/img/api_gas.png)\n\n[Google Apps Script](https://script.google.com/) makes it easy to write code in a JavaScript-like syntax and\neasily access many Google products with built-in libraries. You can set up your scripts to run periodically,\nwhich makes it a good environment for writing tools without maintaining your own server.\n\nCoda provides a library for Google Apps Script. To use it, go into `Resources -> Libraries...` and enter the\nfollowing library ID: `15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl`. If you want to see the\nlibrary's source code, it's available\n[here](https://script.google.com/d/15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl/edit).\n\nGoogle provides autocomplete for API functions as well as generated docs. You can access these docs via the\nLibraries dialog by clicking on the library name. Required parameters that would be included in the URL path are\npositional arguments in each of these functions, followed by the request body, if applicable. All remaining\nparameters can be specified in the options object.\n\n## OpenAPI/Swagger Spec\n\nIn an effort to standardize our API and make it accessible, we offer an OpenAPI 3.0 specification:\n\n- [OpenAPI 3.0 spec - YAML](https://coda.io/apis/v1/openapi.yaml)\n- [OpenAPI 3.0 spec - JSON](https://coda.io/apis/v1/openapi.json)\n\n#### Postman collection\n\nTo get started with prototyping the API quickly in Postman, you can use one of links above to import the Coda API\ninto a collection. You'll then need to set the [appropriate header](#section/Authentication) and environment\nvariables.\n\n## Client libraries\n\nWe do not currently support client libraries apart from Google Apps Script. To work with the Coda API, you can\neither use standard network libraries for your language, or use the appropriate Swagger Generator tool to\nauto-generate Coda API client libraries for your language of choice. We do not provide any guarantees that these\nautogenerated libraries are compatible with our API (e.g., some libraries may not work with Bearer\nauthentication).\n\n### OpenAPI 3.0\n\n[Swagger Generator 3](https://generator3.swagger.io/) (that link takes you to the docs for the generator API) can\ngenerate client libraries for [these languages](https://generator3.swagger.io/v2/clients). It's relatively new\nand thus only has support for a limited set of languages at this time.\n\n### Third-party client libraries\n\nSome members of our amazing community have written libraries to work with our API. These aren't officially\nsupported by Coda, but are listed here for convenience. (Please let us know if you've written a library and would\nlike to have it included here.)\n\n- [PHP](https://github.com/danielstieber/CodaPHP) by Daniel Stieber\n- [Node-RED](https://github.com/serene-water/node-red-contrib-coda-io) by Mori Sugimoto\n- [NodeJS](https://www.npmjs.com/package/coda-js) by Parker McMullin\n- [Ruby](https://rubygems.org/gems/coda_docs/) by Carlos Muñoz at Getro\n- [Python](https://github.com/Blasterai/codaio) by Mikhail Beliansky\n- [Go](https://github.com/artsafin/coda-schema-generator) by Artur Safin\n"
  termsOfService: https://coda.io/trust/tos
  contact:
    name: API Support
    url: https://coda.io
    email: help+api@coda.io
  x-logo:
    url: https://cdn.coda.io/external/img/apilogo.png
    backgroundColor: transparent
    altText: Coda API
    href: '#'
servers:
- url: https://coda.io/apis/v1
  description: Coda API (v1)
security:
- Bearer: []
tags:
- name: Docs
  description: 'Coda docs are foundational, top-level collaborative projects that contain pages. The API lets you list and search your docs to obtain basic metadata like titles and ownership information.

    '
paths:
  /docs:
    get:
      summary: List available docs
      description: 'Returns a list of Coda docs accessible by the user, and which they have opened at least once. These are returned in the same order as on the docs page: reverse chronological by the latest event relevant to the user (last viewed, edited, or shared).

        '
      operationId: listDocs
      tags:
      - Docs
      parameters:
      - name: isOwner
        in: query
        description: Show only docs owned by the user.
        schema:
          type: boolean
      - name: isPublished
        in: query
        description: Show only published docs.
        schema:
          type: boolean
      - $ref: '#/components/parameters/query'
      - name: sourceDoc
        in: query
        description: Show only docs copied from the specified doc ID.
        schema:
          type: string
      - name: isStarred
        in: query
        description: If true, returns docs that are starred. If false, returns docs that are not starred.
        schema:
          type: boolean
      - name: inGallery
        in: query
        description: Show only docs visible within the gallery.
        schema:
          type: boolean
      - name: workspaceId
        in: query
        description: Show only docs belonging to the given workspace.
        schema:
          type: string
      - name: folderId
        in: query
        description: Show only docs belonging to the given folder.
        schema:
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/pageToken'
      responses:
        '200':
          description: List of Coda docs matching the query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocList'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
      x-codeSamples:
      - label: Python 3.13
        lang: python
        source: "import requests\n\nheaders = {'Authorization': 'Bearer <your API token>'}\nuri = 'https://coda.io/apis/v1/docs'\nparams = {\n  'isOwner': True,\n  'query': 'New',\n}\nres = requests.get(uri, headers=headers, params=params).json()\n\nprint(f'First doc is: {res[\"items\"][0][\"name\"]}')\n# => First doc is: New Document\n"
      - label: Shell
        lang: shell
        source: "curl -s -H 'Authorization: Bearer <your API token>' \\\n  'https://coda.io/apis/v1/docs' |\n  jq .items[0].name\n# => \"New Document\"\n"
      - label: Google Apps Script
        lang: javascript
        source: '// Import the CodaAPI library via Resource->Libraries...:

          // 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl

          CodaAPI.authenticate(''<your API token>'');

          var docs = CodaAPI.listDocs().items;

          Logger.log(''First doc is '' + docs[0].name);

          // => First doc is: New Document

          '
    post:
      summary: Create doc
      description: 'Creates a new Coda doc, optionally copying an existing doc. Note that creating a doc requires you to be a Doc Maker in the applicable workspace (or be auto-promoted to one).

        '
      operationId: createDoc
      tags:
      - Docs
      requestBody:
        description: Parameters for creating the doc.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocCreate'
      responses:
        '201':
          description: Info about the created doc.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentCreationResult'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
      x-codeSamples:
      - label: Python 3.13
        lang: python
        source: "import requests\n\nheaders = {'Authorization': 'Bearer <your API token>'}\nuri = f'https://coda.io/apis/v1/docs'\npayload = {\n  'title': 'Project Tracker',\n}\nreq = requests.post(uri, headers=headers, json=payload)\nreq.raise_for_status() # Throw if there was an error.\nres = req.json()\n\nprint(f'New doc created with name \"{res[\"name\"]}\"')\n# => New doc created with name \"Project Tracker\"\n"
      - label: Shell
        lang: shell
        source: "curl -s -H 'Authorization: Bearer <your API token>' -X POST -H \"Content-Type: application/json\" \\\n  -d '{\"title\": \"Project Tracker\"}' \\\n  'https://coda.io/apis/v1/docs' |\n  jq .name\n# => \"Project Tracker\"\n"
      - label: Google Apps Script
        lang: javascript
        source: '// Import the CodaAPI library via Resource->Libraries...:

          // 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl

          CodaAPI.authenticate(''<your API token>'');

          var res = CodaAPI.createDoc({title: ''Project Tracker''});

          Logger.log(''New doc created with name '' + res.name);

          // => First doc in the results is: New Document

          '
  /docs/{docId}:
    get:
      summary: Get info about a doc
      description: Returns metadata for the specified doc.
      operationId: getDoc
      tags:
      - Docs
      parameters:
      - $ref: '#/components/parameters/docId'
      responses:
        '200':
          description: Basic Coda doc metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Doc'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
      x-codeSamples:
      - label: Python 3.13
        lang: python
        source: 'import requests


          headers = {''Authorization'': ''Bearer <your API token>''}

          uri = f''https://coda.io/apis/v1/docs/<doc ID>''

          res = requests.get(uri, headers=headers).json()


          print(f''The name of the doc is {res["name"]}'')

          # => The name of the doc is New Document

          '
      - label: Shell
        lang: shell
        source: "curl -s -H 'Authorization: Bearer <your API token>' \\\n  'https://coda.io/apis/v1/docs/<doc ID>' |\n  jq .name\n# => \"New Document\"\n"
      - label: Google Apps Script
        lang: javascript
        source: '// Import the CodaAPI library via Resource->Libraries...:

          // 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl

          CodaAPI.authenticate(''<your API token>'');

          var docInfo = CodaAPI.getDoc(''<doc ID>'');

          Logger.log(''The name of the doc is '' + docInfo.name);

          // => The name of the doc is New Document

          '
    delete:
      summary: Delete doc
      description: Deletes a doc.
      operationId: deleteDoc
      tags:
      - Docs
      parameters:
      - $ref: '#/components/parameters/docId'
      responses:
        '202':
          description: A result indicating that the doc was deleted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocDelete'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
      x-codeSamples:
      - label: Python 3.13
        lang: python
        source: 'import requests


          headers = {''Authorization'': ''Bearer <your API token>''}

          uri = f''https://coda.io/apis/v1/docs/<doc ID>''

          res = requests.delete(uri, headers=headers).json()

          '
      - label: Shell
        lang: shell
        source: "curl -s -X DELETE -H 'Authorization: Bearer <your API token>' \\\n  'https://coda.io/apis/v1/docs/<doc ID>' |\n"
      - label: Google Apps Script
        lang: javascript
        source: '// Import the CodaAPI library via Resource->Libraries...:

          // 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl

          CodaAPI.authenticate(''<your API token>'');

          var docInfo = CodaAPI.deleteDoc(''<doc ID>'');

          // => The given doc is now deleted

          '
    patch:
      summary: Update doc
      description: Updates metadata for a doc. Note that updating a doc title requires you to be a Doc Maker in the applicable workspace.
      operationId: updateDoc
      tags:
      - Docs
      parameters:
      - $ref: '#/components/parameters/docId'
      requestBody:
        description: Parameters for updating the doc.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocUpdate'
      responses:
        '200':
          description: Basic Coda doc metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocUpdateResult'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/TooManyRequestsError'
      x-codeSamples:
      - label: Python 3.13
        lang: python
        source: "import requests\n\nheaders = {'Authorization': 'Bearer <your API token>'}\nuri = f'https://coda.io/apis/v1/docs/<doc ID>'\npayload = {\n  'title': 'New Doc Title',\n}\nreq = requests.patch(uri, headers=headers, json=payload)\n"
      - label: Shell
        lang: shell
        source: "curl -s -H 'Authorization: Bearer <your API token>' -X PATCH -H \"Content-Type: application/json\" \\\n  -d '{\"title\": \"New Doc Title\"}' \\\n  'https://coda.io/apis/v1/docs/<doc ID>'\n"
      - label: Google Apps Script
        lang: javascript
        source: '// Import the CodaAPI library via Resource->Libraries...:

          // 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl

          CodaAPI.authenticate(''<your API token>'');

          CodaAPI.updateDoc(<doc ID>, {title: "New Doc Title"});

          '
components:
  schemas:
    PageContent:
      x-schema-name: PageContent
      description: 'Content to be added or replaced with in a page (canvas).

        '
      type: object
      additionalProperties: false
      required:
      - format
      - content
      properties:
        format:
          $ref: '#/components/schemas/PageContentFormat'
        content:
          type: string
          description: The actual page content.
          example: <p><b>This</b> is rich text</p>
    DocumentCreationResult:
      x-schema-name: Doc
      description: The result of a doc creation.
      type: object
      required:
      - id
      - type
      - href
      - browserLink
      - name
      - owner
      - ownerName
      - createdAt
      - updatedAt
      - workspace
      - folder
      - workspaceId
      - folderId
      additionalProperties: false
      properties:
        id:
          type: string
          description: ID of the Coda doc.
          example: AbCDeFGH
        type:
          type: string
          description: The type of this resource.
          enum:
          - doc
          x-tsType: Type.Doc
        href:
          type: string
          format: url
          description: API link to the Coda doc.
          example: https://coda.io/apis/v1/docs/AbCDeFGH
        browserLink:
          type: string
          format: url
          description: Browser-friendly link to the Coda doc.
          example: https://coda.io/d/_dAbCDeFGH
        icon:
          $ref: '#/components/schemas/Icon'
        name:
          type: string
          description: Name of the doc.
          example: Product Launch Hub
        owner:
          type: string
          format: email
          description: Email address of the doc owner.
          example: user@example.com
        ownerName:
          type: string
          description: Name of the doc owner.
          example: Some User
        docSize:
          $ref: '#/components/schemas/DocSize'
        sourceDoc:
          allOf:
          - type: object
            description: Reference to a Coda doc from which this doc was copied, if any.
            additionalProperties: false
          - $ref: '#/components/schemas/DocReference'
        createdAt:
          type: string
          format: date-time
          description: Timestamp for when the doc was created.
          example: '2018-04-11T00:18:57.946Z'
        updatedAt:
          type: string
          format: date-time
          description: Timestamp for when the doc was last modified.
          example: '2018-04-11T00:18:57.946Z'
        published:
          $ref: '#/components/schemas/DocPublished'
        folder:
          $ref: '#/components/schemas/FolderReference'
        workspace:
          $ref: '#/components/schemas/WorkspaceReference'
        workspaceId:
          type: string
          description: ID of the Coda workspace containing this doc.
          example: ws-1Ab234
          deprecated: true
        folderId:
          type: string
          description: ID of the Coda folder containing this doc.
          example: fl-1Ab234
          deprecated: true
        requestId:
          type: string
          description: An arbitrary unique identifier for this request.
          example: abc-123-def-456
    Doc:
      x-schema-name: Doc
      description: Metadata about a Coda doc.
      type: object
      required:
      - id
      - type
      - href
      - browserLink
      - name
      - owner
      - ownerName
      - createdAt
      - updatedAt
      - workspace
      - folder
      - workspaceId
      - folderId
      additionalProperties: false
      properties:
        id:
          type: string
          description: ID of the Coda doc.
          example: AbCDeFGH
        type:
          type: string
          description: The type of this resource.
          enum:
          - doc
          x-tsType: Type.Doc
        href:
          type: string
          format: url
          description: API link to the Coda doc.
          example: https://coda.io/apis/v1/docs/AbCDeFGH
        browserLink:
          type: string
          format: url
          description: Browser-friendly link to the Coda doc.
          example: https://coda.io/d/_dAbCDeFGH
        icon:
          $ref: '#/components/schemas/Icon'
        name:
          type: string
          description: Name of the doc.
          example: Product Launch Hub
        owner:
          type: string
          format: email
          description: Email address of the doc owner.
          example: user@example.com
        ownerName:
          type: string
          description: Name of the doc owner.
          example: Some User
        docSize:
          $ref: '#/components/schemas/DocSize'
        sourceDoc:
          allOf:
          - type: object
            description: Reference to a Coda doc from which this doc was copied, if any.
            additionalProperties: false
          - $ref: '#/components/schemas/DocReference'
        createdAt:
          type: string
          format: date-time
          description: Timestamp for when the doc was created.
          example: '2018-04-11T00:18:57.946Z'
        updatedAt:
          type: string
          format: date-time
          description: Timestamp for when the doc was last modified.
          example: '2018-04-11T00:18:57.946Z'
        published:
          $ref: '#/components/schemas/DocPublished'
        folder:
          $ref: '#/components/schemas/FolderReference'
        workspace:
          $ref: '#/components/schemas/WorkspaceReference'
        workspaceId:
          type: string
          description: ID of the Coda workspace containing this doc.
          example: ws-1Ab234
          deprecated: true
        folderId:
          type: string
          description: ID of the Coda folder containing this doc.
          example: fl-1Ab234
          deprecated: true
    PageContentFormat:
      x-schema-name: PageContentFormat
      description: Supported content types for page (canvas) content.
      type: string
      enum:
      - html
      - markdown
      x-tsEnumNames:
      - Html
      - Markdown
    WorkspaceReference:
      x-schema-name: WorkspaceReference
      description: Reference to a Coda workspace.
      type: object
      required:
      - id
      - type
      - browserLink
      additionalProperties: false
      properties:
        id:
          type: string
          description: ID of the Coda workspace.
          example: ws-1Ab234
        type:
          type: string
          description: The type of this resource.
          enum:
          - workspace
          x-tsType: Type.Workspace
        organizationId:
          type: string
          description: ID of the organization bound to this workspace, if any.
          example: org-2Bc456
        browserLink:
          type: string
          format: url
          description: Browser-friendly link to the Coda workspace.
          example: https://coda.io/docs?workspaceId=ws-1Ab234
        name:
          type: string
          description: Name of the workspace; included if the user has access to the workspace.
          example: My workspace
    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
    nextPageToken:
      description: If specified, an opaque token used to fetch the next page of results.
      type: string
      example: eyJsaW1pd
    DocPublishMode:
      x-schema-name: DocPublishMode
      description: Which interaction mode the published doc should use.
      type: string
      enum:
      - view
      - play
      - edit
      x-tsEnumNames:
      - View
      - Play
      - Edit
    DocUpdateResult:
      x-schema-name: DocUpdate
      description: The result of a doc update
      type: object
      additionalProperties: false
      properties: {}
    DocCategory:
      x-schema-name: DocCategory
      type: object
      description: The category applied to a doc.
      required:
      - name
      additionalProperties: false
      properties:
        name:
          type: string
          description: Name of the category.
          example: Project Management
    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
    DocPublished:
      x-schema-name: DocPublished
      description: Information about the publishing state of the document.
      type: object
      required:
      - browserLink
      - discoverable
      - earnCredit
      - mode
      - categories
      additionalProperties: false
      properties:
        description:
          type: string
          description: Description of the published doc.
          exampl

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/coda/refs/heads/main/openapi/coda-docs-api-openapi.yml