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

# Mocoapp MOCO API

MOCO is a business operating system for service companies - agencies, consultancies, and freelancers - covering time tracking, projects, invoices, deals, and CRM in a single tool. The MOCO API exposes 142 endpoints under https://{subdomain}.mocoapp.com/api/v1 covering activities, comments, companies, contacts, deals, invoices, invoice payments, and the rest of the MOCO data model. Authentication uses a personal API token sent in the Authorization header.

## For AI agents

Run service-business operations in MOCO - track time, manage projects, send invoices, and update deals - across 142 endpoints under api/v1.

## Scope

Does not handle payment card processing, payroll, or general ledger accounting - use for MOCO time tracking, invoicing, deals, and CRM only.

## Capabilities

- Track time on projects through /activities, including start_timer, stop_timer, and bulk activity entry
- Send and reconcile invoices via /invoices and record payments through /invoice_payments
- Manage company and contact records under /companies and /contacts
- Move opportunities through pipeline stages with /deals and /deal_categories
- Comment on records through /comments and `/comments/bulk` for asynchronous collaboration
- Disregard or bulk-update activities to correct timesheets at month end

## Use cases

### Automated time tracking for consultants

Consultancies log billable time in MOCO by calling `/activities/{id}/start_timer` when work begins and `/activities/{id}/stop_timer` when it ends, or by submitting batched entries through `/activities/bulk` for retroactive logging. Combined with `/activities/disregard` for cleaning up duplicate rows, this gives a complete time-tracking surface that maps directly onto invoiceable work.

Example prompt: Call `/activities/{id}/start_timer` when the user joins a project meeting, then `/activities/{id}/stop_timer` when they leave, and confirm the duration was logged.

### Invoice issuance and payment reconciliation

Service businesses generate invoices from booked activities via /invoices, then capture payments through /invoice_payments to keep the receivables ledger current. The pairing means the same MOCO project can flow from time-tracked work into a sent invoice and a recorded payment without leaving the platform.

Example prompt: POST a new invoice to /invoices for project ID 123 covering this month's activities, then record the matching payment on /invoice_payments when the customer pays.

### Deal pipeline reporting

Agency leadership uses /deals and /deal_categories to inspect the sales pipeline, group opportunities by stage, and forecast bookings. Combined with /companies and /contacts, the deal endpoints let an external dashboard render the same pipeline view that account managers see inside MOCO.

Example prompt: GET /deals filtered by category and status='open', sum the deal values per pipeline stage, and return a forecast table.

### Agent integration via Jentic

An AI assistant for an agency can search Jentic for 'create a MOCO invoice', load the /invoices schema, and execute the call without exposing the personal API token. The agent can then chain into /invoice_payments and /comments to close out the billing cycle in one workflow.

Example prompt: Search Jentic for 'create a MOCO invoice', load the /invoices schema, and execute it with the project ID, line items, and recipient company.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/activities/{id}/start_timer` | Start a timer on an activity |
| POST | `/activities/{id}/stop_timer` | Stop a running activity timer |
| POST | `/activities/bulk` | Bulk-create activities |
| POST | `/activities/disregard` | Mark activities as disregarded |
| GET | `/companies` | List MOCO companies |
| GET | `/comments` | List comments across MOCO records |
| POST | `/comments/bulk` | Bulk-create comments |

## Key resources

- **Activities** — Track time entries, start and stop timers, and run bulk activity operations
- **Invoices** — Issue and manage customer invoices
- **InvoicePayments** — Record and reconcile payments against invoices
- **Companies** — Manage company records in the MOCO CRM
- **Contacts** — Manage individual contact records linked to companies
- **Deals** — Track sales opportunities through pipeline stages
- **DealCategories** — Group deals by category for reporting
- **Comments** — Add comments to MOCO records, including bulk comment operations

## Why Jentic

- **Setup:** Wiring the MOCO API by hand means handling its Authorization-header token auth, resolving your account subdomain into the host, and coding timer, invoice, and CRM calls yourself. Through Jentic you install once, import the MOCO API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** MOCO puts the activity id in the URL path (`/activities/{id}/start_timer`), so a rule can pin your agent to one activity's timers: it can start and stop that activity's timer. You choose the operations it may call, so bulk activity changes and disregard are not included unless you add them.
- **Credential handling:** Your MOCO 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 'start a MOCO time-tracking timer' or 'list companies', and Jentic returns the matching MOCO operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Clockify API** — Free-tier time tracking platform with project and team reporting
- **Toggl Track API** — Lightweight time-tracking-only API
- **Xero Accounting API** — General ledger and financial reporting that pairs with MOCO invoicing

## FAQ

### What authentication does the MOCO API use?

MOCO uses a personal API token sent in the Authorization header on each request to https://{subdomain}.mocoapp.com/api/v1. Through Jentic the token and the per-tenant subdomain live in your Jentic One instance and are injected automatically; the agent never sees the raw token.

### Can I start and stop time tracking timers via the API?

Yes. POST to `/activities/{id}/start_timer` to start the timer on an activity and `/activities/{id}/stop_timer` to stop it. For backdated entries use `/activities/bulk` and clean up duplicates with `/activities/disregard.`

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

MOCO does not declare rate limits in the OpenAPI specification. Treat HTTP 429 responses as the back-off signal and consult the MOCO API documentation at hundertzehn.github.io/mocoapp-api-docs for current per-tenant guidance.

### How do I issue a MOCO invoice through Jentic?

Run pip install jentic, search Jentic for 'create a MOCO invoice', load the /invoices schema, and execute it with the project ID and line items. Jentic injects the personal API token from the vault.

### Can I bulk-create activities and comments?

Yes. `/activities/bulk` accepts an array of activity entries and `/comments/bulk` accepts an array of comments, both in a single request. These are the recommended endpoints for migrations and backfills.

### Is the MOCO API free to use?

MOCO is a paid SaaS for service companies; API access is bundled with a MOCO subscription. There is no public free tier. Get started with Jentic One, the self-hosted execution layer.

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

Yes. Because you run Jentic One yourself, your own rules decide which MOCO operations and which stored token the agent may use. MOCO puts the activity id in the URL path, as in `/activities/{id}/start_timer` and `/activities/{id}/stop_timer`, so a rule can pin the agent to starting and stopping one activity's timer while leaving bulk activity creation via `/activities/bulk` and `/activities/disregard` out of scope unless you explicitly allow them. The same control lets you decide whether the agent can reach invoice, deal, or CRM operations such as /invoices, /invoice_payments, and /companies.
