UPIP Business API
Build integrations with the UPIP Business platform. Manage invoices, team members, analytics, and AI features programmatically.
Your API Key
Use this key in the Authorization header for all requests.
Authentication
All API requests require a Bearer token in the Authorization header.
curl -X GET https://api.upip.company/v1/invoices \ -H "Authorization: Bearer upip_biz_YOUR_KEY" \ -H "Content-Type: application/json"
Rate Limits
Rate limits vary by plan tier. Exceeding limits returns a 429 Too Many Requests response.
| Tier | Requests/min | Requests/day | Price |
|---|---|---|---|
| Free | 30 | 1,000 | $0/mo |
| Starter | 120 | 10,000 | $29/mo |
| Business | 600 | 100,000 | $99/mo |
| Enterprise | Unlimited | Unlimited | Custom |
Error Handling
The API uses standard HTTP status codes. All error responses include a JSON body with an error field.
{
"error": {
"code": "invoice_not_found",
"message": "Invoice INV-9999 does not exist",
"status": 404
}
}
Invoices
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | optional | Filter: paid, pending, overdue, draft, sent |
| page | integer | optional | Page number (default: 1) |
| limit | integer | optional | Results per page (default: 20, max: 100) |
| customer | string | optional | Filter by customer name or ID |
Response
{
"invoices": [
{
"id": "INV-2401",
"customer": "Acme Corp",
"amount": 1250.00,
"status": "paid",
"created_at": "2026-02-05T10:30:00Z",
"due_date": "2026-03-05T00:00:00Z"
}
],
"total": 47,
"page": 1,
"pages": 3
}
Request Body
| Name | Type | Required | Description |
|---|---|---|---|
| customer_name | string | required | Customer or company name |
| customer_email | string | required | Email for delivery |
| line_items | array | required | Array of {description, quantity, unit_price} |
| due_date | string | optional | ISO 8601 date (default: +30 days) |
| tax_rate | number | optional | Tax percentage (default: 0) |
| notes | string | optional | Notes shown on invoice |
curl -X POST https://api.upip.company/v1/invoices \ -H "Authorization: Bearer upip_biz_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "customer_name": "Acme Corp", "customer_email": "[email protected]", "line_items": [ {"description": "Consulting (10 hrs)", "quantity": 10, "unit_price": 150.00}, {"description": "Software License", "quantity": 1, "unit_price": 500.00} ], "tax_rate": 8.5, "notes": "Net 30" }'
Returns full invoice details including line items, payment history, and PDF download URL.
{
"id": "INV-2401",
"customer": { "name": "Acme Corp", "email": "[email protected]" },
"line_items": [...],
"subtotal": 2000.00,
"tax": 170.00,
"total": 2170.00,
"status": "paid",
"pdf_url": "https://api.upip.company/v1/invoices/INV-2401/pdf",
"payment_link": "https://pay.upip.company/INV-2401"
}
Update an invoice that is still in draft status. Sent or paid invoices cannot be modified.
Sends the invoice via email with a payment link. Changes status from draft to sent.
{
"success": true,
"message": "Invoice INV-2401 sent to [email protected]",
"payment_link": "https://pay.upip.company/INV-2401"
}
Team
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| department | string | optional | Filter by department |
| status | string | optional | online, offline, busy |
{
"members": [
{
"id": "usr_abc123",
"name": "Alex Morgan",
"role": "Team Lead",
"department": "Operations",
"status": "online",
"performance_score": 94
}
],
"total": 23
}
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | required | Full name |
| string | required | Email address | |
| role | string | required | Team Member, Team Lead, Manager, Admin |
| department | string | optional | Operations, Sales, Support, Engineering, Marketing |
| hourly_rate | number | optional | Hourly pay rate in USD |
| Name | Type | Required | Description |
|---|---|---|---|
| member_id | string | required | Team member ID |
| start | string | required | Shift start (ISO 8601) |
| end | string | required | Shift end (ISO 8601) |
| notes | string | optional | Shift notes |
Analytics
| Name | Type | Required | Description |
|---|---|---|---|
| period | string | optional | 7d, 30d, 90d, 1y (default: 30d) |
| granularity | string | optional | daily, weekly, monthly |
{
"total": 47250.00,
"change_pct": 12.5,
"data": [
{ "date": "2026-02-01", "amount": 1580.00 },
{ "date": "2026-02-02", "amount": 2100.00 }
]
}
{
"total_active": 1284,
"new_this_period": 87,
"retention_rate": 87.5,
"churn_rate": 2.1,
"avg_lifetime_value": 4200.00
}
| Name | Type | Required | Description |
|---|---|---|---|
| type | string | required | revenue, customers, team, full |
| period | string | optional | Date range (default: last 30 days) |
| format | string | optional | json, pdf, csv (default: json) |
AI Features
Integrate BUBO (business optimization AI) and Berkeley (analytical AI) into your workflows.
| Name | Type | Required | Description |
|---|---|---|---|
| message | string | required | Your question or request |
| mode | string | optional | default (BUBO), objective (Berkeley), strategic (Winston) |
| context | object | optional | Business context data for better answers |
curl -X POST https://api.upip.company/v1/ai/chat \ -H "Authorization: Bearer upip_biz_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "message": "What should I focus on to increase revenue?", "mode": "objective" }'
{
"response": "Based on your data: your invoice collection rate is 94.2% but 5 invoices are overdue totaling $2,100. Focus on: 1) Send payment reminders for overdue invoices, 2) Your Tuesday revenue is consistently highest - consider running promotions on slower days, 3) Customer retention is strong at 87.5% but new acquisition has slowed.",
"personality": "berkeley",
"confidence": 0.92
}
Returns automatically generated insights based on your business data. Updated daily.
{
"insights": [
{
"type": "opportunity",
"title": "Tuesday Revenue Spike Detected",
"description": "Revenue on Tuesdays is 37% higher than average. Consider allocating more staff and running promotions on this day.",
"impact": "high"
}
]
}
SDKs & Libraries
Official client libraries are coming soon. In the meantime, use standard HTTP libraries:
JavaScript / Node.js
const response = await fetch('https://api.upip.company/v1/invoices', { headers: { 'Authorization': `Bearer ${API_KEY}` } }); const data = await response.json(); console.log(data.invoices);
Python
import requests response = requests.get( 'https://api.upip.company/v1/invoices', headers={'Authorization': f'Bearer {API_KEY}'} ) invoices = response.json()['invoices']
cURL
curl https://api.upip.company/v1/invoices \ -H "Authorization: Bearer upip_biz_YOUR_KEY"