canonical: https://jentic.com/apis/bika.ai/bika

# Bika.ai API

Jentic publishes the only available OpenAPI specification for Bika.ai API, keeping it validated and agent-ready. Bika.ai is a no-code database and automation platform that combines spreadsheet-style tables with workflow triggers and outgoing webhooks. The API gives external systems read and write access to records inside a space's databases, lets callers list automation triggers, register outgoing webhooks, and upload attachments. Authentication is by bearer token, with each token scoped to one Bika.ai space.

## For AI agents

Read, create, update, and delete records inside Bika.ai databases, list automation triggers, and register outgoing webhooks for a Bika.ai space.

## Scope

Does not handle user account management, billing, or arbitrary SQL queries - use for Bika.ai database records, automation triggers, and webhook operations only.

## Capabilities

- List the spaces accessible to the current bearer token via /spaces
- Read records from a database node with `/spaces/{spaceId}/resources/databases/{nodeId}/records`
- Create or batch-insert new records into a Bika.ai database
- Patch existing records to update specific fields without overwriting the row
- Delete a record by ID from a Bika.ai database
- Enumerate automation triggers attached to an automation node
- Register an outgoing webhook on a space and upload binary attachments

## Use cases

### External Form to Bika.ai Database

Marketing and operations teams collect leads or operational events through external forms or services and pipe each submission into a Bika.ai database row. POST `/spaces/{spaceId}/resources/databases/{nodeId}/records` accepts an array of field-value objects and returns the created record IDs. Pair with `/spaces/{spaceId}/attachments` to attach uploaded files to each new row.

Example prompt: Call POST `/spaces/{spaceId}/resources/databases/{nodeId}/records` with [{fields: {Name: 'Acme Co', Email: 'ops@acme.com'}}] and return the created record ID

### Two-Way Sync with External Systems

Operations teams keep Bika.ai aligned with another system of record by polling /records, comparing rows, and PATCHing changed fields. The PATCH endpoint accepts partial updates so non-modified columns stay untouched, and DELETE handles cleanup of stale rows. Outgoing webhooks registered through `/spaces/{spaceId}/outgoing-webhooks` let the external system react in near real time when Bika.ai changes.

Example prompt: GET `/spaces/{spaceId}/resources/databases/{nodeId}/records`, diff against the source system, then PATCH changed rows with the new field values

### Trigger Inspection for Automation Auditing

Admins reviewing a Bika.ai workspace need a programmatic way to inventory every trigger configured on automation nodes - for compliance, change review, or migration to a new space. GET `/spaces/{spaceId}/resources/automation/{nodeId}/triggers` returns the trigger list per node, which a script can roll up across all automation nodes in the space. `/system/meta` confirms API health and version before bulk reads.

Example prompt: Call GET `/system/meta` to confirm reachability, then iterate `/spaces/{spaceId}/resources/automation/{nodeId}/triggers` for each automation node and dump the triggers

### Agent-Driven Database Operations via Jentic

An AI agent connected through Jentic answers 'add this customer to our Bika.ai pipeline' by searching Jentic for record creation, loading the Bika.ai records POST operation, and executing it with the right fields object. The bearer token is held in your Jentic One instance scoped to the user's space, so the agent can chain reads and writes without ever seeing the secret. The same flow extends to any database in the space.

Example prompt: Search Jentic for 'add a record to a Bika.ai database', load `/spaces/{spaceId}/resources/databases/{nodeId}/records` POST, execute with the customer fields

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/spaces` | List accessible Bika.ai spaces |
| GET | `/spaces/{spaceId}/resources/databases/{nodeId}/records` | List records in a database node |
| POST | `/spaces/{spaceId}/resources/databases/{nodeId}/records` | Create new records |
| PATCH | `/spaces/{spaceId}/resources/databases/{nodeId}/records` | Patch existing records |
| DELETE | `/spaces/{spaceId}/resources/databases/{nodeId}/records/{recordId}` | Delete a record |
| POST | `/spaces/{spaceId}/outgoing-webhooks` | Register an outgoing webhook |
| POST | `/spaces/{spaceId}/attachments` | Upload an attachment |

## Key resources

- **Spaces** — List Bika.ai spaces the bearer token can access
- **Database Records** — Read, create, patch, and delete records inside database nodes
- **Automation Triggers** — Enumerate triggers configured on an automation node
- **Outgoing Webhooks** — Register outgoing webhook subscriptions on a space
- **Attachments** — Upload binary attachments to a space
- **System Meta** — Verify API health and version

## Why Jentic

- **Setup:** Wiring the Bika.ai API by hand means carrying its bearer token on every call and threading the space id, database node id, and record id through each nested path yourself. Through Jentic you install once, import Bika.ai from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Bika.ai puts the space and database ids in the URL path (`/spaces/{spaceId}/resources/databases/{nodeId}/records/...`), so a rule can pin your agent to one space or one database: it can read and add records there and nothing else. You choose the operations it may call, so record deletion or webhook registration is not included unless you add them.
- **Credential handling:** Your Bika.ai bearer token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'add a record to a database' or 'register an outgoing webhook', and Jentic returns the matching Bika.ai operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Airtable API** — Spreadsheet-database hybrid with broad ecosystem and rich field types
- **Notion API** — Document-first workspace with database blocks for structured data
- **Coda API** — Doc platform with embedded tables, formulas, and packs

## FAQ

### Why is there no official OpenAPI spec for Bika.ai API?

Bika.ai documents its OpenAPI surface in narrative form at bika.ai/en/help/guide/developer/openapi. Jentic generates and maintains a structured OpenAPI specification so that AI agents and developers can call Bika.ai API via tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Bika.ai API use?

Bika.ai uses HTTP bearer authentication. The token is generated inside Bika.ai and scoped to a single space. Through Jentic, the bearer token is held encrypted in the vault and attached to outbound calls so the raw secret never enters the agent's context.

### Can I create multiple records in one call?

Yes. POST `/spaces/{spaceId}/resources/databases/{nodeId}/records` accepts an array of objects under the records body, so a single call can insert many rows. Use PATCH on the same path for batch updates that only change selected fields.

### What are the rate limits for the Bika.ai API?

Rate limits are not published in the OpenAPI spec - they are enforced per workspace plan by Bika.ai. For sustained writes, batch records into single POST calls and avoid per-row loops, which is the most reliable way to stay under any throttle.

### How do I add a record through Jentic?

Run `pip install jentic`, then `await client.search('add a record to a Bika.ai database')`, `await client.load(...)` for the records POST operation, and `await client.execute(...)` with spaceId, nodeId, and the records body. Jentic injects the bearer token from the vault.

### Can I receive events from Bika.ai changes?

Yes. POST `/spaces/{spaceId}/outgoing-webhooks` registers an outgoing webhook subscription on a space, so Bika.ai will push events to the configured URL when underlying records or automations fire. Pair with GET `/spaces/{spaceId}/resources/automation/{nodeId}/triggers` to inspect what triggers exist before subscribing.

### Can I limit what my agent is allowed to do with the Bika.ai API?

Yes. Because Bika.ai puts the space and database ids in the URL path (`/spaces/{spaceId}/resources/databases/{nodeId}/records`), your self-hosted Jentic One instance lets you write a rule that pins the agent to a single space or database, so it can read and add records there and nothing else. You choose which operations the agent may call, so record deletion (DELETE .../records/{recordId}) and outgoing-webhook registration (POST `/spaces/{spaceId}/outgoing-webhooks`) stay off unless you add them. Your own rules decide which operations and the scoped bearer token the agent uses at execution time.
