REST API
Hypertask’s public REST API is available at https://app.hypertask.ai/api/v1. Use it to list projects, create and update tasks, manage comments, assign users, read inbox notifications, and manage task drafts.
Authentication
Section titled “Authentication”Send an API key in the Authorization header:
Authorization: Bearer htk_...Create API keys in the Hypertask app with Ctrl+K -> REST API. Each user can have up to 10 active keys. The full key is shown once when it is created, and keys can be revoked from the same modal.
export HT_API_KEY=htk_...
curl -s -H "Authorization: Bearer $HT_API_KEY" \ "https://app.hypertask.ai/api/v1/user/context"Error responses use this general shape:
{ "success": false, "error": "Validation error", "message": "project_id must be a positive integer", "details": { "field": "project_id", "code": "invalid_type" }}Session-validated identity
Section titled “Session-validated identity”Previously, several public API routes accepted an unsigned nookies_user cookie as the authenticated user identity. This has been tightened to prevent account takeover via forged cookies:
- Routes that set
nookies_user.idnow require a valid, matching signedht_sessioncookie with the sameidvalue to succeed. - The following route families are affected:
- Auth routes (e.g.,
/api/auth/*) - MCP routes (
/api/mcp/*) - Other 64 public sub-paths previously relying on unsigned nookies_user
- All associated webhook and logged-out call sites
- Auth routes (e.g.,
Verified live on production: forging nookies_user={"id":6} now returns 401 instead of 200+ full data, and forging {"id":1} for any other user also returns 401.
Compatibility: The consensus across the auth, MCP, public, webhook, logged-out, and Bearer-auth request families is that this change does not affect existing integrations or tools:
- Auth requests with standard
Authorization: Bearer $HT_API_KEYcontinue to work. - MCP tools retain their same param schema.
- Public integrations that already manage
ht_sessionvia the app workload continue untouched. - Work that previously shipped
nookies_userdirectly (e.g., via server-to-server calls) should now explicitly sign or addht_sessionwith the sameid, but it is a rare pattern in practice.
If your pattern relies on unsigned nookies_user outside these call sites, see /api/session/verify to validate the signed session instead.
createMention API
Section titled “createMention API”The createMention API endpoint now requires a verified authentication session. Mentions are no longer an open push channel that trusts caller-supplied identifiers:
- All requests to
POST /api/v1/commentswith amentionsarray now require verification against the signedht_session. - The
mentionedByfield in the request is ignored; it is derived automatically from the authenticated user’s session. - The endpoint validates that the task, the initiator, and the recipient all belong to the same board before creating the mention.
- Attempting to forge mentions or cross-board mentions returns an
401 Unauthorizedresponse.
API user routes require authentication
Section titled “API user routes require authentication”The following API routes have been secured to require authentication:
POST /api/resetUserâ\x80\x94 admin tool for resetting user state. Takes the samex-admin-passwordheader check as thereset-trialendpoint.GET /api/users/searchâ\x80\x94 searches available users by name or email. Requires a signedht_sessioncookie.GET /api/users/getByEmailsâ\x80\x94 returns users matching one or more email addresses. Requires a signedht_sessioncookie.DELETE /api/v1/projects/{projectId}/membersâ\x80\x94 removes a project member. Now requires a signedht_sessioncookie (not available without authentication).- Account ownership transfer endpoint that previously accepted unauthenticated requests is now blocked: unauthenticated requests return 401 before any ownership change is attempted.
These routes were previously accessible without an authenticated session. Requests made without valid authentication now receive 401 Unauthorized.
Deprecated and removed endpoints
Section titled “Deprecated and removed endpoints”The following endpoints have been removed as they were not actively used by any client:
GET /api/comments/getAllâ\x80\x94 useGET /api/v1/commentsinstead.GET /api/comments/singleâ\x80\x94 useGET /api/v1/commentswith a specificticket_numberortask_id.POST /api/notifications/oneOffUpdateScriptâ\x80\x94 use the standard notification management endpoints under/api/v1/notifications/or the app’s ability to schedule notification preferences.
Knowing these endpoints were already unused, this change does not affect integrations.