Examples
All of these assume two shell variables:
BASE=https://app.honeybase.ai
KEY=hbk_your_key_here
List open tasks
curl -s "$BASE/api/graphql" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"query":
"query { tasks { listTasks(includeCompleted: false) { taskId name priority dueDate assignedTo } } }"}'
Create a task
Requires canManageTasks. Assign it to a specific user, or omit userId and let the
team's assignment rules pick someone.
curl -s "$BASE/api/graphql" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"query":"mutation($n: String!, $d: LocalDate!, $u: Long) { tasks { createTaskWithAssignment(name: $n, dueDate: $d, priority: \"Medium\", userId: $u) { taskId publicId } } }",
"variables": {"n": "Follow up with ACME", "d": "2026-08-01", "u": 12}}'
Page through a process's run history
Newest first. See Pagination for why the page size is small.
curl -s "$BASE/api/graphql" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"query":
"query { processes { listProcessRuns(processId: 5, limit: 10, offset: 0) { runWorkflowId phase startedAt } } }"}'
Who can be assigned work
curl -s "$BASE/api/graphql" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"query":
"query { users { listMembers { webUserId firstName lastName email } } }"}'
Check for errors, not just status
A permission failure is an HTTP 200. Pipe through jq and look at errors first:
curl -s "$BASE/api/graphql" -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" -d "$QUERY" \
| jq 'if .errors then {failed: .errors[0].extensions} else .data end'