canonical: https://jentic.com/apis/myintervals.com/myintervals

# Myintervals Intervals API

The Intervals API reads and writes the data in an Intervals account: projects, tasks, time entries, timers, expenses, invoices, payments, clients, and people. It covers the full loop from logging billable hours against a task to building an invoice from line items and recording the payment against it. Collection endpoints filter by fields such as projectid, personid, clientid, and date ranges, page with limit and offset, and report the total match count in listcount. Responses come back as JSON or XML depending on the Accept header, and access follows the signed-in user's role.

## For AI agents

Log time against Intervals tasks, run timers, track expenses, open and update tasks, and build invoices with line items and payments, filtered by project, client, or person.

## Scope

Does not run payroll, process card payments, or sync calendars. Use for Intervals time tracking, tasks, and invoicing only.

## Capabilities

- Log billable or non-billable time against a task or project with worktypeid, personid, date, and hours
- Open, assign, and update tasks with status, priority, milestone, due date, and owner
- Start and stop timers for a person and convert the tracked time into time entries
- Build invoices from line items with tax settings and terms, then record payments against them
- Record project expenses with date and fee for later billing
- Report time by project, client, person, or date range using datebegin, dateend, and billable filters
- Check the account's daily API quota and reset time with GET /quota

## Use cases

### Agent time logging through Jentic

A developer's agent, connected to Intervals through Jentic, turns a daily summary of work into time entries. It looks up the right task with the task search, reads the valid worktypeid values for the project, and posts each entry with personid, date, time, and billable set. Hours land on the right task and project without anyone opening the timesheet screen.

Example prompt: Call GET /task with projectid=1234 and title='Homepage redesign' to find the task, GET /projectworktype with projectid=1234 to get a worktypeid, then POST /time with worktypeid, personid, taskid, date='2026-11-09', time=3, and billable=true

### Client billing run

At month end, an agent pulls approved billable time for a project with datebegin, dateend, and billable filters, creates an invoice with projectid, date, termid, and title, and adds invoice items with name and amount. When the client pays, it records the payment with projectid, amount, date, typeid, and the invoiceid so the invoice status stays accurate.

Example prompt: Call POST /invoice with projectid=1234, date='2026-11-30', termid from GET /invoiceterm, and title='November services', then POST /invoiceitem with the new invoiceid, name='Development', and amount=4200

### Task triage and follow-up

A project lead asks an agent which tasks are due this week. The agent filters the task list by projectid, assigneeid, and a due-date window, reads task status and priority values from the taskstatus and taskpriority lists, and updates tasks or adds task notes where follow-up is needed.

Example prompt: Call GET /task with projectid=1234, dateduebegin='2026-11-09', and datedueend='2026-11-15', then POST /tasknote with taskid, note='Blocked on client feedback', and public=false for each blocked task

### Project expense tracking

Teams that bill expenses alongside hours need them recorded against the right project. An agent posts each expense with projectid, date, expense, and fee, and lists expenses by project or person with date filters when preparing a client report or invoice.

Example prompt: Call POST /expense with projectid=1234, date='2026-11-09', expense='Stock photography license', and fee=79, then GET /expense with projectid=1234 and datebegin='2026-11-01' to confirm it is listed

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/time` | Log a time entry |
| GET | `/time` | List time entries with filters |
| POST | `/task` | Add a task |
| GET | `/task` | List tasks with filters |
| POST | `/timer` | Add a timer |
| POST | `/invoice` | Add an invoice |
| POST | `/payment` | Record a payment |
| GET | `/quota` | Get API quota usage |

## Key resources

- **Time** — Time entries logged against tasks and projects with work type and billable flag
- **Tasks** — Tasks with status, priority, assignee, milestone, and due date, plus task notes
- **Projects** — Projects with clients, managers, budgets, teams, modules, and work types
- **Invoices** — Invoices, invoice items, invoice notes, terms, and payments
- **Timers** — Running timers tied to a person and optionally a task
- **People and clients** — Users, groups, contact details, and client records

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 36 / 100
- **Maturity:** Non-Ready
- **Dimensions:**
  - Foundational Compliance: 70 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 37 / 100
  - Agent Usability: 77 / 100
  - Security: 10 / 100
  - AI Discoverability: 61 / 100
- **View full report:** https://jentic.com/apis/myintervals.com/myintervals/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Intervals by hand means passing the API token as a Basic auth username with a dummy password, setting the Accept header to get JSON instead of XML, and formatting UTC date-times with a space rather than a T. Through Jentic you install once, import Intervals from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Intervals record ids sit in the URL path, as in `/task/{id}`/ and `/invoice/{id}`/, so a rule can limit your agent to the operations it needs and to specific records. You choose the operations it may call, so destructive ones like deleting a time entry or an invoice are not included unless you add them.
- **Credential handling:** Your Intervals API token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'log billable hours' or 'create an invoice', and Jentic returns the matching Intervals operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Toggl Track API** — Time tracking with projects, clients, and reports
- **Clockify API** — Time tracker with timesheets, projects, and expense tracking
- **Asana API** — Work management for tasks, projects, and portfolios

## FAQ

### What authentication does the Intervals API use?

The Intervals API uses HTTP Basic authentication per its OpenAPI spec: your Intervals API token goes in as the username and any non-empty string as the password. The token is under My Profile in the Intervals web app, and calls run with that user's role. Through Jentic, the token is stored once by your own Jentic One instance and injected at call time.

### Can I log time to a specific task with the Intervals API?

Yes. POST /time requires worktypeid, personid, date, time, and billable, and accepts taskid, projectid, moduleid, and description. Look up valid work types for the project with GET /projectworktype first, since the worktypeid must be one the project allows.

### What are the rate limits for the Intervals API?

The spec says each account has a daily request quota rather than a per-second limit, and does not state the number. Call GET /quota to see current usage and the next reset time in GMT; that call does not count against the quota. See https://www.myintervals.com/api/ for details.

### How do dates work in Intervals API requests?

Calendar dates use YYYY-MM-DD in the account's local calendar. Date-times use YYYY-MM-DD HH:MM:SS in UTC with a space between date and time, not a T or a Z suffix, and the space is encoded as %20 in query strings. Set the Accept header to application/json, since responses default to XML without it.

### How do I log hours to Intervals through Jentic?

Install Jentic One with `curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh`, import the Intervals API from the API Directory, and store your API token once. Your agent searches for 'log time to an Intervals task', gets the time-entry operation with its input schema, and calls POST /time. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### Can I limit what my agent is allowed to do with the Intervals API?

Yes. For a timesheet assistant, write a rule that allows GET /task, GET /projectworktype, and POST /time, so the agent can find tasks and log hours but cannot touch invoices, payments, or people records, and cannot delete anything. Add GET /time if you also want it to read back what it logged.
