Access your Fruitask data programmatically with our REST API.
Go to Account Settings and create an API key with the permissions you need.
In your workspace settings, go to the API tab and create a workspace token.
Use your API key in the X-API-Key header and include the workspace token in the URL.
https://integrations.fruitask.com/All API requests require two authentication components:
Include your API key in the X-API-Key header.
X-API-Key: fk_xxxxxxxxxxxxInclude the workspace token in the URL path.
https://integrations.fruitask.com/{table_name}/{workspace_token}/rowsSecurity Note: Never expose your API keys or workspace tokens in client-side code. Always make API calls from your server.
Rate limit information is included in response headers:
X-RateLimit-Limit - Maximum requests allowedX-RateLimit-Remaining - Requests remainingX-RateLimit-Reset - Unix timestamp when limit resets/workspace/{token}/infoGet workspace information including storage usage and limits.
/workspace/{token}/tablesList all tables in the workspace with their columns.
/{table_name}/{token}/infoGet table schema including all column definitions.
/{table_name}/{token}/rowsGet all rows with pagination.
pagePage number (default: 1)limitRows per page (default: 50, max: 200)includeChildrenInclude child table data (true/false)/{table_name}/{token}/rows/{row_id}Get a specific row by ID or row number. Add ?includeChildren=true to include child data.
/{table_name}/{token}/rowsCreate a new row. Pass cell values in the request body.
/{table_name}/{token}/rows/{row_id}Update a row. Only include the cells you want to update.
/{table_name}/{token}/rows/{row_id}/cells/{column_id}Get a specific cell value. Column can be ID or name.
/{table_name}/{token}/rows/{row_id}/cells/{column_id}Update a specific cell value.
{ "value": "new value" }/{table_name}/{token}/rows/{row_id}Delete a specific row by ID or row number.
/{table_name}/{token}/searchSearch for rows containing a value.
qSearch query (required)columnColumn to search (optional, searches all if not provided)pagePage number for resultslimitResults per page (max: 200) This endpoint is provided for backward compatibility with the legacy Fruitask API. Not recommended for new integrations. Use the standard /{table_name}/{token}/rows endpoint instead.
/{table_name}/{token}/deprecated-rowsLegacyGet all rows in the legacy Fruitask format. Returns a flat array where each row is an object with column names as keys and cell values as values.
Manage calendar events programmatically. Calendar endpoints use the same authentication (API Key + Workspace Token) as table endpoints.
Note: Calendars are user-scoped, not workspace-scoped. The workspace_token in the URL is used for authentication only. These endpoints return all calendars the authenticated user has access to, regardless of workspace. You can find a calendar's ID in its Settings → General tab.
/calendar/{workspace_token}/calendarsList all calendars the authenticated user has access to.
/calendar/{workspace_token}/{calendar_id}/eventsGet events from a calendar. Supports date range filtering and recurring event expansion.
startStart date ISO string (e.g. 2026-03-01T00:00:00Z)endEnd date ISO string (e.g. 2026-03-31T23:59:59Z)categoryIdFilter events by category ID/calendar/{workspace_token}/{calendar_id}/eventsCreate a new calendar event.
/calendar/{workspace_token}/{calendar_id}/events/{event_id}Update an existing event. Only include the fields you want to change.
/calendar/{workspace_token}/{calendar_id}/events/{event_id}Delete a calendar event.
scopeall (default), single, or futureinstanceDateRequired when scope is future (ISO date string)Chat with your workspace's AI Knowledge Base programmatically. Use these endpoints to integrate Fruitask's RAG-powered AI chat into your own applications.
Prerequisites: The AI Knowledge Base plugin must be installed on your workspace and you must have at least one document embedded before you can use the chat endpoint.
/knowledge/{workspace_token}/statusCheck the knowledge base status, including whether it's available and how many documents are embedded.
/knowledge/{workspace_token}/chatSend a message to chat with your knowledge base. The AI uses RAG (Retrieval Augmented Generation) to answer based on your embedded documents.
messageRequired. The question or message to send (max 2000 characters)historyOptional array of previous messages for context: [{ role: "user"|"assistant", content: "..." }]Push notifications into Fruitask from any external service. This endpoint only requires an API Key — no workspace token needed.
Authentication: Only the X-API-Key header is required. The notification is sent to the API key owner's account.
/notifyCreate an in-app notification for the API key owner. Use this to integrate external services, CI/CD pipelines, monitoring tools, or any webhook-based system.
titleRequired. Notification title (max 200 characters)messageOptional. Notification body text (max 500 characters)urlOptional. Action URL the user can click to view detailsmetadataOptional. Arbitrary JSON object for extra data400Bad Request - Invalid parameters or missing required fields401Unauthorized - Invalid or missing API key/workspace token403Forbidden - Insufficient permissions404Not Found - Resource does not exist429Too Many Requests - Rate limit exceeded500Internal Server Error - Server-side error# Get all rows from a table
curl -X GET 'https://integrations.fruitask.com//Tasks/wt_your_token/rows?page=1&limit=50' \
-H 'X-API-Key: fk_your_api_key'
# Create a new row
curl -X POST 'https://integrations.fruitask.com//Tasks/wt_your_token/rows' \
-H 'X-API-Key: fk_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"cells": {"Name": "New Task", "Status": "Pending"}}'
# Update a cell
curl -X PUT 'https://integrations.fruitask.com//Tasks/wt_your_token/rows/1/cells/Status' \
-H 'X-API-Key: fk_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"value": "Completed"}'
# --- Calendar API ---
# List calendars
curl -X GET 'https://integrations.fruitask.com//calendar/wt_your_token/calendars' \
-H 'X-API-Key: fk_your_api_key'
# Get events by date range
curl -X GET 'https://integrations.fruitask.com//calendar/wt_your_token/CALENDAR_ID/events?start=2026-03-01T00:00:00Z&end=2026-03-31T23:59:59Z' \
-H 'X-API-Key: fk_your_api_key'
# Create a calendar event
curl -X POST 'https://integrations.fruitask.com//calendar/wt_your_token/CALENDAR_ID/events' \
-H 'X-API-Key: fk_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"title": "Team Meeting", "startDate": "2026-03-10T14:00:00Z", "endDate": "2026-03-10T15:00:00Z"}'
# Delete a calendar event
curl -X DELETE 'https://integrations.fruitask.com//calendar/wt_your_token/CALENDAR_ID/events/EVENT_ID' \
-H 'X-API-Key: fk_your_api_key'
# --- Knowledge Base API ---
# Check KB status
curl -X GET 'https://integrations.fruitask.com//knowledge/wt_your_token/status' \
-H 'X-API-Key: fk_your_api_key'
# Chat with knowledge base
curl -X POST 'https://integrations.fruitask.com//knowledge/wt_your_token/chat' \
-H 'X-API-Key: fk_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"message": "What is the return policy?", "history": []}'
# --- Webhook Notification API ---
# Send a notification (no workspace token needed)
curl -X POST 'https://integrations.fruitask.com//notify' \
-H 'X-API-Key: fk_your_api_key' \
-H 'Content-Type: application/json' \
-d '{"title": "Build Complete", "message": "Build #42 deployed.", "url": "https://ci.example.com/42"}'