Introduction
Sellora provides hassle‑free, powerful shipping APIs for your platforms such as websites, e‑commerce stores, ERPs, and more.
Sellora APIs allow you to get rates, create and track shipments, validate addresses, and manage logistics without leaving your main platform. The API is RESTful and uses JSON for requests and responses.
Get Started
All API endpoints listed in this documentation are relative to:
https://sellora.ng/api/v1
Before you begin:
1. Create an account: https://sellora.ng/register 2. Visit Profile in your dashboard 3. Generate an API key 4. Keep your API keys secure
Authentication
All requests require a Bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
The API will validate your key and return a 401 error if the key is invalid or inactive.
Validate Address
Validates and geocodes a delivery or pickup address. You must validate your pickup address before creating shipments.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | REQUIRED | Full name of the person at this address |
| string | REQUIRED | Email address (valid email format) | |
| phone | string | REQUIRED | Phone number with country code (e.g., +2348012345678) |
| address | string | REQUIRED | Complete address including street, city, state, country |
Response Example
{
"success": true,
"data": {
"name": "John Doe",
"email": "john@example.com",
"phone": "+2348012345678",
"address_code": 12345678,
"postal_code": "101233",
"formatted_address": "123 Main Street, Lagos, Nigeria",
"message": "Address validated successfully"
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Get Rates
Retrieves shipping rates from multiple courier services based on package details and destinations.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| sender_address_code | integer | OPTIONAL | Address code from /address/validate. If not provided, uses your account's validated pickup address |
| receiver_address_code | integer | REQUIRED | Receiver's address code obtained from /address/validate |
| category_id | integer | REQUIRED | Package category ID from /categories endpoint |
| package_dimension | object | REQUIRED | Object containing length, width, height (all in CM, as integers) |
| pickup_date | string | REQUIRED | Pickup date in format: "Year-Month-Day" (e.g., "2025-12-20") |
| package_items | array | REQUIRED | Array of item objects (see below) |
| delivery_instructions | string | OPTIONAL | Special delivery instructions for the courier |
| service_type | string | OPTIONAL | Filter by service type: "pickup" or "dropoff" |
Package Items Object Structure
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | REQUIRED | Item name |
| description | string | REQUIRED | Item description |
| unit_weight | float | REQUIRED | Weight per unit in kilograms (e.g., 0.5 for 500g) |
| unit_amount | float | REQUIRED | Price per unit in NGN |
| quantity | integer | REQUIRED | Number of units |
Request Example
{
"receiver_address_code": 87654321,
"category_id": 98190590,
"package_dimension": {
"length": 30,
"width": 20,
"height": 15
},
"pickup_date": "2025-12-25",
"package_items": [
{
"name": "Laptop",
"description": "Dell XPS 15",
"unit_weight": 2.5,
"unit_amount": 500000,
"quantity": 1
}
],
"delivery_instructions": "Handle with care"
}
Response Example
{
"success": true,
"data": {
"status": "success",
"message": "Retrieved successfully",
"data": {
"request_token": "b724643e35047b44bf6499ce32dec6bf44b4de88859c03198a6f5714e026173b",
"couriers": [
{
"courier_id": "cora",
"courier_name": "Cora",
"service_code": "cora",
"service_type": "pickup",
"total": 3063,
"currency": "NGN",
"vat": 188,
"pickup_eta": "Within 3 hours",
"delivery_eta": "Within 23 hrs",
"tracking_level": 7,
"ratings": 3
}
],
"fastest_courier": {
"courier_name": "Routely (Express Premium)",
"total": 3308,
"delivery_eta": "Within 9 hrs"
},
"cheapest_courier": {
"courier_name": "Dellyman",
"total": 400,
"delivery_eta": "Within 1 - 2 working days"
}
}
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Create Shipment
Creates a new shipment using a request token from the rates endpoint.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| request_token | string | REQUIRED | Token received from /rates endpoint |
| service_code | string | REQUIRED | Service code of selected courier (e.g., "cora", "routely") |
| courier_id | string | REQUIRED | Courier ID from the selected rate |
Request Example
{
"request_token": "b724643e35047b44bf6499ce32dec6bf44b4de88859c03198a6f5714e026173b",
"service_code": "cora",
"courier_id": "cora"
}
Response Example
{
"success": true,
"data": {
"shipment": {
"order_id": "SB-2CF48224272",
"status": "pending",
"courier": {
"name": "Cora",
"email": "cora@cora.com",
"phone": "010000038198"
},
"ship_from": {
"name": "John Doe",
"phone": "+2348012345678",
"email": "john@example.com",
"address": "123 Main Street, Lagos, Nigeria"
},
"ship_to": {
"name": "Jane Smith",
"phone": "+2348087654321",
"email": "jane@example.com",
"address": "456 Market Road, Lagos, Nigeria"
},
"payment": {
"shipping_fee": 3063,
"type": "wallet",
"status": "completed",
"currency": "NGN"
},
"items": [
{
"name": "Laptop",
"description": "Dell XPS 15",
"weight": 2.5,
"amount": "500000",
"quantity": "1",
"total": 500000
}
],
"tracking_url": "https://sellora.ng/shipments/track?shipment_id?=SB-2CF48224272",
"date": "2025-12-16 14:30:00"
},
"message": "Shipment created successfully"
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Track Shipment
Retrieves tracking information and status updates for a specific shipment.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| shipment_id | string | REQUIRED | Shipment ID (e.g., SB-2CF48224272) received when creating shipment |
Response Example
{
"success": true,
"data": {
"status": "success",
"message": "Retrieved successfully",
"data": [
{
"date": "2025-12-13T14:00:35.000Z",
"order_id": "SB-4102465CAA5F",
"status": "in_transit",
"courier": {
"name": "Cora",
"tracking_code": "CORA12345",
"tracking_message": "Package out for delivery",
"rider_info": {
"name": "John Driver",
"phone": "+2348011112222"
}
},
"delivery_eta": "Within 2 hours",
"package_status": [
{
"status": "Pending",
"datetime": "2025-12-13T14:00:35.000Z"
},
{
"status": "Picked Up",
"datetime": "2025-12-13T15:30:00.000Z"
},
{
"status": "In Transit",
"datetime": "2025-12-13T16:45:00.000Z"
}
],
"tracking_url": "https://sellora.ng/shipments/track?shipment_id?=SB-2CF48224272"
}
]
},
"timestamp": "2025-12-16T10:27:55+00:00"
}
List Shipments
Retrieves a paginated list of all shipments created through your API account.
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | OPTIONAL | Number of records to return (default: 50, max: 100) |
| offset | integer | OPTIONAL | Number of records to skip for pagination (default: 0) |
| status | string | OPTIONAL | Filter by status: pending, in_transit, delivered, cancelled |
Response Example
{
"success": true,
"data": {
"shipments": [
{
"shipment_id": "SB-2CF48224272",
"customer_name": "Jane Smith",
"customer_phone": "+2348087654321",
"delivery_address": "456 Market Road, Lagos, Nigeria",
"item_name": "Laptop",
"courier_name": "Cora",
"shipment_status": "delivered",
"created_at": "2025-12-15 10:30:00"
}
],
"pagination": {
"total": 150,
"limit": 50,
"offset": 0
}
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Cancel Shipment
Cancels a pending shipment. Note: Only shipments in "pending" status can be cancelled.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| shipment_id | string | REQUIRED | Shipment ID to cancel (e.g., SB-2CF48224272) |
Request Example
{
"shipment_id": "SB-2CF48224272"
}
Response Example
{
"success": true,
"data": {
"status": "success",
"message": "Shipment successfully cancelled"
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Get Categories
Retrieves all available package categories. Use the category_id when getting rates.
Response Example
{
"success": true,
"data": {
"status": "success",
"message": "Retrieved successfully",
"data": [
{
"category_id": 98190590,
"category": "Hot food"
},
{
"category_id": 2178251,
"category": "Groceries"
},
{
"category_id": 67658572,
"category": "Sensitive items (ATM cards, documents)"
},
{
"category_id": 20754594,
"category": "Light weight items"
}
]
},
"timestamp": "2025-12-16T10:27:08+00:00"
}
Get Dimensions
Retrieves predefined package dimensions with their specifications. Use these as reference when specifying package_dimension in the rates endpoint.
Response Example
{
"success": true,
"data": {
"status": "success",
"message": "Retrieved successfully",
"data": [
{
"name": "Envelope",
"description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1651839241/package_boxes/envelope-removebg-preview_ghzcii.png",
"height": 2,
"width": 35,
"length": 25,
"max_weight": 0.5
},
{
"name": "Large Box 2",
"description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1712625408/package_boxes/Gemini_Generated_Image_iv8xi3iv8xi3iv8x_x8px9t.jpg",
"height": 39,
"width": 40,
"length": 48,
"max_weight": 25
},
{
"name": "Large Box 3",
"description_image_url": "https://res.cloudinary.com/delivry/image/upload/v1712625560/package_boxes/Gemini_Generated_Image_tb5yhrtb5yhrtb5y_ohaund.jpg",
"height": 45,
"width": 50,
"length": 56,
"max_weight": 40
}
]
},
"timestamp": "2025-12-16T10:26:18+00:00"
}
Note: All dimensions are in centimeters (CM) and max_weight is in kilograms (KG).
Account Info
Retrieves information about your API account including pickup address and settings.
Response Example
{
"success": true,
"data": {
"name": "John Doe",
"email": "john@example.com",
"phone": "08012345678",
"pickup_address": "123 Main Street, Lagos, Nigeria",
"address_validated": true,
"auto_shipment_enabled": true
},
"timestamp": "2025-12-16T10:25:38+00:00"
}