200Notes

API Overview

The 200Notes API provides programmatic access to core features, allowing you to integrate 200Notes with your existing tools, build custom applications, and automate workflows.

📋 Current Implementation Status

Authentication: Fully implemented with custom Bearer tokens

Projects: Full CRUD operations available

Team Management: Collaboration endpoints implemented

🚧 Notes: Planned for Phase 2 completion

Tasks: Full CRUD operations available

🚧 AI Features: Planned for Phase 3

Getting Started

API Basics

The 200Notes API is a RESTful API that uses JSON for data exchange. All API requests must be made over HTTPS.

  • Base URL: https://200notes.com/api/v1
  • Format: JSON
  • Authentication: Bearer token (api_key:api_secret)
  • Rate Limiting: Not yet implemented

API Versioning

We use URL-based versioning for our API. The current version is v1.

  • Version Format: /v1/ in the URL path
  • Current Version: v1 (initial release)
  • Future Plans: Semantic versioning with backward compatibility

🔑 API Key Required

To use the API, you'll need to generate an API key from your account settings. See the Authentication section for detailed instructions.

Available Resources

✅ Authentication

User registration, login, and API key management:

  • POST /auth/register - Create new account
  • POST /auth/login - Login and get API credentials
  • POST /auth/refresh-keys - Refresh API keys

✅ Projects

Manage projects and their settings:

  • GET /projects - List all projects
  • POST /projects - Create a new project
  • GET /projects/{id} - Get project details
  • PUT /projects/{id} - Update project
  • DELETE /projects/{id} - Delete project
  • POST /projects/{id}/favorite - Toggle favorite status

✅ Team Management

Manage project team members and collaboration:

  • POST /projects/{id}/invite - Invite team member
  • GET /projects/{id}/members - List project members
  • PUT /projects/{id}/members/{user_id} - Update member role
  • DELETE /projects/{id}/members/{user_id} - Remove member

🚧 Notes (Coming in Phase 2)

Create and manage notes within projects:

  • GET /projects/{id}/notes - List project notes (planned)
  • POST /projects/{id}/notes - Create a new note (planned)
  • GET /notes/{id} - Get note details (planned)
  • PUT /notes/{id} - Update note (planned)
  • DELETE /notes/{id} - Delete note (planned)

✅ Tasks

Manage tasks and their workflow:

  • GET /projects/{id}/tasks - List project tasks
  • POST /projects/{id}/tasks - Create a new task
  • GET /tasks/{id} - Get task details
  • PUT /tasks/{id} - Update task
  • DELETE /tasks/{id} - Delete task
  • PATCH /tasks/{id}/status - Update task status
  • POST /tasks/{id}/start - Start task (set to in_progress)
  • POST /tasks/{id}/complete - Complete task (set to done)

🚀 Claude Code Integration

AI-powered development workflow integration:

  • POST /claude-code/projects/{id}/init - Initialize Claude Code integration
  • GET /claude-code/projects/{id}/status - Get project status with task summary
  • POST /claude-code/projects/{id}/sync - Synchronize project data
  • GET /claude-code/projects/{id}/claude-md - Get CLAUDE.md content
  • POST /claude-code/tasks/map-files - Map file changes to tasks
  • POST /claude-code/tasks/auto-update - Auto-update tasks based on development activity
  • GET /claude-code/projects/{id}/config - Get project configuration
  • PUT /claude-code/projects/{id}/config - Update project configuration

🚧 AI Features (Coming in Phase 3)

AI-powered analysis and suggestions:

  • POST /ai/analyze-project/{id} - Analyze project (planned)
  • GET /ai/analyses/{project_id} - Get analysis history (planned)
  • POST /ai/generate-tasks - Generate task suggestions (planned)

Request Format

HTTP Methods

The API uses standard HTTP methods:

  • GET: Retrieve data
  • POST: Create new resources
  • PUT: Update existing resources
  • DELETE: Remove resources
  • PATCH: Partial updates

Request Headers

Required headers for API requests:

Content-Type: application/json
Accept: application/vnd.200notes.v1+json
Authorization: Bearer YOUR_API_TOKEN

Request Body

For POST and PUT requests, send data as JSON in the request body:

{
  "name": "My New Project",
  "description": "A project for managing client deliverables",
  "visibility": "private"
}

Response Format

Success Responses

Successful requests return data in a simple, consistent format:

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My Project",
    "description": "Project description",
    "is_favorite": false,
    "owner": {
      "id": 1,
      "name": "John Doe",
      "email": "john@example.com"
    },
    "created_at": "2024-01-15T10:30:00.000000Z",
    "updated_at": "2024-01-15T10:30:00.000000Z"
  },
  "message": "Project created successfully"
}

📝 Response Format

The current API uses a simple data wrapper format. Future versions may include additional metadata and pagination information.

Error Responses

Error responses follow standard HTTP status codes:

{
  "message": "The name field is required.",
  "errors": {
    "name": [
      "The name field is required."
    ]
  }
}

Authentication Errors

{
  "message": "Unauthenticated."
}

HTTP Status Codes

The API uses standard HTTP status codes:

Code Status Description
200 OK Request successful
201 Created Resource created successfully
400 Bad Request Invalid request format
401 Unauthorized Invalid or missing authentication
403 Forbidden Insufficient permissions
404 Not Found Resource not found
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error

Pagination

Paginated Responses

List endpoints return paginated results:

{
  "success": true,
  "data": [
    { "id": 1, "name": "Project 1" },
    { "id": 2, "name": "Project 2" }
  ],
  "pagination": {
    "current_page": 1,
    "per_page": 20,
    "total": 45,
    "total_pages": 3,
    "has_next": true,
    "has_previous": false
  }
}

Pagination Parameters

