<!-- BusyBot node reference — https://busybot.net/tools/gotify/ -->

> Node: Gotify (`gotify`) · Action · v1
> Category: Communication · Credentials: Gotify API (`gotifyApi`)
> Updated: 2026-08-16

# Gotify

> Send, retrieve, and delete push notification messages on a self-hosted Gotify server.

## Overview

Gotify is a self-hosted push notification server. This tool lets you create (send) push notification messages, retrieve existing messages, and delete messages. It uses two separate API tokens: an App API Token for creating messages and a Client API Token for reading/deleting messages. Both are sent via the X-Gotify-Key header. The server URL is user-configured since Gotify is always self-hosted.

**Category:** Communication  
**Tool Name:** `gotify`  
**Version:** 1

**Appearance:** Icon: `lucide-Bell` | Color: `#0063B0`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **Gotify API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/gotify-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Message | `message` |

### Operations

| Operation | Value | Description |
|-----------|-------|-------------|
| Create | `create` | Send a new push notification message |
| Delete | `delete` | Delete an existing message by ID |
| Get Many | `getAll` | Retrieve messages from the server |

### Parameters

#### Message: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Message | `string` | Yes | — | The message to send. If using Markdown, set the Content Type option to "text/markdown". Supports expressions like {{ $json.body }}. |
| Additional Fields | `collection` | No | `{}` | Additional optional fields for the message. |
| — Priority | `number` | No | `1` | The priority of the message. Higher values indicate higher priority. |
| — Title | `string` | No | — | The title of the message. Supports expressions. |
| Options | `collection` | No | `{}` | Additional options for the message. |
| — Content Type | `options` | No | `text/plain` | The content type of the message body. |
| | | | | Options: `text/plain`, `text/markdown` |

#### Message: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Message ID | `string` | Yes | — | The ID of the message to delete. Supports expressions like {{ $json.id }}. |

#### Message: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `20` | Max number of results to return. _(shown when Return All is `false`)_ |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. |

## Output Data

The Gotify response is merged into the incoming item JSON at the top level — the fields you sent in pass through and binary data is forwarded.

| Operation | Output items |
|-----------|--------------|
| `create` | One item — the message record Gotify created, including the fields it assigned. |
| `delete` | One item carrying `success: true`. A delete that fails raises an item error instead. |
| `getAll` | **Fans out** — one output item per message. With Return All on, every page is fetched; otherwise up to Limit messages. When the server returns no messages, the input item is emitted unchanged. |

Because Get Many fans out, downstream nodes see one item per message and need no Split Out node.

## Usage Examples

- Send a push notification to Gotify
- List all messages from Gotify server
- Delete a Gotify message by ID
- Send a Markdown-formatted push notification

## Example Configuration

Send a simple notification:

```json
{
  "type": "gotify",
  "parameters": {
    "resource": "message",
    "operation": "create",
    "message": "Nightly backup finished"
  }
}
```

Send a titled, high-priority notification:

```json
{
  "type": "gotify",
  "parameters": {
    "resource": "message",
    "operation": "create",
    "message": "Server maintenance completed successfully",
    "additionalFields": {
      "title": "Maintenance Alert",
      "priority": 5
    }
  }
}
```

Send Markdown so the Gotify client renders formatting:

```json
{
  "type": "gotify",
  "parameters": {
    "resource": "message",
    "operation": "create",
    "message": "# Daily Report\n\n**Processed:** {{ $json.count }} items\n**Status:** Complete",
    "additionalFields": {
      "title": "Daily Processing Summary",
      "priority": 3
    },
    "options": {
      "contentType": "text/markdown"
    }
  }
}
```

Delete messages listed by an upstream node:

```json
{
  "type": "gotify",
  "parameters": {
    "resource": "message",
    "operation": "delete",
    "messageId": "{{ $json.id }}",
    "maxConcurrency": 3
  }
}
```

Retrieve the 10 most recent messages:

```json
{
  "type": "gotify",
  "parameters": {
    "resource": "message",
    "operation": "getAll",
    "returnAll": false,
    "limit": 10
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Send, retrieve, or delete push notification messages on a self-hosted Gotify server.

- **Two tokens, two jobs.** Creating a message uses the App API Token; reading and deleting use the Client API Token. Configure both on the credential or the operations you did not supply a token for will fail.
- **Markdown needs the Content Type option.** Writing Markdown into Message is not enough — set Content Type to `text/markdown` or the client shows the raw characters.
- **Priority drives client behavior.** Higher values are treated as more urgent by the Gotify clients; pick a consistent scale across your workflows.
- **Delete one message per item.** To clear several messages, feed the node one item per message ID — for example from a Get Many run — rather than a comma-separated list.