openapi: 3.0.0
info:
version: 1.5.0
title: Coda Account Rows 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}}\n
\nWriting data (POST/PUT/PATCH): {{WRITE_RATE_LIMIT}}\n
\nWriting doc content data (POST/PUT/PATCH): {{WRITE_DOC_CONTENT_RATE_LIMIT}}\n
\nListing docs: {{LIST_DOCS_RATE_LIMIT}}\n
\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\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\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 MunĚ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: Rows
description: 'You''ll likely use this part of the API the most. These endpoints let you retrieve row data from tables in Coda as well as create, upsert, update, and delete them. Most of these endpoints work for both base tables and views, but for inserting/upsering rows, you must use a base table.
'
paths:
/docs/{docId}/tables/{tableIdOrName}/rows:
get:
summary: List table rows
description: "Returns a list of rows in a table.\n### Value results\nThe `valueFormat` parameter dictates in what format the API should return values for individual cells.\n* `simple` (default): Returns cell values as the following JSON values: `string`, `number`, or `boolean`. Array values (like multiselects) are returned as comma-delimited strings.\n* `simpleWithArrays`: Singleton values are returned as `simple`. Array values are returned as JSON arrays and the values within are `simple` values (including nested arrays).\n* `rich`: If applicable, returns many values with further encoding, allowing API users to have lossless access to data in Coda.\n * For `text` values, returns data in Markdown syntax. If the text field is simple text (e.g. has no formatting),\n the field will be fully escaped with triple-ticks. E.g\n `\n ```This is plain text```\n `\n * For `currency`, `lookup`, `image`, `person` and `hyperlink` values, the value will be encoded in [JSON-LD](https://json-ld.org/) format.\n\n```\n // Currency\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"MonetaryAmount\",\n \"currency\": \"USD\",\n \"amount\": 42.42\n }\n\n // Lookup\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"StructuredValue\",\n \"additionalType\": \"row\",\n \"name\": \"Row Name\",\n \"rowId\": \"i-123456789\",\n \"tableId\": \"grid-123456789\",\n \"tableUrl\": \"https://coda.io/d/_d123456789/grid-123456789\",\n \"url\": \"https://coda.io/d/_d123456789/grid-123456789#_r42\",\n }\n\n // Hyperlink\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"WebPage\",\n \"name\": \"Coda\",\n \"url\": \"https://coda.io\"\n }\n\n // Image\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"ImageObject\",\n \"name\": \"Coda logo\",\n \"url\": \"https://coda.io/logo.jpg\"\n }\n\n // People\n {\n \"@context\": \"http://schema.org\",\n \"@type\": \"Person\",\n \"name\": \"Art Vandalay\",\n \"email\": \"art@vandalayindustries.com\"\n }\n```\n"
operationId: listRows
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- name: query
description: 'Query used to filter returned rows, specified as `:`. If you''d like to use a column name instead of an ID, you must quote it (e.g., `"My Column":123`). Also note that `value` is a JSON value; if you''d like to use a string, you must surround it in quotes (e.g., `"groceries"`).
'
in: query
example: c-tuVwxYz:"Apple"
schema:
type: string
- name: sortBy
in: query
description: 'Specifies the sort order of the rows returned. If left unspecified, rows are returned by creation time ascending. "UpdatedAt" sort ordering is the order of rows based upon when they were last updated. This does not include updates to calculated values. "Natural" sort ordering is the order that the rows appear in the table view in the application. This ordering is only meaningfully defined for rows that are visible (unfiltered). Because of this, using this sort order will imply visibleOnly=true, that is, to only return visible rows. If you pass sortBy=natural and visibleOnly=false explicitly, this will result in a Bad Request error as this condition cannot be satisfied.
'
schema:
$ref: '#/components/schemas/RowsSortBy'
- $ref: '#/components/parameters/useColumnNames'
- name: valueFormat
in: query
description: The format that cell values are returned as.
schema:
$ref: '#/components/schemas/ValueFormat'
- name: visibleOnly
description: If true, returns only visible rows and columns for the table.
in: query
example: true
schema:
type: boolean
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/pageToken'
- $ref: '#/components/parameters/syncToken'
responses:
'200':
description: List of rows in the table.
content:
application/json:
schema:
$ref: '#/components/schemas/RowList'
'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 '}\nuri = f'https://coda.io/apis/v1/docs//tables//rows'\nparams = {\n 'query': ':\"Work out\"',\n}\nreq = requests.get(uri, headers=headers, params=params)\nreq.raise_for_status() # Throw if there was an error.\nres = req.json()\n\nprint(f'Matching rows: {len(res[\"items\"])}')\n# => Matching rows: 1\n"
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' \\\n -G --data-urlencode 'query=:\"Work out\"' \\\n 'https://coda.io/apis/v1/docs//tables//rows' |\n jq '\"Matching rows: \" + (.items | length | tostring)'\n# => \"Matching rows: 1\"\n"
- label: Google Apps Script
lang: javascript
source: '// Import the CodaAPI library via Resource->Libraries...:
// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl
CodaAPI.authenticate('''');
var query = '':"Work out"'';
var rows = CodaAPI.listRows('''', '''', {query: query}).items;
Logger.log(''Matching rows: '' + rows.length);
// => Matching rows: 1
'
post:
summary: Insert/upsert rows
description: 'Inserts rows into a table, optionally updating existing rows if any upsert key columns are provided. This endpoint will always return a 202, so long as the doc and table exist and are accessible (and the update is structurally valid). Row inserts/upserts are generally processed within several seconds. Note: this endpoint only works for base tables, not views.
When upserting, if multiple rows match the specified key column(s), they will all be updated with the specified value.
'
operationId: upsertRows
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- name: disableParsing
description: If true, the API will not attempt to parse the data in any way.
in: query
example: true
schema:
type: boolean
requestBody:
description: Rows to insert or upsert.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RowsUpsert'
responses:
'202':
description: A result indicating that the upsert was queued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/RowsUpsertResult'
'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 '}\nuri = f'https://coda.io/apis/v1/docs//tables//rows'\npayload = {\n 'rows': [\n {\n 'cells': [\n {'column': '', 'value': 'Feed Baker'},\n ],\n },\n ],\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'Inserted 1 row')\n# => Inserted 1 row\n"
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' -X POST -H \"Content-Type: application/json\" \\\n -d '{\"rows\": [{\"cells\": [{\"column\": \"\", \"value\": \"Feed Baker\"}]}]}' \\\n 'https://coda.io/apis/v1/docs//tables//rows' |\n jq 'if .statusMessage? == null then \"Inserted 1 row\" else . end'\n# => \"Inserted 1 row\"\n"
- label: Google Apps Script
lang: javascript
source: "// Import the CodaAPI library via Resource->Libraries...:\n// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl\nCodaAPI.authenticate('');\nvar body = {\n 'rows': [\n {\n 'cells': [\n {'column': '', 'value': 'Feed Baker'},\n ],\n },\n ],\n};\nCodaAPI.upsertRows('', '', body);\nLogger.log('Inserted 1 row');\n// => Inserted 1 row\n"
delete:
summary: Delete multiple rows
description: 'Deletes the specified rows from the table or view. This endpoint will always return a 202. Row deletions are generally processed within several seconds.
'
operationId: deleteRows
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
requestBody:
description: Rows to delete.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RowsDelete'
responses:
'202':
description: A result indicating that the delete was queued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/RowsDeleteResult'
'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 '}\nuri = f'https://coda.io/apis/v1/docs//tables//rows'\npayload = {\n 'rowIds': ['i-aBcDeFgH', 'i-AbCdEfGh'],\n}\nreq = requests.delete(uri, headers=headers, json=payload)\nreq.raise_for_status() # Throw if there was an error.\nres = req.json()\n\nprint(f'Deleted 2 rows')\n# => Deleted 2 rows\n"
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' -X DELETE -H \"Content-Type: application/json\" \\\n -d '{\"rowIds\": ['i-aBcDeFgH', 'i-AbCdEfGh']}' \\\n 'https://coda.io/apis/v1/docs//tables//rows' |\n jq 'if .statusMessage? == null then \"Deleted 2 rows\" else . end'\n# => \"Deleted 2 rows\"\n"
- label: Google Apps Script
lang: javascript
source: "// Import the CodaAPI library via Resource->Libraries...:\n// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl\nCodaAPI.authenticate('');\nvar body = {\n 'rowIds': ['i-aBcDeFgH', 'i-AbCdEfGh'],\n};\nCodaAPI.deleteRows('', '', body);\nLogger.log('Deleted 2 rows');\n// => Deleted 2 rows\n"
/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}:
get:
summary: Get a row
description: Returns details about a row in a table.
operationId: getRow
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- $ref: '#/components/parameters/rowIdOrName'
- $ref: '#/components/parameters/useColumnNames'
- name: valueFormat
in: query
description: The format that cell values are returned as.
schema:
$ref: '#/components/schemas/ValueFormat'
responses:
'200':
description: 'Info about a row. If this row was retrieved by name, only one matching row will be returned, with no guarantees as to which one it is.
'
content:
application/json:
schema:
$ref: '#/components/schemas/RowDetail'
'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 ''}
uri = f''https://coda.io/apis/v1/docs//tables//rows/''
req = requests.get(uri, headers=headers)
req.raise_for_status() # Throw if there was an error.
res = req.json()
print(f''Row values are: {", ".join(str(v) for v in res["values"].values())}'')
# => Row values are: Get groceries, 1, 60
'
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' \\\n 'https://coda.io/apis/v1/docs//tables//rows/' |\n jq '.values | map(tostring) | join(\", \")'\n# => \"Get groceries, 1, 60\"\n"
- label: Google Apps Script
lang: javascript
source: '// Import the CodaAPI library via Resource->Libraries...:
// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl
CodaAPI.authenticate('''');
var row = CodaAPI.getRow('''', '''', '''');
var values = Object.keys(row.values).map(function(colId) { return row.values[colId]; });
Logger.log(''Row values are: '' + values.join('', ''));
// => Row values are: Get groceries, 1, 60
'
put:
summary: Update row
description: 'Updates the specified row in the table. This endpoint will always return a 202, so long as the row exists and is accessible (and the update is structurally valid). Row updates are generally processed within several seconds. When updating using a name as opposed to an ID, an arbitrary row will be affected.
'
operationId: updateRow
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- $ref: '#/components/parameters/rowIdOrName'
- name: disableParsing
description: If true, the API will not attempt to parse the data in any way.
in: query
example: true
schema:
type: boolean
requestBody:
description: Row update.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RowUpdate'
responses:
'202':
description: A result indicating that the update was queued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/RowUpdateResult'
'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 '}\nuri = f'https://coda.io/apis/v1/docs//tables//rows/'\npayload = {\n 'row': {\n 'cells': [\n {'column': '', 'value': 'Get groceries from Whole Foods'},\n ],\n },\n}\nreq = requests.put(uri, headers=headers, json=payload)\nreq.raise_for_status() # Throw if there was an error.\nres = req.json()\n\nprint(f'Updated row {res[\"id\"]}')\n# => Updated row \n"
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' -X PUT -H \"Content-Type: application/json\" \\\n -d '{\"row\": {\"cells\": [{\"column\": \"\", \"value\": \"Get groceries from Whole Foods\"}]}}' \\\n 'https://coda.io/apis/v1/docs//tables//rows/' |\n jq '\"Updated row \" + .id'\n# => \"Updated row \"\n"
- label: Google Apps Script
lang: javascript
source: "// Import the CodaAPI library via Resource->Libraries...:\n// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl\nCodaAPI.authenticate('');\nvar body = {\n row: {\n cells: [\n {'column': '', 'value': 'Get groceries from Whole Foods'},\n ],\n },\n};\nvar row = CodaAPI.updateRow('', '', '', body);\nLogger.log('Updated row ' + row.id);\n// => Updated row \n"
delete:
summary: Delete row
description: 'Deletes the specified row from the table or view. This endpoint will always return a 202, so long as the row exists and is accessible (and the update is structurally valid). Row deletions are generally processed within several seconds. When deleting using a name as opposed to an ID, an arbitrary row will be removed.
'
operationId: deleteRow
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- $ref: '#/components/parameters/rowIdOrName'
responses:
'202':
description: A result indicating that the deletion was queued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/RowDeleteResult'
'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 ''}
uri = f''https://coda.io/apis/v1/docs//tables//rows/''
req = requests.delete(uri, headers=headers)
req.raise_for_status() # Throw if there was an error.
res = req.json()
print(f''Deleted row {res["id"]}'')
# => Deleted row
'
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' -X DELETE \\\n 'https://coda.io/apis/v1/docs//tables//rows/' |\n jq '\"Deleted row \" + .id'\n# => \"Deleted row \"\n"
- label: Google Apps Script
lang: javascript
source: '// Import the CodaAPI library via Resource->Libraries...:
// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl
CodaAPI.authenticate('''');
var row = CodaAPI.deleteRow('''', '''', '''');
Logger.log(''Deleted row '' + row.id);
// => Deleted row
'
/docs/{docId}/tables/{tableIdOrName}/rows/{rowIdOrName}/buttons/{columnIdOrName}:
post:
summary: Push a button
description: 'Pushes a button on a row in a table.
Authorization note: This action is available to API tokens that are authorized to write to the table. However, the underlying button can perform any action on the document, including writing to other tables and performing Pack actions.
'
operationId: pushButton
tags:
- Rows
parameters:
- $ref: '#/components/parameters/docId'
- $ref: '#/components/parameters/tableIdOrName'
- $ref: '#/components/parameters/rowIdOrName'
- $ref: '#/components/parameters/columnIdOrName'
responses:
'202':
description: A result indicating that the push button action was queued for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/PushButtonResult'
'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
headers = {''Authorization'': ''Bearer ''}
uri = f''https://coda.io/apis/v1/docs//tables//rows//buttons/''
req = requests.post(uri, headers=headers)
req.raise_for_status() # Throw if there was an error.
res = req.json()
print(f''Pushed button'')
# => Pushed button
'
- label: Shell
lang: shell
source: "curl -s -H 'Authorization: Bearer ' -X POST \\\n 'https://coda.io/apis/v1/docs//tables//rows//buttons/' |\n jq 'if .statusMessage? == null then \"Pushed button\" else . end'\n # => Pushed button\n"
- label: Google Apps Script
lang: javascript
source: '// Import the CodaAPI library via Resource->Libraries...:
// 15IQuWOk8MqT50FDWomh57UqWGH23gjsWVWYFms3ton6L-UHmefYHS9Vl
CodaAPI.authenticate('''');
CodaAPI.pushButton('''', '''', '''', '''');
Logger.log(''Pushed button'');
// => Pushed button
'
components:
schemas:
CurrencyAmount:
x-schema-name: CurrencyAmount
description: A numeric monetary amount as a string or number.
oneOf:
- type: string
example: '12.99'
- type: number
example: 42
Value:
x-schema-name: Value
description: A Coda result or entity expressed as a primitive type, or array of primitive types.
additionalProperties: false
oneOf:
- $ref: '#/components/schemas/ScalarValue'
- type: array
items:
oneOf:
- $ref: '#/components/schemas/ScalarValue'
- type: array
items:
$ref: '#/components/schemas/ScalarValue'
ImageStatus:
x-schema-name: ImageStatus
description: The status values that an image object can have.
type: string
enum:
- live
- deleted
- failed
x-tsEnumNames:
- Live
- Deleted
- Failed
RowsDelete:
x-schema-name: RowsDelete
description: Payload for deleting rows from a table.
type: object
required:
- rowIds
additionalProperties: false
properties:
rowIds:
description: 'Row IDs to delete.
'
example:
- i-bCdeFgh
- i-CdEfgHi
type: array
items:
type: string
RowsUpsertResult:
x-schema-name: RowsUpsertResult
description: The result of a rows insert/upsert operation.
allOf:
- $ref: '#/components/schemas/DocumentMutateResponse'
- type: object
additionalProperties: false
properties:
addedRowIds:
description: Row IDs for rows that will be added. Only applicable when keyColumns is not set or empty.
example:
- i-bCdeFgh
- i-CdEfgHi
type: array
items:
type: string
RowUpdateResult:
x-schema-name: RowUpdateResult
description: The result of a row update.
allOf:
- $ref: '#/components/schemas/DocumentMutateResponse'
- type: object
required:
- id
additionalProperties: false
properties:
id:
type: string
description: ID of the updated row.
example: i-tuVwxYz
RowsUpsert:
x-schema-name: RowsUpsert
description: Payload for upserting rows in a table.
type: object
required:
- rows
additionalProperties: false
properties:
rows:
type: array
items:
$ref: '#/components/schemas/RowEdit'
keyColumns:
description: Optional column IDs, URLs, or names (fragile and discouraged), specifying columns to be used as upsert keys.
example:
- c-bCdeFgh
type: array
items:
type: string
RichSingleValue:
x-schema-name: RichSingleValue
description: 'A value that contains rich structured data. Cell values are composed of these values or arrays of these values.
'
oneOf:
- $ref: '#/components/schemas/ScalarValue'
- $ref: '#/components/schemas/CurrencyValue'
- $ref: '#/components/schemas/ImageUrlValue'
- $ref: '#/components/schemas/PersonValue'
- $ref: '#/components/schemas/UrlValue'
- $ref: '#/components/schemas/RowValue'
discriminator:
propertyName: '@type'
UrlValue:
x-schema-name: UrlValue
description: A named hyperlink to an arbitrary url.
allOf:
- $ref: '#/components/schemas/LinkedDataObject'
- type: object
additionalProperties: false
required:
- '@type'
- url
properties:
'@type':
type: string
enum:
- WebPage
x-tsType: LinkedDataType.WebPage
name:
type: string
description: The user-visible text of the hyperlink.
example: Click me
url:
type: string
description: The url of the hyperlink.
example: https://coda.io
RowEdit:
x-schema-name: RowEdit
description: An edit made to a particular row.
type: object
required:
- cells
additionalProperties: false
properties:
cells:
type: array
items:
$ref: '#/components/schemas/CellEdit'
CurrencyValue:
x-schema-name: CurrencyValue
description: A monetary value with its associated currency code.
allOf:
- $ref: '#/components/schemas/LinkedDataObject'
- type: object
additionalProperties: false
required:
- '@type'
- currency
- amount
properties:
'@type':
type: string
enum:
- MonetaryAmount
x-tsType: LinkedDataType.MonetaryAmount
currency:
type: string
description: The 3-letter currency code.
example: USD
amount:
$ref: '#/components/schemas/CurrencyAmount'
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
nextPageToken:
description: If specified, an opaque token used to fetch the next page of results.
type: string
example: eyJsaW1pd
TableType:
x-schema-name: TableType
type: string
enum:
- table
- view
x-tsEnumNames:
- Table
- View
RowsDeleteResult:
x-schema-name: RowsDeleteResult
description: The result of a rows delete operation.
allOf:
- $ref: '#/components/schemas/DocumentMutateResponse'
- type: object
required:
- rowIds
additionalProperties: false
properties:
rowIds:
description: Row IDs to delete.
example:
- i-bCdeFgh
- i-CdEfgHi
type: array
items:
type: string
RowDeleteResult:
x-schema-name: RowDeleteResult
description: The result of a row deletion.
allOf:
- $ref: '#/components/schemas/DocumentMutateResponse'
- type: object
required:
- id
additionalProperties: false
properties:
id:
type: string
description: ID of the row to be deleted.
example: i-tuVwxYz
RowUpdate:
x-schema-name: RowUpdate
description: Payload for updating a row in a table.
type: object
required:
- row
additionalProperties: false
properties:
row:
$ref: '#/components/schemas/RowEdit'
PushButtonResult:
x-schema-name: PushButtonResult
description: The result of a push button.
allOf:
- $ref: '#/components/schemas/DocumentMutateResponse'
- type: object
required:
- rowId
- columnId
additionalProperties: false
properties:
rowId:
type: string
description: ID of the row where the button exists.
example: i-tuVwxYz
columnId:
type: string
description: ID of the column where the button exists.
example: i-tuVwxYz
ImageUrlValue:
x-schema-name: ImageUrlValue
description: A named url of an image along with metadata.
allOf:
- $ref: '#/components/schemas/LinkedDataObject'
- type: object
additionalProperties: false
required:
- '@type'
properties:
'@type':
type: string
enum:
- ImageObject
x-tsType: LinkedDataType.ImageObject
name:
type: string
description: The name of the image.
example: Dogs Playing Poker
url:
type: string
description: The url of the image.
example: https://example.com/dogs-playing-poker.jpg
height:
type: number
description: The height of the image in pixels.
example: 480
width:
type: number
description: The width of the image in pixels.
example: 640
status:
$ref: '#/components/schemas/ImageStatus'
RowValue:
x-schema-name: RowValue
description: A value representing a Coda row.
allOf:
- $ref: '#/components/schemas/LinkedDataObject'
- type: object
additionalProperties: false
required:
- '@type'
- name
- url
- tableId
- tableUrl
- rowId
- additionalType
properties:
'@type':
type: string
enum:
- StructuredValue
x-tsType: LinkedDataType.StructuredValue
name:
type: string
description: The display name of the row, based on its identifying column.
example: Apple
url:
type: string
description: The url of the row.
example: https://coda.io/d/_dAbCDeFGH#Teams-and-Tasks_tpqRst-U/_rui-tuVwxYz
tableId:
type: string
description: The ID of the table
example: grid-pqRst-U
rowId:
type: string
description: The ID of the table
example: i-tuVwxYz
tableUrl:
type: string
description: The url of the table.
example: https://coda.io/d/_dAbCDeFGH#Teams-and-Tasks_tpqRst-U
additionalType:
type: string
description: The type of this resource.
enum:
- row
x-tsType: Type.Row
ScalarValue:
x-schema-name: ScalarValue
description: A Coda result or entity expressed as a primitive type.
oneOf:
- type: string
example: $12.34
- type: number
example: 12.34
- type: boolean
example: true
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
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
TableReference:
x-schema-name: TableReference
description: Reference to a table or view.
type: object
required:
- id
- type
- tableType
- browserLink
- href
- name
additionalProperties: false
properties:
id:
type: string
description: ID of the table.
example: grid-pqRst-U
type:
type: string
description: The type of this resource.
enum:
- table
x-tsType: Type.Table
tableType:
$ref: '#/components/schemas/TableType'
href:
type: string
format: url
description: API link to the table.
example: https://coda.io/apis/v1/docs/AbCDeFGH/tables/grid-pqRst-U
browserLink:
type: string
format: url
description: Browser-friendly link to the table.
example: https://coda.io/d/_dAbCDeFGH/#Teams-and-Tasks_tpqRst-U
name:
type: string
description: Name of the table.
example: Tasks
parent:
$ref: '#/components/schemas/PageReference'
RichValue:
x-schema-name: RichValue
description: A cell value that contains rich structured data.
oneOf:
- $ref: '#/components/schemas/RichSingleValue'
- type: array
items:
oneOf:
- $ref: '#/components/schemas/RichSingleValue'
- type: array
items:
$ref: '#/components/schemas/RichSingleValue'
RowsSortBy:
x-schema-name: RowsSortBy
description: Determines how the rows returned are sorted
type: string
enum:
- createdAt
- natural
- updatedAt
x-tsEnumNames:
- CreatedAt
- Natural
- UpdatedAt
CellValue:
x-schema-name: CellValue
description: All values that a row cell can contain.
oneOf:
- $ref: '#/components/schemas/Value'
- $ref: '#/components/schemas/RichValue'
ValueFormat:
x-schema-name: ValueFormat
description: The format that cell values are returned as.
type: string
enum:
- simple
- simpleWithArrays
- rich
x-tsEnumNames:
- Simple
- SimpleWithArrays
- Rich
RowList:
x-schema-name: RowList
description: List of rows.
type: object
required:
- items
additionalProperties: false
properties:
items:
type: array
items:
$ref: '#/components/schemas/Row'
href:
type: string
format: url
description: API link to these results
example: https://coda.io/apis/v1/docs/AbCDeFGH/tables/grid-pqRst-U/rows?limit=20
nextPageToken:
$ref: '#/components/schemas/nextPageToken'
nextPageLink:
allOf:
- $ref: '#/components/schemas/nextPageLink'
- type: string
example: https://coda.io/apis/v1/docs/AbCDeFGH/tables/grid-pqRst-U/rows?pageToken=eyJsaW1pd
nextSyncToken:
$ref: '#/components/schemas/nextSyncToken'
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
Row:
x-schema-name: Row
description: Info about a row.
type: object
required:
- id
- type
- href
- name
- index
- browserLink
- createdAt
- updatedAt
- values
additionalProperties: false
properties:
id:
type: string
description: ID of the row.
example: i-tuVwxYz
type:
type: string
description: The type of this resource.
enum:
- row
x-tsType: Type.Row
href:
type: string
format: url
description: API link to the row.
example: https://coda.io/apis/v1/docs/AbCDeFGH/tables/grid-pqRst-U/rows/i-RstUv-W
name:
type: string
description: The display name of the row, based on its identifying column.
example: Apple
index:
type: integer
description: Index of the row within the table.
example: 7
browserLink:
type: string
format: url
description: Browser-friendly link to the row.
example: https://coda.io/d/_dAbCDeFGH#Teams-and-Tasks_tpqRst-U/_rui-tuVwxYz
createdAt:
type: string
format: date-time
description: Timestamp for when the row was created.
example: '2018-04-11T00:18:57.946Z'
updatedAt:
type: string
format: date-time
description: Timestamp for when the row was last modified.
example: '2018-04-11T00:18:57.946Z'
values:
type: object
description: 'Values for a specific row, represented as a hash of column IDs (or names with `useColumnNames`) to values.
'
additionalProperties:
$ref: '#/components/schemas/CellValue'
example:
c-tuVwxYz: Apple
c-bCdeFgh:
- $12.34
- $56.78
nextSyncToken:
description: 'If specified, an opaque token that can be passed back later to retrieve new results that match the parameters specified when the sync token was created.
'
type: string
example: eyJsaW1pd
CellEdit:
x-schema-name: CellEdit
description: An edit made to a particular cell in a row.
type: object
required:
- column
- value
additionalProperties: false
properties:
column:
type: string
description: Column ID, URL, or name (fragile and discouraged) associated with this edit.
example: c-tuVwxYz
value:
$ref: '#/components/schemas/Value'
RowDetail:
x-schema-name: RowDetail
description: Details about a row.
type: object
required:
- id
- type
- href
- name
- index
- browserLink
- createdAt
- updatedAt
- values
- parent
additionalProperties: false
properties:
id:
type: string
description: ID of the row.
example: i-tuVwxYz
type:
type: string
description: The type of this resource.
enum:
- row
x-tsType: Type.Row
href:
type: string
format: url
description: API link to the row.
example: https://coda.io/apis/v1/docs/AbCDeFGH/tables/grid-pqRst-U/rows/i-RstUv-W
name:
type: string
description: The display name of the row, based on its identifying column.
example: Apple
index:
type: integer
description: Index of the row within the table.
example: 7
browserLink:
type: string
format: url
description: Browser-friendly link to the row.
example: https://coda.io/d/_dAbCDeFGH#Teams-and-Tasks_tpqRst-U/_rui-tuVwxYz
createdAt:
type: string
format: date-time
description: Timestamp for when the row was created.
example: '2018-04-11T00:18:57.946Z'
updatedAt:
type: string
format: date-time
description: Timestamp for when the row was last modified.
example: '2018-04-11T00:18:57.946Z'
values:
type: object
description: 'Values for a specific row, represented as a hash of column IDs (or names with `useColumnNames`) to values.
'
additionalProperties:
$ref: '#/components/schemas/CellValue'
example:
c-tuVwxYz: Apple
c-bCdeFgh:
- $12.34
- $56.78
parent:
$ref: '#/components/schemas/TableReference'
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
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
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
parameters:
useColumnNames:
name: useColumnNames
description: 'Use column names instead of column IDs in the returned output. This is generally discouraged as it is fragile. If columns are renamed, code using original names may throw errors.
'
in: query
example: true
schema:
type: boolean
docId:
name: docId
description: ID of the doc.
in: path
required: true
example: AbCDeFGH
schema:
type: string
tableIdOrName:
name: tableIdOrName
description: ID or name of the table. 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.
x-sdk-description: ID or name of the table. Names are discouraged because they're easily prone to being changed by users.
in: path
required: true
example: grid-pqRst-U
schema:
type: string
rowIdOrName:
name: rowIdOrName
description: 'ID or name of the row. 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 there are multiple rows with the same value in the identifying column, an arbitrary one will be selected.
'
x-sdk-description: 'ID or name of the row. Names are discouraged because they''re easily prone to being changed by users. Note that if there are multiple rows with the same value in the identifying column, an arbitrary one will be returned.
'
in: path
required: true
example: i-tuVwxYz
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
columnIdOrName:
name: columnIdOrName
description: ID or name of the column. 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.
x-sdk-description: ID or name of the column. Names are discouraged because they're easily prone to being changed by users.
in: path
required: true
example: c-tuVwxYz
schema:
type: string
syncToken:
name: syncToken
description: 'An opaque token returned from a previous call that can be used to return results that are relevant to the query since the call where the syncToken was generated.
'
in: query
example: eyJsaW1pd
schema:
type: string
pageToken:
name: pageToken
description: An opaque token used to fetch the next page of results.
in: query
example: eyJsaW1pd
schema:
type: string
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 ```\n\nKeep your token safe, as anyone who gets access to it can access your account. Once a token is created\nit cannot be viewed or modified, so don't lose it.\n\nIf you're logged into Coda, you can also query the API directly using your browser. Note that only GET\nendpoints are supported; for anything else, you'll have to use Bearer authentication.\n\n### Restricting token authorization\n\nBy default, bearer tokens created for the Coda API can perform any action that the user who created the token\ncan perform. However, Coda API bearer tokens can also be created with restrictions. These restrictions\ncan limit what objects can be operated on and the types of operations that can be performed.\n\n#### Operation types\n\nThe table below describes the types of authorization restrictions that can be placed on a Coda API token.\n\n | Restriction | Description | Allowed HTTP Methods |
\n \n | Read access | \n Allows access to API methods that read the state of an object | \n GET | \n
\n \n | Write access | \n Allows access to API methods that write the state of an object | \n POST, PUT, DELETE | \n
\n \n | Read and write access | \n Allows access to all methods for an object | \n All | \n
\n
\n\n#### Object types\n\nCoda API tokens can be restricted to the following types of objects.\n\n* Documents: Restricts access to only allow API calls for `/docs/${DOC_ID}`\n* Tables: Restricts access to only allow API calls for `/docs/${DOC_ID}/tables/${TABLE_ID}`\n\n#### Special cases\n\nThere are a few special case methods that violate the above restrictions.\n\n* `/whoami`: This method can be called by all Coda API tokens.\n* `/resolveBrowserLink`: This method can be called by all Coda API tokens, but will only return a result\nif the token has access (read or write) to the object referenced by the URL.\n\n#### Feedback\n\nThis feature is under development and we'd love to hear your feedback and bug reports. Please\nvisit us at the [Developers Central](https://connect.superhuman.com/c/developers-central) forum within\nthe Coda Community.\n"
type: http
scheme: bearer
bearerFormat: UUID
x-tagGroups:
- name: Folders
tags:
- Folders
- name: Docs
tags:
- Docs
- Permissions
- Publishing
- name: Doc Structure
tags:
- Pages
- Automations
- name: Tables and Views
tags:
- Tables
- Columns
- Rows
- name: Formulas & Controls
tags:
- Formulas
- Controls
- name: Miscellaneous
tags:
- Account
- Analytics
- Miscellaneous