API Documentation v1.0
Build powerful integrations with the HyperPlanner REST API. Create tasks, manage events, automate workflows, and sync data with external services.
Overview
The HyperPlanner API provides programmatic access to your tasks, events, templates, and settings. Use it to integrate HyperPlanner with your existing tools, build custom automations, or create third-party applications.
Base URL
API Access
API access is available on Pro and Team plans. Free accounts can use the API in read-only mode with limited rate limits. Upgrade your plan for full API access.
Authentication
The HyperPlanner API supports two authentication methods: API Keys for server-to-server communication, and OAuth 2.0 for user-authorized applications.
API Keys
API keys are the simplest way to authenticate. Generate a key from your Settings > Developer > API Keys panel.
Keep Your Keys Secret
Never expose API keys in client-side code or public repositories. Use environment variables and server-side requests. Rotate keys immediately if compromised.
API Key Types
| Key Prefix | Type | Use Case |
|---|---|---|
hp_live_ |
Production | Live environment with full access |
hp_test_ |
Test | Sandbox environment for development |
hp_readonly_ |
Read-only | Read access only, no mutations |
OAuth 2.0
For applications that act on behalf of users, implement OAuth 2.0 authorization flow.
OAuth Token Exchange
Available Scopes
| Scope | Description |
|---|---|
tasks:read |
Read access to tasks |
tasks:write |
Create, update, delete tasks |
events:read |
Read access to calendar events |
events:write |
Create, update, delete events |
templates:read |
Read access to templates |
templates:write |
Create templates |
settings:read |
Read user settings |
settings:write |
Modify user settings |
webhooks:manage |
Create and manage webhooks |
Rate Limits
API requests are rate-limited to ensure fair usage and system stability. Limits vary by plan and endpoint type.
Rate Limit Tiers
| Plan | Requests/Minute | Requests/Day | Burst Limit |
|---|---|---|---|
| Free | 30 | 1,000 | 10 |
| Pro | 120 | 10,000 | 50 |
| Team | 300 | 50,000 | 100 |
| Enterprise | Custom | Custom | Custom |
Rate Limit Headers
Every API response includes headers indicating your current rate limit status:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Maximum requests allowed per minute |
X-RateLimit-Remaining |
Requests remaining in current window |
X-RateLimit-Reset |
Unix timestamp when the limit resets |
X-RateLimit-RetryAfter |
Seconds to wait before retrying (when rate limited) |
Handling Rate Limits
When you receive a 429 Too Many Requests response, wait for the time
specified in X-RateLimit-RetryAfter before retrying. Implement exponential
backoff for robust error handling.
Tasks API
Create, read, update, and delete tasks. Tasks are the core entities in HyperPlanner, representing actionable items with optional due dates, priorities, and metadata.
GET /api/tasks
Retrieve a list of tasks with optional filtering and pagination.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
statusoptional |
string | Filter by status: pending, in_progress, completed, archived |
priorityoptional |
string | Filter by priority: high, medium, low |
contextoptional |
string | Filter by context (e.g., work, personal) |
due_beforeoptional |
ISO 8601 | Tasks due before this date |
due_afteroptional |
ISO 8601 | Tasks due after this date |
tagsoptional |
string | Comma-separated list of tags |
limitoptional |
integer | Number of results (default: 50, max: 100) |
offsetoptional |
integer | Pagination offset |
POST /api/tasks
Create a new task.
Request Body
| Field | Type | Description |
|---|---|---|
titlerequired |
string | Task title (max 500 characters) |
descriptionoptional |
string | Task description (max 5000 characters) |
priorityoptional |
string | Priority level: high, medium, low |
contextoptional |
string | Context label |
tagsoptional |
array | Array of tag strings |
due_atoptional |
ISO 8601 | Due date and time |
subtasksoptional |
array | Array of subtask objects |
metadataoptional |
object | Custom key-value pairs |
PUT /api/tasks/:id
Update an existing task. Supports partial updates - only include fields you want to change.
DELETE /api/tasks/:id
Delete a task. This action is irreversible. Use status: "archived" for soft delete.
Events API
Manage calendar events with time blocks, recurrence patterns, and attendee information. Events integrate seamlessly with tasks for time-blocking workflows.
GET /api/events
Retrieve calendar events within a date range.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
start_daterequired |
ISO 8601 | Start of date range |
end_daterequired |
ISO 8601 | End of date range |
calendar_idoptional |
string | Filter by specific calendar |
include_recurringoptional |
boolean | Expand recurring events (default: true) |
POST /api/events
Create a new calendar event.
Request Body
| Field | Type | Description |
|---|---|---|
titlerequired |
string | Event title |
start_atrequired |
ISO 8601 | Event start time |
end_atrequired |
ISO 8601 | Event end time |
all_dayoptional |
boolean | All-day event flag |
calendar_idoptional |
string | Target calendar ID |
coloroptional |
string | Hex color code |
locationoptional |
string | Event location or meeting link |
recurrenceoptional |
object | Recurrence pattern configuration |
remindersoptional |
array | Array of reminder objects |
task_idoptional |
string | Link to an existing task (time-blocking) |
PUT /api/events/:id
Update an existing event. For recurring events, specify update scope.
Additional Parameters for Recurring Events
| Parameter | Description |
|---|---|
update_scope: "single" |
Update only this occurrence |
update_scope: "future" |
Update this and all future occurrences |
update_scope: "all" |
Update all occurrences in the series |
DELETE /api/events/:id
Delete a calendar event. For recurring events, specify deletion scope.
Templates API
Templates allow you to create reusable task and project structures. Use them to quickly instantiate common workflows.
GET /api/templates
Retrieve available templates.
POST /api/templates
Create a new template from scratch or from existing tasks.
POST /api/templates/:id/instantiate
Create tasks from a template with a specified start date.
Settings API
Read and update user preferences, notification settings, and app configuration.
GET /api/settings
Retrieve current user settings.
PUT /api/settings
Update user settings. Supports partial updates.
Error Codes
The API uses standard HTTP status codes and returns detailed error information in JSON format.
Error Response Format
HTTP Status Codes
| Code | Status | Description |
|---|---|---|
| 200 | OK | Request succeeded |
| 201 | Created | Resource created successfully |
| 204 | No Content | Request succeeded with no response body |
| 400 | Bad Request | Invalid request format or parameters |
| 401 | Unauthorized | Missing or invalid authentication |
| 403 | Forbidden | Valid auth but insufficient permissions |
| 404 | Not Found | Resource does not exist |
| 409 | Conflict | Resource conflict (e.g., duplicate) |
| 422 | Unprocessable Entity | Validation failed |
| 429 | Too Many Requests | Rate limit exceeded |
| 500 | Internal Server Error | Unexpected server error |
| 502 | Bad Gateway | Upstream service unavailable |
| 503 | Service Unavailable | API temporarily unavailable |
Error Codes Reference
| Error Code | Description | Resolution |
|---|---|---|
invalid_request |
Request body is malformed | Check JSON syntax and required fields |
invalid_api_key |
API key is invalid or expired | Generate a new key in Settings |
insufficient_scope |
Token lacks required scope | Request additional OAuth scopes |
resource_not_found |
Requested resource doesn't exist | Verify the resource ID |
validation_error |
Field validation failed | Check field constraints in docs |
rate_limit_exceeded |
Too many requests | Wait and retry with backoff |
quota_exceeded |
Plan limit reached | Upgrade plan or wait for reset |
conflict |
Resource state conflict | Fetch latest state and retry |
Webhooks
Webhooks allow you to receive real-time notifications when events occur in HyperPlanner. Configure endpoints to be notified of task completions, event changes, and more.
Setting Up Webhooks
Create webhooks via the API or in Settings > Developer > Webhooks.
Available Webhook Events
| Event | Description |
|---|---|
task.created |
A new task was created |
task.updated |
A task was modified |
task.completed |
A task was marked as complete |
task.deleted |
A task was deleted |
event.created |
A new calendar event was created |
event.updated |
A calendar event was modified |
event.deleted |
A calendar event was deleted |
template.used |
A template was instantiated |
Webhook Payload Format
Verifying Webhook Signatures
Each webhook request includes an X-HyperPlanner-Signature header containing
an HMAC-SHA256 signature. Verify this to ensure the request came from HyperPlanner.
Webhook Reliability
Webhooks are delivered with automatic retries (3 attempts with exponential backoff). If your endpoint returns a non-2xx status code, we'll retry. Always return 200 OK quickly and process asynchronously.
SDKs & Libraries
Official SDKs are in development to make API integration easier. Sign up to be notified when they launch.
JavaScript/Node.js
Coming Q1 2024
Python
Coming Q1 2024
Ruby
Coming Q2 2024
Go
Coming Q2 2024
Java
Coming Q3 2024
PHP
Coming Q3 2024
Community Libraries
The community has created unofficial libraries for various languages. Check our Community Resources page for a curated list. Note that these are not officially supported.
API Client Best Practices
- Use environment variables for API keys, never hardcode them
- Implement retry logic with exponential backoff for failed requests
- Cache responses where appropriate to reduce API calls
- Handle pagination for list endpoints that return many results
- Validate input before sending to avoid unnecessary API errors
- Log API interactions for debugging (without logging sensitive data)
Need Help?
If you have questions about the API or need assistance with your integration:
Developer Forum
Ask questions and share solutions with other developers.
API Support
Contact api-support@hyperplanner.app for technical issues.
Status Page
Check status.hyperplanner.app for service status.
Changelog
Stay updated on API changes and new features.