Feature

Simple REST API for Notifications

One endpoint. One JSON body. Every channel. Send notifications to Telegram, Email, Slack, Discord, WhatsApp, and SMS with a single API call. No SDKs required, no complex configurations, no vendor lock-in.

Why Developers Choose One-Ping's API

Most notification APIs force you to learn different endpoints, payload formats, and authentication methods for every channel. Want to send a Telegram message? That is one API. Need an email? A different API with different credentials. Slack notification? Yet another SDK to install and configure. One-Ping eliminates all of that complexity by giving you a single, unified REST endpoint that routes your message to any channel you need.

Our API was designed with one principle in mind: if you can make an HTTP POST request, you can send notifications. There are no SDKs to install, no complex OAuth flows to implement, and no channel-specific payloads to memorize. You send JSON in, and notifications go out across Telegram, Email, Slack, Discord, WhatsApp, and SMS.

Getting started is free. Every account includes 100 messages per month at no cost. No credit card required. Upgrade only when your volume grows.

API Reference: POST /send

The entire One-Ping API revolves around a single endpoint. Here is the full specification for sending a notification.

Endpoint

POST https://api.one-ping.com/send
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY

Request Body Parameters

Parameter Type Required Description
message string Yes The notification text to send. Supports plain text and basic Markdown.
channels array Yes Array of channel names: "telegram", "email", "slack", "discord", "whatsapp", "sms".
recipient string Yes Recipient identifier: email address, phone number, or channel-specific ID.
subject string No Email subject line. Only used when "email" is in channels.
metadata object No Custom key-value pairs attached to the notification for your own tracking.
callback_url string No URL to receive delivery webhook callbacks.
retry boolean No Enable automatic retry on failure. Defaults to true.
fallback_channels array No Backup channels to use if primary channels fail. See retry and fallback.

Code Examples

Here are ready-to-use examples in the most popular languages. Copy, paste, replace your API key, and you are sending notifications in under a minute.

cURL

curl -X POST https://api.one-ping.com/send \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "message": "Your order #1234 has been shipped!",
    "channels": ["telegram", "email"],
    "recipient": "[email protected]",
    "subject": "Order Shipped"
  }'

JavaScript (fetch)

const response = await fetch('https://api.one-ping.com/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    message: 'Your order #1234 has been shipped!',
    channels: ['telegram', 'email'],
    recipient: '[email protected]',
    subject: 'Order Shipped'
  })
});

const data = await response.json();
console.log(data);

Python (requests)

import requests

response = requests.post(
    'https://api.one-ping.com/send',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY'
    },
    json={
        'message': 'Your order #1234 has been shipped!',
        'channels': ['telegram', 'email'],
        'recipient': '[email protected]',
        'subject': 'Order Shipped'
    }
)

print(response.json())

PHP (cURL)

$ch = curl_init('https://api.one-ping.com/send');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_API_KEY'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'message' => 'Your order #1234 has been shipped!',
        'channels' => ['telegram', 'email'],
        'recipient' => '[email protected]',
        'subject' => 'Order Shipped'
    ])
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Response Format

Every API call returns a consistent JSON response so you always know what to expect. Here is what a successful response looks like.

Success Response (200 OK)

{
  "success": true,
  "id": "msg_a1b2c3d4e5",
  "channels": {
    "telegram": { "status": "sent", "delivered_at": "2025-01-15T10:30:00Z" },
    "email": { "status": "queued" }
  },
  "metadata": {}
}

Error Response (4xx/5xx)

{
  "success": false,
  "error": {
    "code": "INVALID_CHANNEL",
    "message": "Channel 'fax' is not supported."
  }
}

Error Codes

HTTP Status Error Code Description
400 MISSING_FIELD A required field (message, channels, or recipient) is missing.
400 INVALID_CHANNEL One or more channels in the array are not supported.
401 UNAUTHORIZED API key is missing, invalid, or expired.
403 CHANNEL_NOT_CONFIGURED The channel is valid but not configured in your account settings.
429 RATE_LIMITED Too many requests. Wait and retry. See rate limiting below.
500 INTERNAL_ERROR Something went wrong on our side. The request can be retried.

Authentication with API Keys

One-Ping uses Bearer token authentication with API keys. You can generate and manage your API keys from the dashboard. Each key can be scoped to specific channels and has its own rate limits.

Create your account

Sign up at app.one-ping.com/register. No credit card required. Your free tier includes 100 messages per month.

Generate an API key

Go to the API Keys section in your dashboard. Click "Create new key", give it a name, and copy the generated key. Store it securely -- you will not be able to see it again.

Configure your channels

Connect the channels you want to use: add your Telegram bot token, Slack webhook URL, SMTP credentials, or Discord webhook. Each channel takes less than two minutes to set up.

Send your first notification

Use any of the code examples above, replacing YOUR_API_KEY with your actual key. That is it. You are now sending multi-channel notifications with a single API call.

Rate Limiting

To ensure fair usage and reliable delivery for all users, the One-Ping API enforces rate limits based on your plan.

Plan Requests/Minute Messages/Month
Free 10 100
Pro ($9/mo) 60 5,000
Business ($29/mo) 300 50,000

When you hit the rate limit, you will receive a 429 response with a Retry-After header indicating how many seconds to wait before retrying. Our automatic retry system handles this gracefully if you have it enabled.

How One-Ping Compares to Other Notification APIs

Traditional notification services require you to integrate multiple APIs, each with their own authentication, payload format, and error handling. Here is how One-Ping stacks up against the alternatives.

Feature One-Ping Twilio Novu (self-hosted) Knock
Single endpoint for all channels Yes No No Yes
No SDK required Yes No No No
Free tier included 100 msg/mo Pay per use Self-hosted Limited
Setup time 5 minutes Hours Days 30+ minutes
Built-in retry and fallback Yes Manual Yes Yes
n8n / Zapier integration Yes Yes No Limited

Migrating from another service? Our API is so simple that most developers complete the migration in under 30 minutes. Check our migration guide for step-by-step instructions.

Designed for Every Stack

Because One-Ping is a standard REST API with JSON payloads, it works with every programming language, framework, and platform that can make HTTP requests. No vendor-specific SDKs, no dependency bloat.

Any Language

JavaScript, Python, PHP, Ruby, Go, Java, C#, Rust -- if it can send an HTTP POST, it works with One-Ping.

No-Code Tools

Use One-Ping with n8n, Zapier, Make, or any automation platform via our REST API or pre-built templates.

Serverless Ready

Perfect for AWS Lambda, Cloudflare Workers, Vercel Functions, and other serverless environments. No persistent connections needed.

Webhook Callbacks

Get real-time delivery status via webhook callbacks. Know exactly when your notification was delivered or if it failed.

Ready to simplify your notifications?

Start free with 100 messages/month. No credit card required.

Get started free