Let's get started

Welcome to the Mojave Developer Documentation 👋

Mojave is a developer-friendly time tracking and invoicing platform, built for modern teams and freelancers. This documentation will help you understand how Mojave works under the hood, how to integrate with it, and how to build on top of our API and infrastructure.

Whether you're building internal tools, syncing data, or self-hosting Mojave — you're in the right place.

Prerequisites

Before diving into the API or integrations, make sure you have:

  • A Mojave account

  • A registered API key or OAuth client

  • Basic familiarity with RESTful APIs

  • curl, Postman, or a similar tool for testing

JSON Structure

Below is a sample response of a time entry object returned from the API. This structure outlines the key fields you'll interact with when creating, updating, or retrieving time logs.

Each timentry is linked to a user and a project, and optionally includes task information, notes, duration (in seconds), and billing status. All timestamps are in ISO 8601 UTC format.

{
  "id": "te_4382hfk8",
  "user_id": "usr_j9f8sdh3",
  "project_id": "prj_0928dfj1",
  "task": "Design",
  "notes": "Landing page wireframes",
  "start_time": "2025-04-10T09:30:00Z",
  "end_time": "2025-04-10T11:00:00Z",
  "duration": 5400,
  "billable": true
}

Authentication Overview

Mojave uses token-based authentication to secure all API requests. You must include an access token in the Authorization header of every request to the API.

We currently support two authentication methods:

  1. Personal API Tokens – Great for internal tools, automation scripts, or CLI usage.

  2. OAuth2 – Recommended for user-facing apps, integrations, or third-party plugins.

Type

Use Case

Header Example

API Token

Backend integrations or CLI usage

Authorization: Bearer YOUR_API_TOKEN

OAuth2

User-based apps or plugins

Standard OAuth2 flow with access + refresh tokens

Example API Request

Here’s how to fetch your own user data using an API token:

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


Response:

{
  "id": "usr_8shf62xa",
  "name": "Ada Lovelace",
  "email": "ada@mojave.dev",
  "role": "admin",
  "workspace_id": "ws_912hk3nf"
}

Was this helpful?

Was this helpful?

Was this helpful?

Table of content

Table of content

Table of content

Introducion

Introducion