Notifications
32 addresses. Not promised — they belong to the internals and can change with any release. If you need something to stay put, use the promised thirteen.
GET
/api/feedback
may change
All feedback
Every quality rating in the installation, for whoever runs it.
Fields and shape
Parameters
unansweredboolean queryResponse
idnumber requiredmedia_typestring requiredtmdb_idnumber requiredseasonnumber or null requiredratingnumber requiredcommentstring or null requiredtitlestring requiredreplystring or null requiredoutdatedboolean requiredupdated_atstring requireduser_namestringResponse shape
[
{
"id": "number",
"media_type": "string",
"tmdb_id": "number",
"season": "number | null",
"rating": "number",
"comment": "string | null",
"title": "string",
"reply": "string | null",
"outdated": "boolean",
"updated_at": "string",
"user_name": "string"
}
]
GET
/api/feedback/mine
may change
Your own feedback
The quality ratings the calling account has given, with any replies.
Fields and shape
Response
idnumber requiredmedia_typestring requiredtmdb_idnumber requiredseasonnumber or null requiredratingnumber requiredcommentstring or null requiredtitlestring requiredreplystring or null requiredoutdatedboolean requiredupdated_atstring requireduser_namestringResponse shape
[
{
"id": "number",
"media_type": "string",
"tmdb_id": "number",
"season": "number | null",
"rating": "number",
"comment": "string | null",
"title": "string",
"reply": "string | null",
"outdated": "boolean",
"updated_at": "string",
"user_name": "string"
}
]
PUT
/api/feedback/{media_type}/{tmdb_id}
may change
Rate the quality of a title
How good the downloaded copy is. Anyone may, not just whoever requested it: this is about the file, and everybody watching it sees the same file.
Fields and shape
Parameters
media_typestring path requiredtmdb_idnumber path requiredRequest body
ratingnumber requiredcommentstring or nulltitlestringseasonnumber or nullResponse
idnumber requiredmedia_typestring requiredtmdb_idnumber requiredseasonnumber or null requiredratingnumber requiredcommentstring or null requiredtitlestring requiredreplystring or null requiredoutdatedboolean requiredupdated_atstring requireduser_namestringResponse shape
{
"id": "number",
"media_type": "string",
"tmdb_id": "number",
"season": "number | null",
"rating": "number",
"comment": "string | null",
"title": "string",
"reply": "string | null",
"outdated": "boolean",
"updated_at": "string",
"user_name": "string"
}
POST
/api/feedback/{rating_id}/reply
may change
Reply to a rating
Administrators only. Approvers see the ratings but may not answer them: a reply is a conversation, and that belongs with whoever runs the installation.
Fields and shape
Parameters
rating_idnumber path requiredRequest body
replystring requiredResponse
idnumber requiredmedia_typestring requiredtmdb_idnumber requiredseasonnumber or null requiredratingnumber requiredcommentstring or null requiredtitlestring requiredreplystring or null requiredoutdatedboolean requiredupdated_atstring requireduser_namestringResponse shape
{
"id": "number",
"media_type": "string",
"tmdb_id": "number",
"season": "number | null",
"rating": "number",
"comment": "string | null",
"title": "string",
"reply": "string | null",
"outdated": "boolean",
"updated_at": "string",
"user_name": "string"
}
DELETE
/api/notifications
may change
Delete all your notifications
Removes them rather than only marking them read.
GET
/api/notifications
may change
Your own notifications
Newest first, with their read state.
Fields and shape
Parameters
unread_onlyboolean querylimitnumber queryResponse
idnumber requiredtypedownload_complete | approved | rejected | cancelled | request_pending | feedback | feedback_poor | feedback_reply | ticket_new | ticket_reply | user_imported | mediaserver_reconnect | storage_released | storage_kept | storage_deleted | storage_release_requested | storage_grew | storage_scheduled | storage_unscheduled | request_deferred | child_wish | watch_ready | watch_episodes | rating_outdated | request_fulfilled requiredmessage_keystring requiredmessage_titlestring or null requiredseasonnumber or nullrequest_idnumber or null requiredticket_idnumber or null requiredis_readboolean requiredcreated_attimestamp (ISO 8601) requiredResponse shape
[
{
"id": "number",
"type": "download_complete | approved | rejected | cancelled | request_pending | feedback | feedback_poor | feedback_reply | ticket_new | ticket_reply | user_imported | mediaserver_reconnect | storage_released | storage_kept | storage_deleted | storage_release_requested | storage_grew | storage_scheduled | storage_unscheduled | request_deferred | child_wish | watch_ready | watch_episodes | rating_outdated | request_fulfilled",
"message_key": "string",
"message_title": "string | null",
"season": "number | null",
"request_id": "number | null",
"ticket_id": "number | null",
"is_read": "boolean",
"created_at": "ISO 8601"
}
]
POST
/api/notifications/read-all
may change
Mark everything as read
The notifications stay, they are only no longer unread.
GET
/api/notifications/unread/count
may change
How many unread notifications
A plain number for the bell badge.
DELETE
/api/notifications/{notification_id}
may change
Delete one notification
Removes a single entry.
Fields and shape
Parameters
notification_idnumber path required
POST
/api/notifications/{notification_id}/read
may change
Mark one as read
Marks a single notification as read.
Fields and shape
Parameters
notification_idnumber path required
POST
/api/settings/channels/{channel}/chats
may change
Who wrote to this bot
For a bot that does not exist in the database yet - during setup the token is in the form, not stored. Saves the detour of asking a third-party bot who has written to yours.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or null
POST
/api/settings/channels/{channel}/check
may change
Is the instance reachable
Without a code - nothing can arrive there yet. For the upper level of services that have two: a typo in the address should show up before anybody sets up topics underneath it.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber or null queryRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or nullResponse
okboolean requiredmessagestring requiredvaluesobject or nullResponse shape
{
"ok": "boolean",
"message": "string",
"values": "object | null"
}
POST
/api/settings/channels/{channel}/confirm
may change
Confirm the code from the test message
Only after this can the target be saved. Proves that messages actually arrive where they are supposed to.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredRequest body
codestring requiredResponse
okboolean requiredmessagestring requiredvaluesobject or nullResponse shape
{
"ok": "boolean",
"message": "string",
"values": "object | null"
}
GET
/api/settings/channels/{channel}/targets
may change
All targets of this channel
Every configured target of this service - one card each, topics included.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path required
POST
/api/settings/channels/{channel}/targets
may change
Create a target
Creates an instance - with Gotify, that is also the mailbox.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or null
POST
/api/settings/channels/{channel}/targets/{parent_id}/children
may change
Create a topic
Creates a topic inside an existing instance.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredparent_idnumber path requiredRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or null
DELETE
/api/settings/channels/{channel}/targets/{target_id}
may change
Remove a target
Removes the target and everything hanging off it. With an ntfy instance the topics go too - without an address and credentials they would have nothing to talk to.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber path required
PUT
/api/settings/channels/{channel}/targets/{target_id}
may change
Change a target
Address, credentials and name. Changing what messages arrive there is a separate endpoint.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber path requiredRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or null
POST
/api/settings/channels/{channel}/targets/{target_id}/chats
may change
Who wrote to this stored bot
The same question for a bot that is already saved: whoever sent it /start or added it to a group appears here, so the chat can be picked instead of typed.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber path required
PUT
/api/settings/channels/{channel}/targets/{target_id}/enabled
may change
Switch a target on or off
Deliberately its own endpoint rather than part of saving: the switch sits on the card and should take effect where it is, without opening a form.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber path requiredRequest body
enabledboolean required
PUT
/api/settings/channels/{channel}/targets/{target_id}/events
may change
What this mailbox is told about
Only on a confirmed target. Ticks on an unverified one would quietly fill the outbox with messages nobody receives.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber path requiredRequest body
eventsobject required
POST
/api/settings/channels/{channel}/test
may change
Send a test message with a code
Tests the typed-in values, not the stored ones - test first, save afterwards. The code has to be confirmed before the target counts as working.
Fields and shape
Parameters
channelntfy | gotify | email | telegram | discord | webhook | apprise path requiredtarget_idnumber or null queryparent_idnumber or null queryRequest body
namestring or nullurlstring or nulltopicstring or nulladdressstring or nullsubjectstring or nullchat_idstring or nullthread_idstring or nullsilentstring or nullauthstring or nullusernamestring or nullpasswordstring or nulltokenstring or nulllanguagestring or nulleventsobject or nullResponse
okboolean requiredmessagestring requiredvaluesobject or nullResponse shape
{
"ok": "boolean",
"message": "string",
"values": "object | null"
}
GET
/api/tickets
may change
Your tickets
Your own; for an administrator, everyone's.
Fields and shape
Parameters
statusopen | in_progress | closed or null queryuser_idnumber or null queryResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredResponse shape
[
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
]
POST
/api/tickets
may change
Open a ticket
Creates a ticket with a first message. Goes to the administrators.
Fields and shape
Request body
subjectstring requiredbodystring requireduser_idnumber or nullmedia_typemovie | tv or nulltmdb_idnumber or nullmedia_titlestring or nullResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
POST
/api/tickets/delete
may change
Delete closed tickets for good
Administrators only. Deliberately POST /delete and not DELETE: a body does not belong on a DELETE, and this needs the list of what to remove.
Fields and shape
Request body
ticket_idslist of number required
POST
/api/tickets/kontoaufloesung
may change
Apply to have your account deleted
For users and approvers. Arrives as an ordinary ticket with the administrators, who see the consequences before they decide.
Fields and shape
Response
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
PATCH
/api/tickets/messages/{message_id}
may change
Edit a message
Corrects the text of one's own message in a ticket.
Fields and shape
Parameters
message_idnumber path requiredRequest body
bodystring requiredResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
GET
/api/tickets/open-count
may change
How many tickets need attention
For the menu badge. For an administrator, everybody's open tickets; for everyone else, their own ones that have been answered.
GET
/api/tickets/{ticket_id}
may change
One ticket
The ticket with all its messages.
Fields and shape
Parameters
ticket_idnumber path requiredResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
PATCH
/api/tickets/{ticket_id}
may change
Set a ticket's state
Administrators only.
Fields and shape
Parameters
ticket_idnumber path requiredRequest body
statusopen | in_progress | closed requiredResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
POST
/api/tickets/{ticket_id}/kinderkonten-freischalten
may change
Grant child profiles from a ticket
Settles the application in one click - grants the permission, replies, closes the ticket.
Fields and shape
Parameters
ticket_idnumber path requiredResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}
POST
/api/tickets/{ticket_id}/messages
may change
Reply in a ticket
Adds a message to the conversation.
Fields and shape
Parameters
ticket_idnumber path requiredRequest body
bodystring requiredResponse
idnumber requiredsubjectstring requiredstatusopen | in_progress | closed requiredcreated_attimestamp (ISO 8601) requiredupdated_attimestamp (ISO 8601) requiredclosed_attimestamp (ISO 8601) or null requiredlast_reply_attimestamp (ISO 8601) or null requiredlast_reply_bynumber or null requiredmedia_typemovie | tv or null requiredtmdb_idnumber or null requiredmedia_titlestring or null requireduser_idnumber requiredusernamestring requireddisplay_namestring or null requiredavatar_urlstring or null requiredmessage_countnumber requiredopened_bynumber or null requiredopened_by_namestring or null requiredmessageslist of MessageOut requiredkinderkonten_offenbooleanResponse shape
{
"id": "number",
"subject": "string",
"status": "open | in_progress | closed",
"created_at": "ISO 8601",
"updated_at": "ISO 8601",
"closed_at": "ISO 8601 | null",
"last_reply_at": "ISO 8601 | null",
"last_reply_by": "number | null",
"media_type": "movie | tv | null",
"tmdb_id": "number | null",
"media_title": "string | null",
"user_id": "number",
"username": "string",
"display_name": "string | null"
}