List built-in and workspace-deployed blocks visible to the caller. Integration allowlists and preview visibility restrict results. Use capability=trigger for workflow starters and Get Block or Get Tool to resolve operation and tool IDs.
OAuth scope: api:read.
/api/v2/blocksYour Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.
In: header
Query Parameters
Workspace whose integration allowlist, revealed preview blocks, and deployed custom blocks decide what this catalog contains.
1 <= length <= 128Case-insensitive substring match against the block id, name, and description.
1 <= length <= 200Restrict to one toolbar category.
"blocks" | "tools" | "triggers"Restrict to blocks that can start a workflow — the triggers category, blocks declaring triggerAllowed, and blocks with trigger-mode fields.
"trigger"Restrict to shipped blocks or to this workspace’s deployed custom blocks.
"builtin" | "custom"Include legacy and deprecated blocks. Off by default: a sunset block keeps executing where it is already placed, but it is not offered for new authoring. Each returned entry carries sunset.replacedBy, the block to build with instead.
Field used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order.
"id""id" | "name" | "category"Sort direction.
"asc""asc" | "desc"Maximum blocks to return per page. Must be a whole number from 1 to 100. Defaults to 50.
501 <= value <= 100Opaque cursor from the previous page. Send it back with the same sort and filters; only limit may change. Change anything else and pagination must restart without a cursor.
1 <= lengthResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.sim.ai/api/v2/blocks?workspaceId=string" \ -H "X-API-Key: YOUR_API_KEY"{
"data": [
{
"id": "slack",
"name": "Slack",
"description": "Send messages and read channels in Slack.",
"category": "tools",
"integrationType": "communication",
"source": "builtin",
"authMode": "oauth",
"triggerAllowed": true,
"triggerCapable": true,
"triggerIds": [
"slack_webhook"
],
"toolIds": [
"slack_message",
"slack_canvas_read"
],
"operationIds": [
"send",
"read"
],
"preview": false,
"docsLink": "https://docs.sim.ai/tools/slack",
"tags": [
"messaging"
]
}
],
"nextCursor": null
}{
"error": {
"code": "BAD_REQUEST",
"message": "Invalid request"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication required"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient workspace permissions",
"details": {
"code": "INSUFFICIENT_WORKSPACE_ROLE"
}
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"details": {
"retryAfter": "2026-01-01T00:00:30.000Z"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable"
}
}