SDKs
Umbra ERP provides a REST API that can be consumed from any programming language using standard HTTP clients.
Umbra ERP does not currently offer official SDK packages. The API is designed as a straightforward REST interface that works with any HTTP client. The examples throughout this documentation use cURL, JavaScript (fetch), and Python (requests).
Recommended HTTP clients
| Language | Library | Install |
|---|---|---|
| JavaScript/Node.js | Built-in fetch or axios | pnpm install axios |
| Python | requests | pip install requests |
| PHP | cURL or Guzzle | composer require guzzlehttp/guzzle |
| Ruby | Net::HTTP or httparty | gem install httparty |
| Go | net/http (built-in) | N/A |
Base URLs
All API requests should be made to the following base URLs:
- Production:
https://api.umbraerp.com - Staging:
https://staging-api.umbraerp.com
Common headers
Every request to the Umbra ERP API should include these headers:
- Name
Authorization- Type
- string
- Description
Your JWT access token as a Bearer token:
Bearer <your_access_token>.
- Name
Content-Type- Type
- string
- Description
Must be
application/jsonfor all POST/PUT requests.
Example: Complete sales flow
Here is a complete example showing how to create a quote and then convert it to an invoice:
Create a quote and convert to invoice
// Step 1: Create a quote
const quoteResponse = await fetch(
'https://api.umbraerp.com/v1/sales/quotes',
{
method: 'POST',
headers: {
'Authorization': 'Bearer <your_access_token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
customer_id: 'cust_123',
items: [
{ description: 'Consulting Services', quantity: 10, unit_price: 15000 }
],
currency: 'USD',
}),
}
)
const { quote_id } = await quoteResponse.json()
// Step 2: Convert quote to invoice
const invoiceResponse = await fetch(
`https://api.umbraerp.com/v1/sales/quotes/${quote_id}/convert`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer <your_access_token>',
},
}
)
const invoice = await invoiceResponse.json()
console.log(invoice.invoice_id)

