Mail API Integration
Send physical mail programmatically directly from your applications. Integrate our hybrid mail services with just a few lines of code.

Mail API Features
RESTful API Design
Simple REST API with comprehensive documentation and code examples in multiple languages for easy integration.
Secure Authentication
Secure API key authentication with all communications protected by TLS encryption for data security.
Multiple Document Handling
Split large documents into individual letters automatically or send batch mailings with a single API call.
Testing Environment
Full test mode functionality allows you to validate your integration without sending real mail or incurring costs.
Key API Endpoints
Method | Endpoint | Description |
---|---|---|
POST | /v1/prints | Create a new print job with document files and configuration options |
GET | /v1/prints/{id} | Retrieve information about an existing print job |
PATCH | /v1/prints/{id} | Update an existing print job or confirm it for printing |
GET | /v1/prints | List all your print jobs with filtering options |
DELETE | /v1/prints/{id} | Delete a draft print job (only unconfirmed jobs can be deleted) |
Start Sending Mail with Code
Creating a Print Job
// Example API request to create a print job
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
async function sendLetter() {
try {
const form = new FormData();
// Required: The file to print and send
form.append('file', fs.createReadStream('letter.pdf'));
// Optional parameters
form.append('testmode', 'true'); // Set to 'false' for production
form.append('reference', 'Customer Invoice #12345');
form.append('confirmed', 'true'); // Set to 'true' to send immediately
// Configure printing options
form.append('printing[double_sided]', 'yes');
form.append('printing[premium_quality]', 'false');
// Configure postage options
form.append('postage[service]', 'uk_second_class');
form.append('postage[ideal_envelope]', 'c5');
const response = await axios.post(
'https://api.rnbdata.uk/v1/prints',
form,
{
headers: {
...form.getHeaders(),
'Authorization': 'Basic ' + Buffer.from('key_YOUR_API_KEY:').toString('base64')
}
}
);
console.log('Print job created successfully!');
console.log('Print job ID:', response.data.id);
// If confirmed=true, letters will be printed and posted
if (response.data.confirmed) {
console.log('Letters will be processed and sent');
console.log('Total cost:', response.data.cost.amount/100 + ' ' + response.data.cost.currency);
}
} catch (error) {
console.error('Error creating print job:', error.response?.data || error.message);
}
}
Checking Print Job Status
// Example API request to check print job status
const axios = require('axios');
async function checkPrintJobStatus(printJobId) {
try {
const response = await axios.get(
`https://api.rnbdata.uk/v1/prints/${printJobId}`,
{
headers: {
'Authorization': 'Basic ' + Buffer.from('key_YOUR_API_KEY:').toString('base64')
}
}
);
const printJob = response.data;
console.log('Print job status:', printJob);
// Check the status of individual letters
if (printJob.letters && printJob.letters.length > 0) {
console.log('Letter statuses:');
printJob.letters.forEach(letter => {
console.log(`Letter ${letter.id}: ${letter.status}`);
// If the letter has been shipped, show tracking info
if (letter.status === 'shipped' && letter.tracking_number) {
console.log(`Tracking number: ${letter.tracking_number}`);
}
});
}
return printJob;
} catch (error) {
console.error('Error checking print job status:', error.response?.data || error.message);
throw error;
}
}
Benefits of API Integration
Automation
Eliminate manual processes and automate your entire mailing workflow from end to end.
Scalability
Handle anything from one-off letters to mass mailing campaigns with the same infrastructure.
Cost Efficiency
Reduce operational costs by automating mail processes and benefiting from our bulk mail rates.
Ready to Integrate Mail into Your Applications?
Our developer-friendly API makes it easy to add physical mail capabilities to your software.