API Reference
Workspace
Authenticated workspace context and workspace-level metadata endpoints.
Workspace endpoints manage authenticated workspace context and workspace-level metadata.
Endpoints
GET /studio/whoami
Return the authenticated workspace API key context.
- Full URL:
https://api.pickaxe.co/v1/studio/whoami
Request Fields
This endpoint does not define request body fields.
Examples
curl -X GET https://api.pickaxe.co/v1/studio/whoami \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"Response Shape
{
"data": {
"authMode": "workspace_api_key",
"user": {
"email": "carson@pickaxeproject.com",
"name": null
},
"workspace": {
"workspaceId": "5f90404a-f736-48c4-95df-d84cf886759b",
"name": "WaveWatch"
},
"workspaceScope": "fixed",
"capabilities": {
"pickaxes": true,
"deployments": true,
"actions": true,
"mcps": true,
"accessGroups": true,
"products": true,
"pages": true,
"portals": true,
"aiBuild": true
}
}
}
GET /studio/workspace/list
List workspaces visible to the current API key.
- Full URL:
https://api.pickaxe.co/v1/studio/workspace/list
Request Fields
This endpoint does not define request body fields.
Examples
curl -X GET https://api.pickaxe.co/v1/studio/workspace/list \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN"Response Shape
{
"data": [
{
"workspaceId": "5f90404a-f736-48c4-95df-d84cf886759b",
"name": "WaveWatch",
"selected": true,
"visibility": "public",
"creator": "carson@pickaxeproject.com"
}
]
}
POST /studio/workspace/history
Fetch conversation history across the authenticated workspace.
For very large exports, do not request the full workspace in one response. A single response that hydrates thousands of conversations can exceed HTTP function timeouts. For the most reliable giant export, use a coding agent or script to list Pickaxes, page through each Pickaxe's history, and write each record to JSONL as it arrives.
- Full URL:
https://api.pickaxe.co/v1/studio/workspace/history
Request Fields
pickaxeIds(string[], optional): Optional list of Pickaxe IDs to include. If omitted, history is fetched across all active Pickaxes in the authenticated workspace. The fieldpickaxesis also accepted as an alias.skip(number, optional): The number of recent conversations to skip. Defaults to0.limit(number, optional): The maximum number of recent conversations to return for this request. Defaults to10.lastDays(number, optional): Optional filter for conversations updated within the last N days.format(string, optional): The desired output format for the chat history. Can be "raw" or "messages". Defaults to "messages".sortBy(string, optional): Sort order for returned conversations. Supported values include "created-desc", "created-asc", "updated-desc", "updated-asc", "cost-desc", and "cost-asc". Defaults to "created-desc".users(string[], optional): Optional user IDs or emails to filter history by conversation sender.originTypes(string[], optional): Optional source filters such as PICKAXE, BUILDER, STUDIO, EMBED, EMAIL, WHATSAPP, API, SLACK, or MAKE.search(string, optional): Optional search string matched against session ID, Pickaxe ID, sender, and summary fields.createdAfter(string, optional): Optional ISO datetime lower bound for conversation creation time.createdBefore(string, optional): Optional ISO datetime upper bound for conversation creation time.updatedAfter(string, optional): Optional ISO datetime lower bound for conversation update time.updatedBefore(string, optional): Optional ISO datetime upper bound for conversation update time.hasUploadedDocuments(boolean, optional): If true, only returns conversations that used uploaded documents.hasMemories(boolean, optional): If true, only returns conversations that created or used user memories.userMemoryIds(string[], optional): Optional memory IDs to filter matching conversations.minCost(number, optional): Optional minimum total conversation cost filter.maxCost(number, optional): Optional maximum total conversation cost filter.
Examples
curl -X POST https://api.pickaxe.co/v1/studio/workspace/history \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"skip": 0,
"limit": 100,
"format": "raw",
"sortBy": "created-desc"
}'Response Shape
{
"success": true,
"data": [
{
"responseId": "SESSION123",
"formId": "MY_FORM_ID",
"type": "chat",
"messages": [],
"userId": "user@example.com",
"model": "gpt-5",
"historyId": "665f4f1d2f1b9c0012345678",
"userMemoryIds": [],
"createdAt": "2026-05-08T18:10:00.000Z",
"updatedAt": "2026-05-08T18:10:10.000Z"
}
]
}
