Skip to main content
The base URL is https://api.chaintable.com. See Authentication for credential setup and API calls for response conventions, error handling, and CU consumption.

Credential access

A Personal Access Token can access every OpenAPI endpoint on this page, subject to the user’s resource permissions. Access Keys serve production applications and services making calls at scale. They support only the following endpoints, subject to the owning account’s resource permissions: A Personal Access Token requires X-Account-ID. An Access Key uses its owning account; if this header is supplied, it must match. Send GET parameters in the query string and POST parameters in a JSON body. For nested fields, “Required” applies when the containing object is supplied. Optional fields accept null only when their type includes it. Return fields describe data; conditional related fields appear only when requested or applicable. IDs and results in examples are illustrative; replace them with your own resources. Credentials are read from environment variables. Expand an object or array to see its fields. object[] denotes an array of objects.

Endpoints

space

id is a Space ID. Returns data: null if it does not exist.Method: GET
Path: /v1/space
ParametersReturnsdata is null if the object does not exist.Request
Result
List visible Spaces.Method: GET
Path: /v1/space/list
ParametersReturnsRequest
Result

table

Row-reading endpoints represent 64-bit integers, UINT256, and DECIMAL values as strings to preserve precision. See Data types.
Use the full table ID. Leave is_l1=false for the main definition; use true to read a derived data table.Method: GET
Path: /v1/table
ParametersReturnsRequest
Result
Replaces the column definitions. Include existing columns you want to retain. Existing types cannot change, and columns referenced by indexes cannot be removed.Method: POST
Path: /v1/table/columns/update
ParametersReturnsRequest
Result
Validate a column name.Method: POST
Path: /v1/table/columns/validate
ParametersReturnsRequest
Result
The table ID is formed from space.name and must not exceed 64 characters. Block table names need the matching chain suffix; chain_id uses an identifier such as eth.Method: POST
Path: /v1/table/create
ParametersReturnsRequest
Result
List primary key types.Method: GET
Path: /v1/table/id_types
ParametersNo request parameters.ReturnsRequest
Result
Replaces indexes as a whole; include existing indexes you want to retain.Method: POST
Path: /v1/table/indexes/update
ParametersReturnsRequest
Result
Initializes the table schema. Normal tables require an id column. Column IDs and names must be unique. Time tables have fixed columns; block tables retain their system columns.Method: POST
Path: /v1/table/init
ParametersReturnsRequest
Result
access selects read or write activity. Returns instances visible to the caller.Method: GET
Path: /v1/table/instance/list
ParametersReturnsRequest
Result
List tables.Method: GET
Path: /v1/table/list
ParametersReturnsRequest
Result
Writes a row to an initialized Normal table, updating it if its primary key already exists. Include the primary key id in data and use values matching the table schema.Method: POST
Path: /v1/table/row/create
ParametersReturnsRequest
Result
Supports Normal tables. id is the primary key of the row to delete.Method: POST
Path: /v1/table/row/delete
ParametersReturnsRequest
Result
pks is an array of primary key strings with up to 10,000 entries.Method: POST
Path: /v1/table/row/get
ParametersReturnsRequest
Result
Reads a page of rows. filter is a JSON-encoded array of conditions with field (column name), op (eq, neq, gt, lt, gte, lte), and value (string, number, boolean, or null). Conditions are combined with AND; null supports only eq and neq.Method: GET
Path: /v1/table/row/list
ParametersReturnsRequest
Result
Runs one SELECT * statement against the specified table, with WHERE, ORDER BY, and LIMIT. Returns up to 10,000 rows. Use Query endpoints for aggregation and joins.Method: POST
Path: /v1/table/row/query
ParametersReturnsRequest
Result
Supports Normal tables. If supplied, data.id must match the top-level id.Method: POST
Path: /v1/table/row/update
ParametersReturnsRequest
Result
Check whether the start height can change.Method: GET
Path: /v1/table/start_height/editable
ParametersReturnsRequest
Result
Requires an initialized block table with no processed blocks. The start height cannot exceed the current chain height. Check /v1/table/start_height/editable first.Method: POST
Path: /v1/table/start_height/update
ParametersReturnsRequest
Result
recent is the number of recent blocks. Returned lag values are in milliseconds.Method: GET
Path: /v1/table/stats/block
ParametersReturnsRequest
Result
Use year, or supply both from and to in YYYY-MM-DD format.Method: GET
Path: /v1/table/stats/daily
ParametersReturnsRequest
Result
Get per-minute write statistics.Method: GET
Path: /v1/table/stats/minute
ParametersReturnsRequest
Result
Get a table template.Method: GET
Path: /v1/table/templates
ParametersReturnsRequest
Result
Update table display settings.Method: POST
Path: /v1/table/view/update
ParametersReturnsRequest
Result

