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?

Previous

Environments

Next

Users

Table of content

Table of content

Quickstart

Quickstart