RETABLE USER GUIDE
Search…
⌃K

API

Retable Public API v1 (beta) Documentation

Welcome Retable's public API v1 documentation. For the first version of the Public API, there are four different sections that you can use:
  • Data
  • Workspace
  • Project
  • Retable
To use Retable Public API, you have to obtain an API key from Retable.io on the profile tab, for detailed instructions, take a look at the Quick Start Section.
User's limitations are applied to API endpoints.
Retable Public API currently is in Beta. There could be some inconsistency between endpoints and data loss. Use at your own risk. If you have any feedback about the API, please reach us by this form.

Retable Make Integration

You can design, build, and automate anything for your work by integrating Retable with any of your apps in just a few clicks with Retable Make(Integromat) Integration.

API Key

Your API requests are authenticated using API keys. Any request that doesn't include an API key will return an error.
You can generate an API Key from your User page at any time on Retable.io.
This generated API Key is constant, when it is generated it never changes or is deleted. Though you can change its usable state on the same page.
After obtaining your API Key (starts with RTBL-v1 prefix) you have to add an API-Key header to every request. Otherwise, you will get an Unauthorized Error.
For the Beta version we have not implemented any library but we are planning to add libraries in the coming versions.

General Objects

Requests expect a JSON body.
All responses come in a JSON object inside of a data field:
{
"data": {
...
}
}
Almost all responses contain created_by, updated_by and deleted_by objects called basic user objects. These objects contain information about the user who made the create, update and delete operations. They have four basic fields:
  • id (string): Unique Id of the user
  • name (string): Name of the user
  • surname (string): Surname of the user
  • email (string): Unique email address of the user
If the response contains a basic user object, the created_by user object always contains a non-null value. updated_by and deleted_by can return null values.
In Addition to basic user objects, responses return created_at, updated_at and deleted_at date fields. These fields indicate when the component is created, updated or deleted in UTC. created_at always contains a non-null date value. Other date fields (updated_at and deleted_at) can contain null values.

Data

Data related API operations.

Returns data of a specific Retable

get
https://api.retable.io/v1/public
/retable/{retable_id}/data
Get rows
cURL
curl --request GET 'https://api.retable.io/v1/public/retable/<retable_id>/data' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Response Objects

In this request's response, there is an object array called rows. This object contains information about a row.
An example row object:
{
"id": 1,
"created_at": "2022-04-04 17:47:03",
"updated_at": null,
"created_by": {
"id": "PuNXWNo8nVWDSUrE",
"name": "Gandalf",
"surname": "The White",
"email": "[email protected]"
},
"updated_by": null,
"columns": [
{
"kPpvPLIH66L2DecQ": ""
}
]
}
  • id (integer): Id of the row
  • created_at (string): UTC date-time when the row is created
  • updated_at (string): UTC date-time when the row is updated
  • created_by (basic user object): User info that created the row
  • updated_by (basic user object): User info that updated the row
  • columns (column cell data object): A simple object that contains the column names as key and cell data as value

Insert row to a specific Retable

Only the owner or the editor roles can insert a row. Otherwise, you will get the Not Allowed Error.
post
https://api.retable.io/v1/public
/retable/{retable_id}/data
Insert Row

Example Body

With this body, you will be inserting two rows with cell data 'Isengard' and 'Rivendell' to the column with Id 'Bvt1FQhTyAPjmDx'.
If you do not provide the cell_data field in the body, you won't get an error. Instead, empty cell data will be inserted.
{
"data": [
{
"columns": [
{
"column_id": "Bvt1FQhTyAPjmDx",
"cell_data": "Isengard"
}
]
},
{
"columns": [
{
"column_id": "Bvt1FQhTyAPjmDx",
"cell_data": "Rivendell"
}
]
}
]
}
cURL
curl --request POST 'https://api.retable.io/v1/public/retable/<retable_id>/data' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"data": [
{
"columns": [
{
"column_id": "Bvt1FQhTyAPjmDx",
"cell_data": "Isengard"
},
{
"column_id": "Bvt1FQhTyAPjmDx",
"cell_dta": "Rivendell"
}
]
}
]
}'

Update row of a specific Retable

Only the owner or the editor roles can update a row. Otherwise, you will get a Not Allowed Error.
put
https://api.retable.io/v1/public
/retable/{retable_id}/data
Update row

Example Body

{
"rows": [
{
"row_id": 2,
"columns": [
{
"column_id": "Bvt1FtQhTyAPjmDx",
"update_cell_data": "Mordor"
}
]
},
]
}
cURL
curl --request PUT 'https://api.retable.io/v1/public/retable/<retable_id>/data' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"rows": [
{
"row_id": 2,
"columns": [
{
"column_id": "Bvt1FtQhTyAPjmDx",
"update_cell_data": "Mordor"
}
]
},
]
}'