function

Get a Function.Method: GET
Path: /v1/function
ParametersReturnsRequest
Result
Create a Function.Method: POST
Path: /v1/function/create
ParametersReturnsRequest
Result
Delete a Function.Method: POST
Path: /v1/function/delete
ParametersReturnsRequest
Result
Executes a saved Function. Pass positional values in arguments, or [] for no arguments.Method: POST
Path: /v1/function/invoke
ParametersReturnsRequest
Result
List Functions.Method: GET
Path: /v1/function/list
ParametersReturnsRequest
Result
Executes inline code and returns a debugging record. status indicates the execution outcome; output contains debug output and error details.Method: POST
Path: /v1/function/run
ParametersReturnsRequest
Result
Get a test case.Method: GET
Path: /v1/function/testcase
ParametersReturnsRequest
Result
arguments is an array of JSON values. Duplicate arguments for the same Function return 409.Method: POST
Path: /v1/function/testcase/create
ParametersReturnsRequest
Result
Delete a test case.Method: POST
Path: /v1/function/testcase/delete
ParametersReturnsRequest
Result
List test cases.Method: GET
Path: /v1/function/testcase/list
ParametersReturnsRequest
Result
Replaces arguments as a whole. The owning Function cannot change.Method: POST
Path: /v1/function/testcase/update
ParametersReturnsRequest
Result
Updates the Function definition, preserving omitted fields. Renaming does not change the Function ID. Parameter definitions are replaced as a whole.Method: POST
Path: /v1/function/update
ParametersReturnsRequest
Result

notebook

Get a Notebook.Method: GET
Path: /v1/notebook
ParametersReturnsRequest
Result
Creates a Notebook. Names start with a lowercase letter and use lowercase letters, digits, and underscores, with dots separating valid segments.Method: POST
Path: /v1/notebook/create
ParametersReturnsRequest
Result
Delete a Notebook.Method: POST
Path: /v1/notebook/delete
ParametersReturnsRequest
Result
Get an instance.Method: GET
Path: /v1/notebook/instance
ParametersReturnsRequest
Result
Cancel an instance.Method: POST
Path: /v1/notebook/instance/cancel
ParametersReturnsRequest
Result
Extends a foreground instance expiry to 150 seconds from now. Background or finished instances are unaffected.Method: POST
Path: /v1/notebook/instance/keepalive
ParametersReturnsRequest
Result
Lists instances for the calling account, excluding code. The effective limit is capped at 50. keyword takes precedence over name and matches the instance name or the launcher’s personal account slug.Method: GET
Path: /v1/notebook/instance/list
ParametersReturnsRequest
Result
Use the returned timestamp to continue reading subsequent logs.Method: GET
Path: /v1/notebook/instance/logs/history
ParametersReturnsRequest
Result
Get compute task metrics.Method: GET
Path: /v1/notebook/instance/metrics/blockx
ParametersReturnsRequest
Result
Get CPU and memory metrics.Method: GET
Path: /v1/notebook/instance/metrics/container
ParametersReturnsRequest
Result
Pass background: true. An instance cannot be moved back to the foreground.Method: POST
Path: /v1/notebook/instance/set_background
ParametersReturnsRequest
Result
List available compute specifications.Method: GET
Path: /v1/notebook/instance/specs
ParametersNo request parameters.ReturnsRequest
Result
List Notebooks.Method: GET
Path: /v1/notebook/list
ParametersReturnsRequest
Result
Starts an asynchronous instance. Supply a saved Notebook id or inline code. When both are supplied, the inline code and parameter definitions take precedence. Use a compute specification pair returned by /v1/notebook/instance/specs.Method: POST
Path: /v1/notebook/run
ParametersReturnsRequest
Result
Updates a Notebook, preserving omitted fields and replacing parameter definitions as a whole. Names follow the same rules as creation.Method: POST
Path: /v1/notebook/update
ParametersReturnsRequest
Result

