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. |