Documentation

Everything you need to integrate Pigeonify into your application

Quick Start Guide

API Integration

Send emails programmatically using our RESTful API

View API Docs →

SMTP Setup

Configure SMTP to send emails from your application

SMTP Guide →

Stripe Setup

Configure billing and subscription management

Setup Guide →

API Documentation

Authentication

All API requests require an API key. You can generate API keys from your dashboard under Settings → API Keys.

Include your API key in the X-API-Key header:

X-API-Key: pgn_your_api_key_here

Send Email

POST/api/v1/send

Send a single email through the Pigeonify API

Request Headers:

Content-Type: application/json
X-API-Key: pgn_your_api_key_here

Request Body:

{
  "from": "noreply@yourdomain.com",
  "to": "recipient@example.com",
  "subject": "Hello from Pigeonify",
  "html": "<h1>Hello!</h1><p>This is a test email.</p>",
  "text": "Hello! This is a test email.",
  "reply_to": "support@yourdomain.com"
}
Required fields: from, to, subject, html
Optional fields: text, reply_to

Example Request (cURL):

curl --location 'https://pigeonify.com/api/v1/send' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: pgn_your_api_key_here' \
--data-raw '{
  "from": "noreply@yourdomain.com",
  "to": "recipient@example.com",
  "subject": "Hello from Pigeonify",
  "html": "<h1>Hello!</h1><p>This is a test email.</p>",
  "text": "Hello! This is a test email."
}'

Success Response (200):

{
  "success": true,
  "message_id": "01020193d9c7e8f8-7d2a8b3c-4e5f-6789-a0b1-c2d3e4f5g6h7-000000"
}

Error Responses:

401 Unauthorized
{
  "error": "Missing X-API-Key header"
}
400 Bad Request
{
  "error": "Missing required fields: from, to, subject, html"
}

🔑 How to Get Your API Key

  1. Log in to your Pigeonify dashboard
  2. Navigate to Dashboard → API Keys
  3. Click "Create API Key"
  4. Give your key a name (e.g., "Production API")
  5. Copy the generated key (it starts with pgn_)
  6. Store it securely - you won't be able to see it again!

SMTP Configuration

SMTP Settings

Use your personal SMTP credentials to send emails from your verified domains. Generate your credentials in the Settings → SMTP section.

Host:
smtp.pigeonify.com
Port (TLS):
587
Port (SSL):
465
Username:
Your SMTP Username (from Settings)
Password:
Your SMTP Password (from Settings)

Important: You can only send emails from your verified domains. Make sure to verify your domain in the Domains section before using SMTP.

Node.js Example (Nodemailer):

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  host: 'smtp.pigeonify.com',
  port: 587,
  secure: false, // true for 465, false for 587
  auth: {
    user: 'smtp-12345678', // Your SMTP username
    pass: 'your-smtp-password' // Your SMTP password
  }
});

await transporter.sendMail({
  from: 'sender@yourdomain.com', // Must be from a verified domain
  to: 'recipient@example.com',
  subject: 'Hello from Pigeonify',
  html: '<h1>Hello World</h1>'
});

Python Example (smtplib):

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

msg = MIMEMultipart('alternative')
msg['Subject'] = 'Hello from Pigeonify'
msg['From'] = 'sender@yourdomain.com'
msg['To'] = 'recipient@example.com'

html = '<h1>Hello World</h1>'
part = MIMEText(html, 'html')
msg.attach(part)

with smtplib.SMTP('smtp.pigeonify.com', 587) as server:
    server.starttls()
    server.login('smtp-12345678', 'your-smtp-password')
    server.sendmail(msg['From'], msg['To'], msg.as_string())

Getting Started:

  1. Go to Settings → SMTP in your dashboard
  2. Click "Generate SMTP Credentials" to create your credentials
  3. Copy your SMTP username and password (password shown only once)
  4. Verify a domain in the Domains section
  5. Use the credentials in your application to send emails

Domain Setup

Verify Your Domain

To send emails from your domain, you need to verify it by adding DNS records:

  1. Go to Dashboard > Domains and add your domain
  2. Copy the provided DNS records (TXT, SPF, DKIM, DMARC)
  3. Add these records to your domain's DNS settings
  4. Click "Verify" to confirm the setup

Note: DNS changes can take up to 48 hours to propagate, but usually complete within a few hours.

Need Help?

Can't find what you're looking for? Our support team is here to help.

Contact Support