Skip to main content

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'