WakaTime Custom Rules API

User and organization custom-rule definitions for time attribution.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

wakatime-custom-rules-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: WakaTime Commits Custom Rules API
  version: v1
  description: 'WakaTime API v1 provides automated time-tracking analytics for software developers. IDE

    plugins (VS Code, JetBrains, Vim, Emacs, Sublime, Xcode, Visual Studio, Eclipse, Zed, and

    many more) send "heartbeats" describing the file, project, language, branch, and editor a

    developer is working in. WakaTime aggregates that data into dashboards, summaries, stats,

    goals, leaderboards, and team/org dashboards.


    Authentication is via OAuth 2.0 (authorize / token / revoke) with scopes such as

    `read_summaries`, `read_stats`, `read_goals`, `read_heartbeats`, `write_heartbeats`,

    `read_orgs`, `write_orgs`, and `email`, or via API Key (HTTP Basic auth or `?api_key=`)

    for personal use. The default rate limit is fewer than 10 requests per second on average

    over any 5-minute window.


    All responses follow the pattern `{"data": ...}` for successful requests or

    `{"error": "message"}` for errors.

    '
  contact:
    name: WakaTime Support
    url: https://wakatime.com/contact
    email: support@wakatime.com
  termsOfService: https://wakatime.com/terms
  license:
    name: WakaTime Terms of Service
    url: https://wakatime.com/terms
  x-generated-from: documentation
  x-source-url: https://wakatime.com/developers
  x-last-validated: '2026-05-30'
servers:
- url: https://wakatime.com/api/v1
  description: WakaTime production API
- url: https://api.wakatime.com/api/v1
  description: WakaTime alternate hostname
security:
- oauth2: []
- apiKey: []
- bearerAuth: []
tags:
- name: Custom Rules
  description: User and organization custom-rule definitions for time attribution.
paths:
  /users/current/custom_rules:
    get:
      operationId: listCustomRules
      summary: List Custom Rules
      description: Returns the authenticated user's custom time-attribution rules.
      tags:
      - Custom Rules
      responses:
        '200':
          description: Custom rules.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CustomRule'
              examples:
                ListCustomRules200Example:
                  summary: Default listCustomRules 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: 5f8a2c7f-8b3a-4c2c-9b3f-1d2c4f5b6a7c
                      name: WakaTime
                      if_match: {}
                      then_set: {}
                      created_at: '2026-05-30T12:34:56Z'
                      modified_at: '2026-05-30T12:34:56Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: putCustomRules
      summary: Put Custom Rules
      description: Creates or updates one or more custom rules.
      tags:
      - Custom Rules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/CustomRuleInput'
            examples:
              PutCustomRulesRequestExample:
                summary: Default putCustomRules request
                x-microcks-default: true
                value:
                - id: 5f8a2c7f-8b3a-4c2c-9b3f-1d2c4f5b6a7c
                  name: WakaTime
                  if_match: {}
                  then_set: {}
      responses:
        '200':
          description: Updated custom rules.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/current/custom_rules/{rule_id}:
    delete:
      operationId: deleteCustomRule
      summary: Delete Custom Rule
      description: Deletes a single custom rule.
      tags:
      - Custom Rules
      parameters:
      - name: rule_id
        in: path
        required: true
        schema:
          type: string
        example: example
      responses:
        '204':
          description: Deleted.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /users/current/custom_rules_progress:
    get:
      operationId: getCustomRulesProgress
      summary: Get Custom Rules Progress
      description: Returns the status of any background job reprocessing the user's heartbeats against current custom rules.
      tags:
      - Custom Rules
      responses:
        '200':
          description: Job progress.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: abortCustomRulesProgress
      summary: Abort Custom Rules Progress
      description: Aborts the background job currently reapplying custom rules.
      tags:
      - Custom Rules
      responses:
        '204':
          description: Aborted.
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    CustomRuleInput:
      type: object
      properties:
        id:
          type: string
          nullable: true
          example: 5f8a2c7f-8b3a-4c2c-9b3f-1d2c4f5b6a7c
        name:
          type: string
          example: WakaTime
        if_match:
          type: object
          additionalProperties: true
          example: {}
        then_set:
          type: object
          additionalProperties: true
          example: {}
    CustomRule:
      allOf:
      - $ref: '#/components/schemas/CustomRuleInput'
      - type: object
        properties:
          created_at:
            type: string
            format: date-time
            example: '2026-05-30T12:34:56Z'
          modified_at:
            type: string
            format: date-time
            example: '2026-05-30T12:34:56Z'
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authorization code flow.
      flows:
        authorizationCode:
          authorizationUrl: https://wakatime.com/oauth/authorize
          tokenUrl: https://wakatime.com/oauth/token
          refreshUrl: https://wakatime.com/oauth/token
          scopes:
            email: Read user email.
            read_summaries: Read coding-activity summaries.
            read_stats: Read aggregate stats.
            read_goals: Read coding goals.
            read_heartbeats: Read raw heartbeats.
            write_heartbeats: Send heartbeats.
            read_orgs: Read organization data.
            write_orgs: Modify organization data.
        implicit:
          authorizationUrl: https://wakatime.com/oauth/authorize
          scopes:
            email: Read user email.
            read_summaries: Read coding-activity summaries.
            read_stats: Read aggregate stats.
            read_goals: Read coding goals.
            read_heartbeats: Read raw heartbeats.
            write_heartbeats: Send heartbeats.
            read_orgs: Read organization data.
            write_orgs: Modify organization data.
    apiKey:
      type: http
      scheme: basic
      description: HTTP Basic with the WakaTime API key as the username. Alternatively, pass `?api_key=...` as a query parameter.
    bearerAuth:
      type: http
      scheme: bearer
      description: OAuth access token in the Authorization header as `Bearer waka_tok_...`.