Announcing Keito API v2

Keito Engineering
5 January 2026 · 2 min read

API v2 brings a new RESTful design, webhook support, and improved rate limits. Here's what's new and how to migrate.

Engineering

Announcing Keito API v2

TL;DR — API v2 is a complete redesign: predictable RESTful routes, webhook support for real-time integrations, 10x higher rate limits, and structured error responses. v1 remains supported for 12 months.

We’ve been working on a major overhaul of the Keito API and today we’re thrilled to announce that API v2 is now available in beta.

What’s New

  • RESTful resource design — predictable URLs and standard HTTP methods throughout
  • Webhook support — get notified in real-time when time entries are created, updated, or approved
  • Improved rate limits — 1,000 requests per minute for all plans, up from 100
  • Better error responses — structured JSON errors with actionable messages

New Endpoint Structure

v2 follows a consistent pattern for all resources:

GET    /v2/time-entries          # List with filtering & pagination
POST   /v2/time-entries          # Create
GET    /v2/time-entries/:id      # Get single
PATCH  /v2/time-entries/:id      # Update
DELETE /v2/time-entries/:id      # Delete

Here’s what a typical API call looks like:

curl -X GET https://api.keito.ai/v2/time-entries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"project_id": "proj_abc123", "from": "2026-01-01", "to": "2026-01-31"}'

The response now includes pagination metadata:

{
  "data": [
    {
      "id": "te_xyz789",
      "user_id": "usr_abc123",
      "project_id": "proj_abc123",
      "duration_minutes": 120,
      "description": "API endpoint implementation",
      "date": "2026-01-15",
      "status": "approved"
    }
  ],
  "pagination": {
    "page": 1,
    "per_page": 25,
    "total": 142,
    "total_pages": 6
  }
}

Webhook Events

You can now subscribe to events and receive POST requests to your endpoint:

EventDescription
time_entry.createdA new time entry was logged
time_entry.updatedAn existing entry was modified
time_entry.approvedAn entry was approved by a manager
invoice.createdA new invoice was generated
invoice.sentAn invoice was sent to a client

Security — Every webhook request includes an X-Keito-Signature header with an HMAC-SHA256 signature. Always verify this before processing the payload.

Structured Error Responses

v1 returned plain text errors. v2 gives you structured JSON you can parse programmatically:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "duration_minutes must be a positive integer",
    "field": "duration_minutes",
    "docs_url": "https://keito.ai/docs/api/time-entries#create"
  }
}

Migration Path

API v1 will continue to work for at least 12 months. We’ve published a migration guide to help you transition at your own pace. The key changes:

  1. All endpoints move from /api/ to /v2/
  2. Authentication header changes from X-API-Key to Authorization: Bearer
  3. Response envelopes now use data and pagination keys
  4. Date formats standardised to ISO 8601

Getting Started

Head to the developer section of your Keito dashboard to generate v2 API keys and explore the interactive documentation.