NAV
shell

Introduction

Welcome! This is the official documentation for todoZero. A reference to the functionality our public API with detailed description of each API endpoint, parameters, and examples.

Zapier

You can seamlessly integrate todoZero with 1000s of apps with Zapier.
Integrate with Zapier

Authentication

# With shell, you can just pass the correct header with each request
```shell
curl "https://app.todozero.com/api/v1/todo"
  -H "Authorization: YOUR_API_KEY"

Make sure to replace YOUR_API_KEY with your API key.

todoZero requires an API key to allow access to the API. You can find your API key in the Settings section of todoZero.

todoZero expects for the API key to be included in all API requests to the server in a header that looks like the following:

Authorization: YOUR_API_KEY

Todos

Create a to-do

curl -X POST -H "Authorization: YOUR_API_KEY" -H "Content-Type: application/json"  -d '{
    "description":"test todo from API"
}' "https://app.todozero.com/api/v1/todo"

The above command returns JSON structured like this:


  {
  "description": "test todo from API",
  "owner_uid": "YOUR_API_KEY",
  "created": "2018-07-22T01:23:48.821Z",
  "modified_uid": "YOUR_API_KEY",
  "modified": "2018-07-22T01:23:48.821Z",
  "id": "BgdNiM5HJyt7JAMspOp9"
}

This endpoint creates a new to-do

HTTP Request

POST https://app.todozero.com/api/v1/todo

JSON Parameters

Parameter Default Description
description Description of the to-do.
due_date null When the to-do is scheduled.
priority 0 0 = Normal 1 = Starred
hide_from_inbox false When true it will not show up the Inbox and Today view.
alarm false When true will send a push notification to the user ( ios / chrome ) or show a message when the app is open.
tags null Array of strings of the tags to attach to the to-do.
recoccuring_settings null When populated sets the reoccuring properties of the to-do. See Reoccuring Settings

Reoccuring Settings

Parameter Default Description
reoccuring_interval required Daily = 1,Weekly = 2, Monthy = 3
reoccuring_day_of_week null 0-6 0=Sunday
time_of_day null A Date (the time will be taken from what date is passed)

List all to-dos

curl "https://app.todozero.com/api/v1/todo"
  -H "Authorization: YOUR_API_KEY"


The above command returns JSON structured like this:

[
  {
    "id": "MX42VmMboWsdfsd7882flPK0QH",
    "created": "2018-07-22T01:07:45.681Z",
    "modified": "2018-07-22T01:07:45.681Z",
    "modified_uid": "YOUR_API_KEY",
    "owner_uid": "YOUR_API_KEY",
    "tags": [
      "work/meetings",
      "project/austin"
    ],
    "checked": false,
    "description": "Email new requirements",
    "due_date": "2018-07-11T13:00:00.000Z",
    "note_id": null,
    "priority": 1,
    "hide_from_inbox": true,
    "alarm": true
  }
  ...
]

This endpoint retrieves all open to-dos.

HTTP Request

GET https://app.todozero.com/api/v1/todo

Complete a to-do

curl "http://example.com/api/v1/todo/sf68d7f6a86s8d7f6asd8f/complete"
  -H "Authorization: YOUR_API_KEY"

This endpoint completes a to-do

HTTP Request

POST https://app.todozero.com/api/v1/todo/<ID>/complete

URL Parameters

Parameter Description
ID The ID of the to-do to complete

Reopen a to-do

curl "http://example.com/api/v1/todo/sf68d7f6a86s8d7f6asd8f/reopen"
  -H "Authorization: YOUR_API_KEY"

This endpoint reopens a completed to-do

HTTP Request

POST https://app.todozero.com/api/v1/todo/<ID>/reopen

URL Parameters

Parameter Description
ID The ID of the to-do to complete

Get a specific to-do

curl "http://example.com/api/v1/todo/sf68d7f6a86s8d7f6asd8f"
  -H "Authorization: YOUR_API_KEY"

The above command returns JSON structured like this:

{
    "id": "sf68d7f6a86s8d7f6asd8f",
    "created": "2018-07-22T01:07:45.681Z",
    "modified": "2018-07-22T01:07:45.681Z",
    "modified_uid": "YOUR_API_KEY",
    "owner_uid": "YOUR_API_KEY",
    "tags": [
      "work/meetings",
      "project/austin"
    ],
    "checked": false,
    "description": "Email new requirements",
    "due_date": "2018-07-11T13:00:00.000Z",
    "note_id": null,
    "priority": 1,
    "hide_from_inbox": true,
    "alarm": true
  }

This endpoint retrieves a specific to-do.

HTTP Request

GET https://app.todozero.com/api/v1/todo/<ID>

URL Parameters

Parameter Description
ID The ID of the to-do to retrieve

Notes

Create a Note

curl -X POST -H "Authorization: YOUR_API_KEY" -H "Content-Type: application/json"  -d '{
    "markdown":"# Test Note\n* bullet 1\n* bullet 2\n#test/tag","create_todo":true
}' "https://app.todozero.com/api/v1/note"

The above command returns JSON structured like this:


  {
    "note":{"archive_date": null,
    "title": "Test Note",
    "tags": [
        "test/tag"
    ],
    "owner_uid": "asdfasdf-anownerid-test",
    "created": "2020-10-13T03:31:42.363Z",
    "modified_uid": "asdfasdf-anownerid-test",
    "modified": "2020-10-13T03:31:42.735Z",
    "id": "BgdNiM5HJyt7JAMspOp9dfs"

},
"markdown":"# Test Note\n* bullet 1\n* bullet 2\n#test/tag"

This endpoint creates a new Note

HTTP Request

POST https://app.todozero.com/api/v1/note

JSON Parameters

Parameter Default Description
markdown Contents of the note in markdown. [markdown cheetsheet]
create_todo false When true a new to-do will be created title "Review {note title}" that will be linked to the new note

Update a Note

curl -X POST -H "Authorization: YOUR_API_KEY" -H "Content-Type: application/json"  -d '{
    "markdown":"# Test Note\n* bullet 1\n* bullet 2\n#test/tag","create_todo":true
}' "https://app.todozero.com/api/v1/note/<ID>"

The above command returns JSON structured like this:


  {
    "note":
        {
          "archive_date": null,
          "title": "Test Note",
          "tags": [
              "test/tag"
          ],
          "owner_uid": "asdfasdf-anownerid-test",
          "created": "2020-10-13T03:31:42.363Z",
          "modified_uid": "asdfasdf-anownerid-test",
          "modified": "2020-10-13T03:31:42.735Z",
          "id": "BgdNiM5HJyt7JAMspOp9dfs"
      },
    "markdown":"# Test Note\n* bullet 1\n* bullet 2\n#test/tag"

This endpoint updates a Note

HTTP Request

POST https://app.todozero.com/api/v1/note/<ID>

URL Parameters

Parameter Description
ID The ID of the note to update

JSON Parameters

Parameter Default Description
markdown Contents of the note in markdown. [markdown cheetsheet]
create_todo false When true a new to-do will be created title "Review {note title}" that will be linked to the new note

Get a specific note

curl "http://example.com/api/v1/note/sf68d7f6a86s8d7f6asd8f"
  -H "Authorization: YOUR_API_KEY"

The above command returns JSON structured like this:

{
    "note": {
        "archive_date": null,
        "id": "4Xoraf4pmrEAAv4324324w4hT",
        "created": "2021-01-02T18:05:06.028Z",
        "modified": "2021-01-02T18:05:06.710Z",
        "modified_uid": "LNvc8JiDRsYPglT2L2434234QMrYsr43",
        "owner_uid": "LNvc8JiDRsYPgls343234LAohQMrYsr43",
        "tags": [
            "test"
        ],
        "title": "Hey this is a test that has been updated 3 #test"
    },
    "markdown": "# Hey this is a test that has been updated 3 #test\nasdfasdf\n#test\n"
}

This endpoint retrieves a specific note.

HTTP Request

GET https://app.todozero.com/api/v1/note/<ID>

URL Parameters

Parameter Description
ID The ID of the note to retrieve

Webhooks

Create a Webhook

curl -X POST -H "Authorization: YOUR_API_KEY" -H "Content-Type: application/json"  -d '{
    "url":"https://hooks.zapier.com/hooks/catch/9146ddss0/gdjy4c/",
    "trigger":"todo_add"
}' "https://app.todozero.com/api/v1/hook"

The above command returns JSON structured like this:


  {
    "action": "POST",
    "url": "https://someurl.com/hook",
    "trigger": "todo_add",
    "owner_uid": "LNvc8JiDRsYPglT2L2434234QMrYsr43",
    "created": "2021-01-03T01:42:59.025Z",
    "modified_uid": "LNvc8JiDRsYPglT2L2434234QMrYsr43",
    "modified": "2021-01-03T01:42:59.025Z",
    "id": "tiRTEKws342UoiysjOe1wK"
  }

This endpoint creates registers a new Webhook.

HTTP Request

POST https://app.todozero.com/api/v1/hook

JSON Parameters

Parameter Default Description
url url of the Webhook that will accept a POST message
action the following events are supported
'note_add' 'note_update' 'todo_add' 'todo_complete'

Each webhook will post JSON to the url provide for the Webhook. The format of the payload will be the same format returned from to-do endpoint or note endpoint

Remove a Webhook

curl -X DELETE -H "Authorization: YOUR_API_KEY" -H  "https://app.todozero.com/api/v1/hook/tiRTEKwGIUoiysjOe1wKsdf3"

Response 200 if the Webhook was removed

This endpoint removes a Webhook

HTTP Request

DELETE https://app.todozero.com/api/v1/hook/<ID>

URL Parameters

Parameter Description
ID The ID of the hook to remove

List all Webhooks

curl "https://app.todozero.com/api/v1/hook"
  -H "Authorization: YOUR_API_KEY"


The above command returns JSON structured like this:

[
 [
  {
    "action": "POST",
    "url": "https://someurl.com/hook",
    "trigger": "todo_add",
    "owner_uid": "LNvc8JiDRsYPglT2L2434234QMrYsr43",
    "created": "2021-01-03T01:42:59.025Z",
    "modified_uid": "LNvc8JiDRsYPglT2L2434234QMrYsr43",
    "modified": "2021-01-03T01:42:59.025Z",
    "id": "tiRTEKws342UoiysjOe1wK"
  }
  ...
]

This endpoint retrieves all Webhooks

HTTP Request

GET https://app.todozero.com/api/v1/hook

Errors

The todoZero API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
404 Not Found -- The specified object could not be found.
429 Too Many Requests -- Slow down! Contact us if this a problem
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance or something is really messed up.