製品ガイド
基本
自動化ガイド
統合ガイド
テンプレート
Open API
機能リファレンス
自動化トリガー
自動化アクション
サードパーティ統合
ノードリソース
データベースビュー
データベースフィールド
ダッシュボードウィジェット
ミッション
AI ウィザード
フォーミュラ
空間
リリースノート
Videos
loading...
Welcome to the Bika.ai OpenAPI Quick Start Guide!
This document provides a series of examples to help you get started with the Bika.ai API and SDK. Each section contains code snippets for common operations, including fetching data, creating records, updating records, deleting records, and using automation.
Click to go 👉 Bika.ai API Reference
Before using this Open API, we need to first understand the structure and object hierarchy of Bika.ai.
The Space
is your workspace. It encompasses all the node resources we've previously mentioned, including databases, automation facilities, dashboards, and additional components. When leveraging the Open API, data retrieval must be carried out in accordance with this structure.
For instance, if you aim to obtain the database C represented by node B within Space A, the API would be similar to spaceA.nodeB->resoure->databaseB
.
Note that the node ID is equivalent to the resource ID; for instance, Node ID and Database ID are the same.
For a URL like:
https://bika.ai/space/spcND68gdMMZBmGK67gvqNVX/node/datJubyEnetNFd3UQ6gSeq7U/viwYHuzUxRngq5igMkw9PPIX
SpaceId: spcND68gdMMZBmGK67gvqNVX
NodeID = DatabaseID: datJubyEnetNFd3UQ6gSeq7U
The associated TypeScript SDK is designed in an object-oriented style, which greatly simplifies your code.
Also, the space UI follows the above data structure layer.
For details, please read the homepage of the help document at https://bika.ai/help to view the overall UI introduction of the Space.
OpenAPI is composed of the HTTP protocol, and below are examples of how to call Bika.ai's OpenAPI using the cURL command line tool.
Please checkout the Bika.ai API Reference for more API details.
You can access these OpenAPI endpoints using any HTTP client that supports them, such as cURL, Python Requests, Node.js axios, Rust reqwest, and others.
curl -X GET "https://bika.ai/api/openapi/bika/v1/system/meta" -H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
Response Example:
{
"success": true,
"code": 200,
"message": "SUCCESS",
"data": {
"version": "1.0.0-release.0",
"appEnv": "PRODUCTION",
"hostname": "https://bika.ai",
"headers": {
"X-Forwarded-For": "35.96.5.64",
"User-Agent": "curl/8.4.0"
}
}
}
curl -X GET "https://bika.ai/api/openapi/bika/v1/spaces" -H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
Gets a list of records from the specified database. Assuming we know that the ID of the space is {SPACE_ID}
,and the ID of the database is {NODE_ID}
, here's an example of a cURL call:
curl -X GET 'https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records' \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
Assume we have obtained the ID of a certain space as {SPACE_ID}
, node ID as {NODE_ID}
, and database ID always equals to node ID. Here is an example of creating a new record:
curl -X POST "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"cells": {
"Name": "New record",
"Description": "This is a new database record"
}
}'
Assume the record ID is {RECORD_ID}
. The example of updating a record is as follows:
curl -X PATCH "https://bika.ai/api/openapi/bika/v1/spaces/spcpPuRJJC4CZOwzB9Vlwmja/resources/databases/datkW11Rxx6hFJO924ECNxLk/records" \
-H "Authorization: Bearer bkteM550dHdXyTKN4Wkp59pYX8JD5cDU7rB" \
-H "Content-Type: application/json" \
-d '{
"id": "recpx8ZUBHmRFuD0fGTObHxL",
"cells": {
"Task": "Updated description field column"
}
}'
curl -X DELETE "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/databases/{NODE_ID}/records/{RECORD_ID}" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
Note: This interface needs to be used in conjunction with the "Create Record" or "Update Record" interface. After the attachment is uploaded, a return value (located in the data
attribute of the response body) will be obtained. Use this value as the value of the field where the attachment is to be inserted in the record, and write it into the database together through the "Create Record" or "Update Record" interface.
curl 'https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/attachments' \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-F 'file=@./example.png'
Assume the node ID is {NODE_ID}
. The example is as follows:
curl -X GET "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/resources/automation/{NODE_ID}/triggers" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}"
curl -X POST "https://bika.ai/api/openapi/bika/v1/spaces/{SPACE_ID}/outgoing-webhooks" \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"eventType": "ON_RECORD_CREATED",
"name": "Create webhook",
"description": "Example trigger when a new record is created",
"callbackURL": "https://your - custom - callback - url.com"
}'
First, ensure that the requests
library is installed. You can use the following command to install it:
pip install requests
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
url = "https://bika.ai/api/openapi/bika/v1/system/meta"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
print(response.json())
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
url = "https://bika.ai/api/openapi/bika/v1/spaces"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
spaces = response.json()["data"]
print(spaces)
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"fields": {
"Name": "New record",
"Description": "This is a new database record"
}
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"cells": {
"Name": "New record",
"Description": "This is a new database record"
}
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
database_id = "{DATABASE_ID}"
record_id = "{RECORD_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"id": "recpx8ZUBHmRFuD0fGTObHxL",
"cells": {
"Task": "Updated description field column"
}
}
response = requests.patch(url, headers = headers, data = json.dumps(data))
print(response.json())
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID_DATABASE_ID}"
record_id = "{RECORD_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/resources/databases/{node_id}/records/{record_id}"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.delete(url, headers = headers)
print(response.json())
import requests
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
node_id = "{NODE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/nodes/{node_id}/automation/triggers"
headers = {
"Authorization": f"Bearer {access_token}"
}
response = requests.get(url, headers = headers)
triggers = response.json()["data"]
print(triggers)
import requests
import json
access_token = "{YOUR_ACCESS_TOKEN}"
space_id = "{SPACE_ID}"
url = f"https://bika.ai/api/openapi/bika/v1/spaces/{space_id}/outgoing-webhooks"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"eventType": "ON_RECORD_CREATED",
"name": "Create webhook",
"description": "Example trigger when a new record is created",
"callbackURL": "https://your - custom - callback - url.com"
}
response = requests.post(url, headers = headers, data = json.dumps(data))
print(response.json())
Through the above cURL and Python examples, developers can more conveniently use the Bika.ai OpenAPI to perform various operations. For more detailed information, please refer to the Bika.ai API documentation.
Bika.ai offers an official TypeScript/JavaScript SDK for convenient object-oriented programming when using Bika.ai's OpenAPI.
First, install the Bika.ai SDK using npm:
npm install bika.ai
# or
yarn add bika.ai
pnpm add bika.ai
This example demonstrates how to fetch spaces, nodes, and records.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function fetchRecords() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
const node = nodes.find((node) => node.resourceType === 'DATABASE');
const database = await node?.asDatabase();
const records = await database?.records.list();
console.log('Records:', records);
} catch (error) {
console.error('Error fetching data:', error);
}
}
fetchRecords();
Use this example to create a new record in your database.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function createRecord() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
const node = nodes.find((node) => node.resourceType === 'DATABASE');
const database = await node?.asDatabase();
const newRecord = await database?.records.create({
cells: {
Name: 'New record',
},
});
console.log('New Record Created:', newRecord);
} catch (error) {
console.error('Error creating record:', error);
}
}
createRecord();
This example updates an existing record.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function updateRecord(recordId: string) {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
const node = nodes.find((node) => node.resourceType === 'DATABASE');
const database = await node?.asDatabase();
const updatedRecord = await database?.records.update({
id: recordId,
cells: {
Name: 'Updated Record',
},
});
console.log('Database:', database);
console.log('Record Updated:', updatedRecord);
} catch (error) {
console.error('Error updating record:', error);
}
}
updateRecord('__REPLACE_WITH_RECORD_ID__');
Use this example to delete a specific record.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function deleteRecord(recordId: string) {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
const node = nodes.find((node) => node.resourceType === 'DATABASE');
const database = await node?.asDatabase();
await database?.records.delete(recordId);
console.log('Database:', database);
console.log('Record Deleted:', recordId);
} catch (error) {
console.error('Error deleting record:', error);
}
}
deleteRecord('__REPLACE_WITH_RECORD_ID__');
This example shows how to list automation triggers.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function listTriggers() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const nodes = await space.nodes.list();
const node = nodes.find((node) => node.resourceType === 'AUTOMATION');
const automation = await node?.asAutomation();
const triggers = await automation?.triggers.list();
console.log('Triggers:', triggers);
} catch (error) {
console.error('Error listing triggers:', error);
}
}
listTriggers();
This example demonstrates how to register an outgoing webhook.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function registerWebhook() {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const outgoingWebhook = await space.outgoingWebhooks.register({
eventType: 'ON_RECORD_CREATED',
name: 'Create webhook',
description: 'Exampple trigger when a new record cretaed',
callbackURL: 'https://your-custom-callback-url.com',
});
console.log('Webhook Registered:', outgoingWebhook);
} catch (error) {
console.error('Error registering webhook:', error);
}
}
registerWebhook();
Here are examples of embedding Bika.ai's UI into your own application.
If you want to incorporate Bika.ai's robust UI for databases, documents, and more, you can utilize the embed link API.
Generate an embed link to obtain a URL, and then use an <iframe> in your application.
import { Bika } from 'bika.ai';
const bika = new Bika({
apiKey: '__PASTE_YOUR_API_TOKEN_FROM_USER_SETTING__',
baseURL: 'https://bika.ai/api/openapi/bika',
});
async function createEmbedLink(resourceId: string) {
try {
const spaces = await bika.space.list();
const space = spaces[0];
const embedLink = await space.embedLinks.create({
objectType: 'NODE_RESOURCE',
objectId: resourceId,
});
console.log('Embed Link:', embedLink);
} catch (error) {
console.error('Error creating embed link:', error);
}
}
createEmbedLink('__NODE_RESOURCE_ID_YOU_WANT_TO_EMBED__');
// else
const embedLinks = await space.embedLink.list();
const deleteEmbedLink = await space.embedLink.delete({id: [embedLink.id](http://embedlink.id/)});
After creating an embedded Bika.ai UI, you can use the <iframe> tag to display it on your web page. Here's a simple example of how to do this:
<iframe src="YOUR_EMBEDDED_UI_URL" width="800" height="600"></iframe>
Replace YOUR_EMBEDDED_UI_URL with the actual URL of the embedded Bika.ai UI you created. You can adjust the width and height attributes according to your layout needs.
This Quick Start Guide provides basic examples to help you interact with the Bika.ai OpenAPI and SDK effectively. You can modify and expand these examples as needed for your specific use cases. For more detailed information, refer to the Bika.ai API Documentation.
Happy coding!