For Agents
Track time, manage projects, generate invoices, and run reports inside a My Hours workspace using a bearer access token minted via /api/Tokens/login.
Use for: I need to log 2 hours against project Acme today, Generate an invoice for client 7723 covering last month's billable hours, List all active projects assigned to a specific user, Find the time logs for project 4421 in the last 7 days
Not supported: Does not handle payroll, expense reimbursement, or HR records - use for project time tracking, invoicing, and consultancy reporting only.
Jentic publishes the only available OpenAPI specification for MyHours API, keeping it validated and agent-ready. My Hours is a time tracking and project management platform for consultancies, agencies, and freelancers. The API spans 341 endpoints across accounts, clients, projects, tasks, logs (time entries), tags, teams, users, invoices, reports, integrations (Jira, Paragon), shortcuts, and report configurations. Authentication is bearer-style - clients call POST /api/Tokens/login to mint an access token, then send it in the Authorization header against api2.myhours.com.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the MyHours API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fmyhours.com%2Fmyhours" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fmyhours.com%2Fmyhours" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with MyHours API.
Mint and refresh access tokens via POST /api/Tokens/login and POST /api/Tokens/refresh
Maintain the project portfolio across /api/Projects with client linkage, billable rates, and archival
Log billable and non-billable time entries against tasks via the /api/Logs surface, including attachments
Generate and manage invoices through /api/Invoices/{invoiceId} for client billing
GET STARTED
Configure custom fields, tags, and teams via /api/Accounts and /api/Tags and /api/Teams
Run report configurations through /api/ReportConfigurations for recurring analytics deliveries
Sync data to and from Jira via /api/Integration/Jira and through Paragon via /api/Integration/paragon
Patterns agents use MyHours API for, with concrete tasks.
★ Automated Time Logging from Calendar
Convert calendar events into My Hours time logs by parsing meeting metadata and posting against /api/Logs. The integration mints a token via /api/Tokens/login, looks up the matching project and task, and writes the log with start, end, and notes. This eliminates manual end-of-day timesheet entry for consultants whose work is already on a calendar.
Mint an access token via POST /api/Tokens/login, then POST a time log entry against project 4421 task 992 for the 2-hour client meeting starting at 10:00.
Monthly Invoice Generation
Generate client invoices at the end of each billing cycle by reading time logs and creating invoice records on /api/Invoices. The integration aggregates billable hours per client, builds the invoice payload, and writes it via the Invoices surface for review and send. /api/Invoices/{invoiceId} GET/PUT support iteration on the draft before approval.
Aggregate billable logs for client 7723 between 2026-05-01 and 2026-05-31, then create an invoice and review it via GET /api/Invoices/{invoiceId}.
Project Portfolio Sync
Keep the My Hours project portfolio in sync with a downstream PMO or accounting system by reading and writing /api/Projects/{projectId}. The integration creates new projects when deals close in the CRM, archives projects when they wrap, and updates billable rates when a contract is renegotiated.
Create a new project for client 7723 via the Projects surface, then assign three users by updating the project's team membership.
Custom Fields and Reporting
Define account-level custom fields via /api/Accounts/customfields to capture practice-area, region, or matter-number metadata on logs and projects. Pair with /api/ReportConfigurations to schedule recurring slices of billable hours by custom field. This turns My Hours into a flexible analytics surface without exporting data to a separate BI tool.
Call POST /api/Accounts/customfields to add a 'matter-number' field, then create a report configuration that groups billable hours by that field weekly.
AI Agent Time-Tracking Assistant
An AI agent acts as a personal time-tracking assistant for a consultant. It searches Jentic for My Hours operations, loads the login, project lookup, and log creation schemas, and chains them to take a natural-language description of work done and produce a posted time log. Jentic isolates the bearer token so the agent never holds the workspace secret.
Search Jentic for 'log billable hours in MyHours', execute POST /api/Tokens/login, look up the project, and POST the time log for the description provided.
341 endpoints — jentic publishes the only available openapi specification for myhours api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/api/Tokens/login
Mint an access token
/api/Tokens/refresh
Refresh an existing access token
/api/Projects/{projectId}
Retrieve a project with client data
/api/Logs/{logId}
Retrieve a time log entry
/api/Invoices/{invoiceId}
Get an invoice by ID
/api/Invoices/{invoiceId}
Update an invoice
/api/Accounts/customfields
Get account custom field definitions
/api/Tasks/{taskId}
Delete a task
/api/Tokens/login
Mint an access token
/api/Tokens/refresh
Refresh an existing access token
/api/Projects/{projectId}
Retrieve a project with client data
/api/Logs/{logId}
Retrieve a time log entry
/api/Invoices/{invoiceId}
Get an invoice by ID
/api/Invoices/{invoiceId}
Update an invoice
/api/Accounts/customfields
Get account custom field definitions
/api/Tasks/{taskId}
Delete a task
What agents get from Jentic-routed access to this vendor.
Setup
Wiring MyHours by hand means implementing its API-key login against api2.myhours.com, minting and refreshing access tokens, and threading the Authorization header through every one of its many time-tracking calls yourself. Through Jentic you install once, import MyHours from the API Directory, store the key once, and your agent calls it.
Permission scoping
MyHours puts the resource id in the URL path (/api/Invoices/{invoiceId}, /api/Tasks/{taskId}), so a rule can pin your agent to one invoice or task and nothing else. You choose the operations it may call, so destructive ones like deleting a task are not included unless you add them.
Credential isolation
Your MyHours key and minted tokens are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'log billable hours in MyHours' or 'draft an invoice', and Jentic returns the matching MyHours operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using MyHours API through Jentic.
Why is there no official OpenAPI spec for MyHours API?
My Hours does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call MyHours API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.
What authentication does the MyHours API use?
The MyHours API uses bearer-style auth: call POST /api/Tokens/login with credentials to mint an access token, then send it in the Authorization request header as `Bearer YOUR-TOKEN-HERE`. Through Jentic, the username/password is stored in the encrypted vault and the login + header injection runs server-side per request.
Can I log billable hours with the MyHours API?
Yes. After minting a token, write time entries against the /api/Logs surface, attaching them to a project and task. You can later GET /api/Logs/{logId} or DELETE /api/Logs/{logId} to retrieve or remove an entry, including attachment files via /attachment/{attachmentId}.
How do I generate an invoice through Jentic?
Search Jentic for 'create an invoice in MyHours', load the /api/Invoices schema, and execute the create call with the client and time-log scope. Retrieve and review with GET /api/Invoices/{invoiceId} and apply edits via PUT /api/Invoices/{invoiceId} before sending.
Does MyHours integrate with Jira?
Yes. The API exposes /api/Integration/Jira/Delete and /api/Integration/Jira/DeleteImportedData to manage the Jira link, alongside Paragon-based integration endpoints under /api/Integration/paragon for broader connector support.
What are the rate limits for the MyHours API?
The published spec does not document explicit rate limits. Treat the API as throttled in production, implement exponential backoff on 429 responses, and reuse access tokens via /api/Tokens/refresh rather than logging in for every request.
Can I limit what my agent is allowed to do with the MyHours API?
Yes. Because you run Jentic One yourself, your own rules decide which MyHours operations and credentials the agent may use. MyHours puts the resource id in the URL path, such as /api/Invoices/{invoiceId} and /api/Tasks/{taskId}, so you can pin the agent to a single invoice or task and nothing else. You also choose the exact operations it can call, so a destructive one like DELETE /api/Tasks/{taskId} is off limits unless you explicitly add it.