Good morning!

Checked.day API

Simple JSON API for habit tracking  ยท  โ—‹ Not signed in

Your data lives in the cloud

To access your habits via the API, first create an account by adding your email. Your data syncs across all your devices and is accessible here.

Quick Start

The API uses cookie-based sessions. If you're logged in to Checked.day, you can click here to see your data directly in your browser.

For programmatic access, use the endpoints below. All responses are JSON.

Get All Data

GET /api.php Try it โ†’

Returns all your entries and settings in a single request.

curl https://checked.day/api.php

Response structure:

{
  "entries": [
    {
      "date": "2026-01-06",
      "habits": {
        "dishes": "21:15",
        "bedtime": "22:30"
      }
    }
  ],
  "settings": {
    "name": "Gabriel",
    "theme": "ghibli",
    "dayStartHour": 6,
    "habits": [...],
    "points": 150,
    "gems": 5
  }
}

Log a Habit

POST /api.php

Mark a habit as complete for a specific date. The time field records when you completed it (HH:MM format).

curl -X POST https://checked.day/api.php \
  -H "Content-Type: application/json" \
  -H "X-Requested-With: XMLHttpRequest" \
  -d '{"date":"2026-01-06","habitId":"dishes","time":"21:15"}'

To uncheck a habit, set time to null.

Update Settings

POST /api.php

Update your name, theme, or habit configuration. Only include fields you want to change.

curl -X POST https://checked.day/api.php \
  -H "Content-Type: application/json" \
  -H "X-Requested-With: XMLHttpRequest" \
  -d '{"settings":{"name":"Gabriel","theme":"terminal"}}'

Delete Entry

DELETE /api.php?date=YYYY-MM-DD

Remove all habit data for a specific date.

curl -X DELETE "https://checked.day/api.php?date=2026-01-06" \
  -H "X-Requested-With: XMLHttpRequest"

Authentication

The API uses cookie-based sessions. In a browser, you're already authenticated after logging in.

For curl or scripts, you can persist cookies across requests:

curl -c cookies.txt -b cookies.txt https://checked.day/api.php

State-changing requests (POST, DELETE) require the header X-Requested-With: XMLHttpRequest for CSRF protection.

Personal API Token

For read-only access from other apps (iOS Shortcuts, Scriptable, widgets), you can generate a personal API token. This creates a unique URL that returns your data without authentication.

Generate Token

curl -X POST https://checked.day/api.php?action=generate-api-token \
  -H "X-Requested-With: XMLHttpRequest" \
  -b cookies.txt

Returns your token and ready-to-use URL: https://checked.day/api.php?token=YOUR_TOKEN

Use Token

curl https://checked.day/api.php?token=YOUR_TOKEN

Token access is read-only (GET requests only). POST/DELETE operations require full authentication.

Revoke Token

If your token is compromised, revoke it and generate a new one:

curl -X POST https://checked.day/api.php?action=revoke-api-token \
  -H "X-Requested-With: XMLHttpRequest" \
  -b cookies.txt

Day Cutoff

Times logged before 6 AM count as the previous day. This allows late-night habit logging (like doing dishes at 1 AM) to apply to "yesterday" rather than starting a new day.

Habit Structure

Each habit in your settings has this shape:

{
  "id": "dishes",
  "name": "Dishes",
  "icon": "๐Ÿฝ๏ธ",
  "target": "21:00",
  "schedule": ["sun","mon","tue","wed","thu","fri","sat"]
}

id is URL-safe, name is display text (max 30 chars), target is optional (HH:MM), and schedule controls which days the habit appears.

โ† back to app