API Documentation
Read-only REST API to integrate Nexora with your business tools. Reserved for Enterprise subscribers.
Introduction
The Nexora API lets you programmatically access your company data. It follows REST conventions — resources are accessible via clean URLs, responses are in JSON.
Base URL: https://www.nexoramg.com/api/v1
Authentication
Every request must include your API key in the following HTTP header:
X-API-Key: nxr_votre_cle_apiGet a key
- Subscribe to the Enterprise plan
- Go to Settings → API Keys
- Click "New key" and copy it immediately
Pagination
All list endpoints accept the following parameters:
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (default: 1) |
limit | integer | Results per page, max 100 (default: 50) |
Response format:
{
"object": "list",
"data": [...],
"total": 142,
"page": 1,
"limit": 50
}Error codes
| Code HTTP | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | Enterprise plan required or key revoked |
404 | Resource not found |
429 | Too many requests (rate limiting) |
500 | Internal server error |
Error body:
{ "error": "Invalid or missing API key" }/api/v1/meReturns information about the API key used and its associated company.
Example :
curl -H "X-API-Key: nxr_votre_cle" \
https://www.nexoramg.com/api/v1/meResponse :
{
"object": "api_key",
"keyName": "Intégration Shopify",
"prefix": "nxr_a1b2c3d4…",
"plan": "ENTERPRISE",
"company": {
"id": "cuid...",
"name": "Acme Corp",
"currency": "EUR",
"country": "FR",
"email": "contact@acme.com"
}
}/api/v1/clientsLists your company's active clients.
Parameters :
page | integer | Page (default: 1) |
limit | integer | Results per page, max 100 (default: 50) |
Example :
curl -H "X-API-Key: nxr_votre_cle" \
"https://www.nexoramg.com/api/v1/clients?page=1&limit=20"Response :
{
"object": "list",
"data": [
{
"id": "cuid...",
"firstName": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@email.com",
"phone": "+33612345678",
"company": "Dupont SARL",
"city": "Paris",
"country": "FR",
"createdAt": "2024-01-15T10:30:00.000Z"
}
],
"total": 85,
"page": 1,
"limit": 20
}/api/v1/invoicesLists your company's invoices, with optional status filter.
Parameters :
page | integer | Page (default: 1) |
limit | integer | Results per page, max 100 |
status | string | DRAFT | SENT | PAID | OVERDUE | CANCELLED |
Example :
curl -H "X-API-Key: nxr_votre_cle" \
"https://www.nexoramg.com/api/v1/invoices?status=SENT&limit=100"Response :
{
"object": "list",
"data": [
{
"id": "cuid...",
"invoiceNumber": "INV-2024-0042",
"status": "SENT",
"issueDate": "2024-03-01T00:00:00.000Z",
"dueDate": "2024-03-31T00:00:00.000Z",
"subtotal": 1200.00,
"taxAmount": 240.00,
"total": 1440.00,
"paidAmount": 0.00,
"paidAt": null,
"currency": "EUR",
"client": {
"id": "cuid...",
"firstName": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@email.com"
}
}
],
"total": 12,
"page": 1,
"limit": 50
}/api/v1/productsLists the active products and services in your catalog.
Parameters :
page | integer | Page (default: 1) |
limit | integer | Results per page, max 100 |
Example :
curl -H "X-API-Key: nxr_votre_cle" \
"https://www.nexoramg.com/api/v1/products"Response :
{
"object": "list",
"data": [
{
"id": "cuid...",
"name": "Consultation stratégique",
"sku": "CONS-001",
"category": "Services",
"description": "Session de conseil 1h",
"unitPrice": 150.00,
"stock": null,
"minStock": null,
"isService": true,
"currency": "EUR",
"createdAt": "2024-01-10T08:00:00.000Z"
}
],
"total": 34,
"page": 1,
"limit": 50
}/api/v1/ordersLists your company's orders, with optional status filter.
Parameters :
page | integer | Page (default: 1) |
limit | integer | Results per page, max 100 |
status | string | PENDING | CONFIRMED | SHIPPED | DELIVERED | CANCELLED |
Example :
curl -H "X-API-Key: nxr_votre_cle" \
"https://www.nexoramg.com/api/v1/orders?status=CONFIRMED"Response :
{
"object": "list",
"data": [
{
"id": "cuid...",
"orderNumber": "ORD-2024-0018",
"status": "CONFIRMED",
"createdAt": "2024-03-05T14:22:00.000Z",
"subtotal": 800.00,
"taxAmount": 160.00,
"total": 960.00,
"currency": "EUR",
"notes": null,
"client": {
"id": "cuid...",
"firstName": "Jean",
"lastName": "Dupont",
"email": "jean.dupont@email.com"
},
"items": [
{ "name": "Laptop Pro", "quantity": 2, "unitPrice": 400.00, "total": 800.00 }
]
}
],
"total": 7,
"page": 1,
"limit": 50
}/api/v1/financeLists financial entries (income and expenses), with filters by type and date range.
Parameters :
page | integer | Page (default: 1) |
limit | integer | Results per page, max 100 |
type | string | INCOME | EXPENSE |
from | string | Start date ISO 8601 (e.g. 2024-01-01) |
to | string | End date ISO 8601 (e.g. 2024-12-31) |
Example :
curl -H "X-API-Key: nxr_votre_cle" \
"https://www.nexoramg.com/api/v1/finance?type=INCOME&from=2024-01-01&to=2024-12-31"Response :
{
"object": "list",
"data": [
{
"id": "cuid...",
"type": "INCOME",
"amount": 2500.00,
"description": "Prestation client Acme Corp",
"category": "Ventes",
"date": "2024-03-10T00:00:00.000Z",
"reference": "FAC-2024-0042",
"currency": "EUR"
}
],
"total": 48,
"page": 1,
"limit": 50
}Integration examples
JavaScript (fetch)
const API_KEY = 'nxr_votre_cle'
const BASE = 'https://www.nexoramg.com/api/v1'
async function getInvoices(status = 'SENT') {
const res = await fetch(`${BASE}/invoices?status=${status}`, {
headers: { 'X-API-Key': API_KEY },
})
if (!res.ok) throw new Error(`HTTP ${res.status}`)
return res.json()
}
const { data, total } = await getInvoices('PAID')
console.log(`${total} factures payées`, data)Python (requests)
import requests
API_KEY = "nxr_votre_cle"
BASE = "https://www.nexoramg.com/api/v1"
HEADERS = {"X-API-Key": API_KEY}
def get_invoices(status=None, limit=100):
params = {"limit": limit}
if status:
params["status"] = status
r = requests.get(f"{BASE}/invoices", headers=HEADERS, params=params)
r.raise_for_status()
return r.json()
result = get_invoices(status="PAID")
print(f"{result['total']} factures payées")PHP (cURL)
<?php
$api_key = 'nxr_votre_cle';
$base = 'https://www.nexoramg.com/api/v1';
function nexora_get($path, $params = []) {
global $api_key, $base;
$url = $base . $path . '?' . http_build_query($params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: $api_key"]);
$res = curl_exec($ch);
curl_close($ch);
return json_decode($res, true);
}
$invoices = nexora_get('/invoices', ['status' => 'PAID', 'limit' => 50]);
echo $invoices['total'] . ' factures payées';