Control pagination with query parameters:

  • page: Page number (default: 1)
  • per_page: Results per page (default: 20, max: 100)
  • sort: Sort field
  • order: Sort order (asc/desc)

Example: GET /projects?page=2&per_page=10&sort=name&order=asc

Filtering and Searching

Query Parameters

Filter results using query parameters:

  • search: Full-text search
  • status: Filter by status
  • created_after: Filter by creation date
  • created_before: Filter by creation date
  • assignee: Filter by assignee
  • tags: Filter by tags

Example: GET /tasks?status=in_progress&assignee=123&tags=urgent

Advanced Filtering

Use operators for complex filtering:

  • eq: Equal to
  • ne: Not equal to
  • gt: Greater than
  • gte: Greater than or equal to
  • lt: Less than
  • lte: Less than or equal to
  • in: In array
  • contains: Contains substring

Example: GET /tasks?priority[in]=high,medium&due_date[gte]=2024-01-01

Webhooks

Webhook Events

Receive real-time notifications when events occur:

  • project.created - New project created
  • project.updated - Project updated
  • project.deleted - Project deleted
  • note.created - New note created
  • note.updated - Note updated
  • task.created - New task created
  • task.updated - Task updated
  • task.completed - Task completed
  • member.invited - Team member invited
  • member.removed - Team member removed

Webhook Payload

Webhook payloads include event data:

{
  "event": "task.created",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "id": 456,
    "title": "New Task",
    "project_id": 123,
    "assignee_id": 789,
    "created_at": "2024-01-15T10:30:00Z"
  }
}

Rate Limiting

Rate Limits

API requests are subject to rate limiting:

  • Default Limit: 1000 requests per hour
  • Burst Limit: 100 requests per minute
  • Premium Limit: 5000 requests per hour

Rate Limit Headers

Response headers indicate rate limit status:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1642248000

Handling Rate Limits

When rate limits are exceeded:

  • Status Code: 429 Too Many Requests
  • Retry-After: Seconds to wait before retrying
  • Exponential Backoff: Recommended retry strategy

SDKs and Libraries

Official SDKs

We provide official SDKs for popular programming languages:

  • Claude Code CLI: npm install -g @200notes/claude-code (Featured Integration)
  • JavaScript/Node.js: npm install @200notes/js-sdk
  • Python: pip install 200notes-python
  • PHP: composer require 200notes/php-sdk
  • Ruby: gem install 200notes
  • Go: go get github.com/200notes/go-sdk

SDK Examples

Claude Code CLI

Command-line interface for Claude Code integration:

# Initialize project integration
200notes init "My Project"

# Create and manage tasks
200notes task create "Implement payment flow" --priority high --tags backend,stripe
200notes task start "Implement payment flow"
200notes task done "Implement payment flow"

# Check project status
200notes status

# Sync with 200notes dashboard  
200notes sync

JavaScript SDK

Quick examples using our JavaScript SDK:

import { TwoHundredNotes } from '@200notes/js-sdk';

const client = new TwoHundredNotes('your-api-token');

// Create a project
const project = await client.projects.create({
  name: 'My API Project',
  description: 'Created via API'
});

// Create a note
const note = await client.notes.create(project.id, {
  title: 'API Documentation',
  content: '# Getting Started\n\nThis is my first API note!'
});

// List tasks
const tasks = await client.tasks.list(project.id, {
  status: 'in_progress',
  assignee: 'me'
});

Common Use Cases

Integration Scenarios

Popular ways to integrate with 200Notes:

  • Claude Code Integration: Intelligent task tracking during AI-assisted development
  • Project Management Tools: Sync tasks between systems
  • Documentation Sites: Export notes to static sites
  • Reporting Dashboards: Create custom analytics
  • Mobile Apps: Build custom mobile experiences
  • Automation Scripts: Automate repetitive tasks
  • Backup Systems: Create automated backups

Workflow Examples

Example workflows using the API:

  • Claude Code Hooks: Automatically track task progress during development sessions
  • Smart File Mapping: Map code changes to relevant tasks using AI algorithms
  • Daily Standup Bot: Automatically create daily standup notes
  • Issue Tracking: Create tasks from support tickets
  • Meeting Notes: Auto-generate meeting notes from calendar events
  • Progress Reports: Generate weekly progress reports
  • Content Migration: Import content from other systems

Best Practices

Performance Tips

🚀 Performance Tips

  • Use pagination for large datasets
  • Cache responses when appropriate
  • Use webhooks instead of polling
  • Batch operations when possible
  • Implement exponential backoff for retries
  • Use compression for large payloads

Security Best Practices

🔒 Security Tips

  • Store API keys securely
  • Use HTTPS for all requests
  • Rotate API keys regularly
  • Implement proper error handling
  • Validate all input data
  • Use least privilege access

Testing

API Testing Tools

Tools for testing API integration:

  • Postman: Interactive API testing
  • curl: Command-line testing
  • Insomnia: API client with environment management
  • HTTPie: Human-friendly HTTP client

Test Environment

We provide a sandbox environment for testing:

  • Sandbox URL: https://sandbox.200notes.com/api/v1
  • Test Data: Pre-populated with sample data
  • Rate Limits: Relaxed limits for testing
  • Reset: Data resets nightly

Support and Resources

Getting Help

Resources for API developers:

  • API Documentation: Complete endpoint reference
  • SDK Documentation: Language-specific guides
  • Code Examples: Sample implementations
  • Community Forum: Developer discussions
  • Support Tickets: Direct technical support

Stay Updated

Keep up with API changes:

  • Changelog: Track API updates
  • Developer Newsletter: Monthly updates
  • Breaking Changes: Advance notice of changes
  • Status Page: Real-time API status

🔧 Ready to Integrate?

Get started with the 200Notes API by reading our authentication guide and exploring our endpoint reference.