This Quickstart will guide you through the basic steps of authenticating, creating a project, tracking time, and sending an invoice — all via the API.

By the end of this guide, you’ll be able to programmatically log time and invoice a client.

Prerequisites

Before you begin, make sure you have:

  • A Mojave account

  • An API token

  • A tool for making HTTP requests (Postman, Insomnia, or curl)

  • Basic knowledge of REST APIs

Authenticate Your Request

All API calls must include your token in the Authorization header.

curl -X GET https://api.mojaveapp.com/v1/me \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Response:

{
  "id": "usr_f9n3hda8",
  "name": "Grace Hopper",
  "workspace_id": "ws_2348dkf9"
}

Save the workspace_id — you'll need it later.

Create a New Client

curl -X POST https://api.mojaveapp.com/v1/clients \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Inc.",
    "email": "finance@acme.com"
  }'

Response:

{
  "id": "cli_1a2b3c4d",
  "name": "Acme Inc."
}

Create a Project

Now let’s create a project for that client:

curl -X POST https://api.mojaveapp.com/v1/projects \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Website Redesign",
    "client_id": "cli_1a2b3c4d",
    "rate": 80
  }'

Track Time

curl -X POST https://api.mojaveapp.com/v1/time-entries \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "project_id": "prj_abcd1234",
    "start_time": "2025-04-10T09:00:00Z",
    "end_time": "2025-04-10T10:30:00Z",
    "notes": "Kickoff meeting"
  }'

Pro Tip: You can omit end_time to start a live running timer.

Generate an Invoice

Once time is tracked, you can generate an invoice for all unbilled entries:

curl -X POST https://api.mojaveapp.com/v1/invoices \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "cli_1a2b3c4d",
    "project_id": "prj_abcd1234",
    "due_date": "2025-04-15"
  }'

Send Invoice via Email

curl -X POST https://api.mojaveapp.com/v1/invoices/inv_12345/send \
  -H "Authorization: Bearer YOUR_API_TOKEN"

✉️ Emails will be sent from invoices@mojaveapp.com unless you configure a custom sender.

Summary

Action

Endpoint

Get your account

GET /me

Create a client

POST /clients

Create a project

POST /projects

Log time

POST /time-entries

Create an invoice

POST /invoices

Send invoice (email)

POST /invoices/:id/send

Was this helpful?

Was this helpful?

Was this helpful?

Previous

Environments

Previous

Environments

Previous

Environments

Next

Users

Next

Users

Next

Users

Table of content

Table of content

Table of content

Quickstart

Quickstart