Delete row from a specific Retable

Only the owner of the Retable can delete a row. Otherwise, you will get a Not Allowed Error.
delete
https://api.retable.io/v1/public/
retable/{retable_id}/data
Delete row
If the given row Id does not exist in the Retable, delete row request returns Status Ok
with deleted_row_count is 0.

Example Body

{
"row_ids": [
1
]
}
cURL
curl --request DELETE 'https://api.retable.io/v1/public/retable/<retable_id>/data' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"row_ids": [
1
]
}'

Workspace

Workspace related API operations.

Get user's all Workspaces

get
https://api.retable.io/v1/public
/workspace
Get All Workspaces
cURL
curl --location --request GET 'https://api.retable.io/v1/public/workspace' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Get a specific Workspace and its Projects

get
https://api.retable.io/v1/public
/workspace/{workspace_id}
Get a Workspace
cURL
curl --location --request GET 'https://api.retable.io/v1/public/workspace/<workspace_id>' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Create a new Workspace with a default Project

post
https://api.retable.io/v1/public
/workspace
Create a Workspace

Example Body

{
"name": "Workspace 1",
"description": "Workspace Description"
}
cURL
curl --location --request POST 'https://api.retable.io/v1/public/workspace' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Workspace 1",
"description": "Workspace Description"
}'

Project

Project related API operations.

Get all Projects that belong to a specific Workspace

get
https://api.retable.io/v1/public
/workspace/{workspace_id}/project
Get Workspace's Projects
cURL
curl --request GET 'https://api.retable.io/v1/public/workspace/<workspace_id>/project' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Get a specific Project with Retables

get
https://api.retable.io/v1/public
/project/{project_id}
Get a Project
cURL
curl --request GET 'https://api.retable.io/v1/public/project/<project_id>' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Create a Project under the given Workspace with a default Retable

post
https://api.retable.io/v1/public
/workspace/{workspace_id}/project
Create Project

Example Body

{
"name": "New Project 1",
"description": "Project Description",
"color": "#898cff"
}
cURL
curl --request POST 'https://api.retable.io/v1/public/workspace/<workspace_id>/project' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "New Project 1",
"description": "Project Description",
"color": "#898cff"
}'

Retable

Retable related API operations.
In this section, you can see available Retable endpoints.
Every endpoint returns a column array object which contains current columns information.
An example column object:
{
"column_id": "vgcDsxT8NX5zFimQ",
"type": "text",
"title": "A",
"created_at": "2022-04-04 17:30:33.947000"
}
  • name (string): A unique identifier, different for every column.
  • type (string): Type of the column.
  • title (string): Title of the column.
  • created_at (string): UTC date when the column is created.
The column_id property is used for deleting column(s) from a Retable.

Get all Retables that belong to a specific Project

get
https://api.retable.io/v1/public
/project/{project_id}/retable
Get Project's Retables
cURL
curl --request GET 'https://api.retable.io/v1/public/project/<project_id>/retable' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Get information about a specific Retable

get
https://api.retable.io/v1/public
/retable/{retable_id}
Get a Retable
cURL
curl --request GET 'https://api.retable.io/v1/public/retable/<retable_id>' \
--header 'ApiKey: <RTBLv1-YourAPIKey>'

Create a new Retable under a specific Project

post
https://api.retable.io/v1/public
/project/{project_id}/retable
Create new Retable
cURL
curl --request POST 'https://api.retable.io/v1/public/project/<project_id>/retable' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--data-raw ''

Creates a new column on the specific Retable

post
https://api.retable.io/v1/public/
retable/{retable_id}/column
Add column
For this version, you can only create basic column types, which are:
  • text
  • number
  • checkbox
  • image
  • calender
  • color
  • email
  • phonenumber
  • percent
  • select
Use one of these types in the request's body for the column object type field. Otherwise, you will get a Bad Request Error.

Example Body

{
"columns": [
{
"title": "hello",
"type": "text"
}
]
}
cURL
curl --request POST 'https://api.retable.io/v1/public/retable/<retable_id>/column' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"columns": [
{
"title": "hello",
"type": "text"
}
]
}'

Deletes column from a specific Retable

delete
https://api.retable.io/v1/public
/retable/{retable_id}/column
Delete Column

Example Body

{
"column_names": [
"<column_id>",
"<column_id>"
]
}
cURL
curl --request DELETE 'https://api.retable.io/v1/public/retable/<retable_id>/column/' \
--header 'ApiKey: <RTBLv1-YourAPIKey>' \
--header 'Content-Type: application/json' \
--data-raw '{
"column_names": [
"<column_id>",
"<column_id>"
]
}'