Developer API
Read and update your Tabhive workspaces, spaces, groups, and tabs
Developer API
The Tabhive Developer API lets paid users integrate their workspaces, spaces, groups, and tabs with scripts and other applications.
Availability
The Developer API is available to Pro, Lifetime, and eligible Team plan users. It is not available to Free users.
The API currently supports workspaces, spaces, groups, and adding tabs to groups. Delete, move, reorder, bulk, and tab-update operations are not available in v1.
Base URL
https://www.tabhive.app/api/v1Authentication
Create an API key in Settings → API → API Keys. You can create up to three keys. The full key is shown only once, so copy it when it is created.
Send the key with every request using either header:
Authorization: Bearer thb_...or:
X-API-Key: thb_...Every API key can read and write through all supported Developer API endpoints. Workspace membership and role permissions still apply: read requests require workspace membership, while create and update requests require Editor or Owner access.
Common response format
Successful responses return JSON. Dates are ISO 8601 strings, IDs are returned as strings or numbers according to the resource, and errors have this shape:
{
"error": "Workspace not found",
"code": "not_found"
}Common status codes:
| Status | Meaning |
|---|---|
400 | Invalid ID or request body |
401 | Missing or invalid API key |
403 | Paid plan required or insufficient workspace role |
404 | Resource not found or not accessible |
500 | Unexpected server error |
Workspaces
List workspaces
GET /workspacesReturns every workspace the authenticated user belongs to.
[
{
"id": "3c5c7e8f-3f0d-4c89-9a0e-0e9f1f1f7e8d",
"name": "Personal",
"description": null,
"is_default": true,
"role": "owner",
"created_at": "2026-10-09T06:00:00.000Z"
}
]Get a workspace
GET /workspaces/{workspaceId}Returns one workspace and the authenticated user’s role in it.
Spaces
List spaces in a workspace
GET /workspaces/{workspaceId}/spacesCreate a space
POST /workspaces/{workspaceId}/spaces
Content-Type: application/json{
"name": "Research"
}Get a space
GET /spaces/{spaceId}Rename a space
PATCH /spaces/{spaceId}
Content-Type: application/json{
"name": "Reading list"
}Groups
List groups in a space
GET /spaces/{spaceId}/groupsCreate a group
POST /spaces/{spaceId}/groups
Content-Type: application/json{
"name": "Product research",
"note": "Links to review this week",
"color": "blue",
"icon": "🔎",
"is_session": false
}Only name is required. Supported colors are grey, blue, red, yellow, green, pink, purple, cyan, and orange.
Get a group
GET /groups/{groupId}Returns the group and its saved tabs.
Update a group
PATCH /groups/{groupId}
Content-Type: application/jsonSend one or more of these fields:
{
"name": "Product research",
"note": "Updated links to review",
"color": "purple",
"icon": "📚",
"is_session": true
}Tabs
Add a tab to a group
POST /groups/{groupId}/tabs
Content-Type: application/json{
"url": "https://linear.app/method",
"title": "Linear Method",
"note": "Read this weekend",
"description": "Product management guidance",
"keywords": "product,planning"
}Only url is required. The URL must use http or https. If title is omitted, the URL is used as the title. Tabhive resolves the favicon on the server; favicon_url is not accepted in the request.
Example request
curl https://www.tabhive.app/api/v1/workspaces \\
-H "Authorization: Bearer thb_..."Limits and security
- Keep API keys private and treat them like passwords.
- The plaintext key is returned only when it is created.
- Tabhive stores a secure hash of each key, not the plaintext key.
- You can revoke keys from Settings → API → API Keys.