query

Get a Query.Method: GET
Path: /v1/query
ParametersReturnsRequest
Result
Creates a Query with a caller-supplied unique id and a default table visualization.Method: POST
Path: /v1/query/create
ParametersReturnsRequest
Result
Delete a Query.Method: POST
Path: /v1/query/delete
ParametersReturnsRequest
Result
Check job.status. Successful result details are in job_succeeded; failures are in job_failed.Method: GET
Path: /v1/query/job
ParametersReturnsRequest
Result
Cancel a query execution.Method: POST
Path: /v1/query/job/cancel
ParametersReturnsRequest
Result
Matches the Query ID, code, and arguments, preferring completed executions. Returns job_id: null when no match exists.Method: POST
Path: /v1/query/job/latest
ParametersReturnsRequest
Result
List Queries.Method: GET
Path: /v1/query/list
ParametersReturnsRequest
Result
id is a query result ID, not a Query ID or job ID. Use metadata_only=true to read metadata only.Method: GET
Path: /v1/query/result
ParametersReturnsRequest
Result
Submits an asynchronous execution of a saved Query using the supplied SQL and arguments. Poll using job_id, then fetch results using query_result_id. Returns 409 if a job is already pending or running.Method: POST
Path: /v1/query/run
ParametersReturnsRequest
Result
Update a Query.Method: POST
Path: /v1/query/update
ParametersReturnsRequest
Result
Creates a display configuration without executing SQL. Use type=table for options.type=table, or type=chart for bar, line, area, scatter, pie, or counter. All options fields are defined in the parameters below.Method: POST
Path: /v1/query/visualization/create
ParametersReturnsRequest
Result
Delete a visualization.Method: POST
Path: /v1/query/visualization/delete
ParametersReturnsRequest
Result
Get or create the default visualization.Method: POST
Path: /v1/query/visualization/ensure_default
ParametersReturnsRequest
Result
List visualizations.Method: GET
Path: /v1/query/visualization/list
ParametersReturnsRequest
Result
Updates the name or complete options without executing SQL. options replaces the stored configuration; {} or null clears it. Omitted top-level fields remain unchanged.Method: POST
Path: /v1/query/visualization/update
ParametersReturnsRequest
Result

dashboard

Get a Dashboard.Method: GET
Path: /v1/dashboard
ParametersReturnsRequest
Result
Supply the Dashboard id, then add text or visualizations through the Widget endpoints.Method: POST
Path: /v1/dashboard/create
ParametersReturnsRequest
Result
Delete a Dashboard.Method: POST
Path: /v1/dashboard/delete
ParametersReturnsRequest
Result
List Dashboards.Method: GET
Path: /v1/dashboard/list
ParametersReturnsRequest
Result
Updates the name, complete layout, or owning Space. options replaces the stored layout. target_space must be an editable Space in the same account.Method: POST
Path: /v1/dashboard/update
ParametersReturnsRequest
Result
Adds text or an existing visualization. visualization_id is required for type=visualization and disallowed for other types. Chart settings belong to the Visualization; positioning belongs to the Dashboard layout.Method: POST
Path: /v1/dashboard/widget/create
ParametersReturnsRequest
Result
Delete a Widget.Method: POST
Path: /v1/dashboard/widget/delete
ParametersReturnsRequest
Result
Updates Widget content. Its Dashboard, type, and visualization reference cannot change. To use another visualization, delete and recreate the Widget.Method: POST
Path: /v1/dashboard/widget/update
ParametersReturnsRequest
Result

schedule

The calling account must own the schedule’s Space, and the user must have write access to that Space. The target content must belong to the same account.
Look up by id or by the complete space, content_type, and content_id combination; do not mix them. Content lookup returns the most recently updated matching schedule, or null.Method: GET
Path: /v1/schedule
ParametersReturnsdata is null if content lookup finds no schedule.Request
Result
The schedule is enabled on creation. crontab requires a Cron expression; perpetual supports Notebooks only. Notebook schedules require a valid CPU and memory pair.Method: POST
Path: /v1/schedule/create
ParametersReturnsRequest
Result
Delete a schedule.Method: POST
Path: /v1/schedule/delete
ParametersReturnsRequest
Result
Disable a schedule.Method: POST
Path: /v1/schedule/disable
ParametersReturnsRequest
Result
Enable a schedule.Method: POST
Path: /v1/schedule/enable
ParametersReturnsRequest
Result
List schedules.Method: GET
Path: /v1/schedule/list
ParametersReturnsRequest
Result
Only supports perpetual; other modes return 409.Method: POST
Path: /v1/schedule/restart
ParametersReturnsRequest
Result
Updates execution settings without changing the target content, Space, or mode. Changes to a continuous schedule do not restart its instance automatically; use the restart endpoint. Supply max_cpu and max_memory together when changing the compute specification.Method: POST
Path: /v1/schedule/update
ParametersReturnsRequest
Result

chain

Returns supported chains. The items array is not paginated.Method: GET
Path: /v1/chain/list
ParametersNo request parameters.ReturnsRequest
Result

leafage

Read EVM data or simulate contract calls through Chaintable. The methods below share one JSON-RPC endpoint. HTTP method: POST
Path: /v1/leafage/{chain_id}
Request format Supply params in the order listed for each method. ? marks optional trailing arguments; use null as a placeholder when supplying a later argument. Response format
Checks whether the specified block is valid.Method: blockIsValidParametersparams: [block_id]ReturnsRequest
Result
Returns information about the latest block.Method: getLatestBlockParametersNo parameters. Pass [] as params.ReturnsRequest
Result
Returns block details for a block hash.Method: getBlockByIdParametersparams: [block_id]ReturnsRequest
Result
Returns block details for a block height.Method: getBlockByHeightParametersparams: [block_height]ReturnsRequest
Result
Returns the native token balance of an address.Method: getAddressBalanceParametersparams: [address, block_context?]ReturnsRequest
Result
Returns the nonce of an address.Method: getAddressNonceParametersparams: [address, block_context?]ReturnsRequest
Result
Returns the contract bytecode at an address.Method: getAddressCodeParametersparams: [address, block_context?]ReturnsRequest
Result
Returns the value in a specified contract storage slot.Method: getStorageAtParametersparams: [address, position, block_context?]ReturnsRequest
Result
Simulates contract calls in a batch and returns results in call order. Block and account overrides apply only to the simulation and do not change on-chain state.Method: contractMultiCallParametersparams: [calls, block_context?, block_overrides?, state_overrides?, fast_fail?, use_parallel?, disable_cache?]Returnsstats.success indicates the overall batch status. Within results, each item’s code is 0 on success or a negative value on upstream call failure.Request
Result
Upstream error codes Upstream error codes are separate from the outer Chaintable code. They appear in error.code or an individual batch call’s code.