Nuvex Nova API Documentation
Programmatically create service tasks, track their status, and receive real-time webhooks — built for property managers, facilities teams, and enterprise platforms.
Getting Started
Apply for a business account from the contact page. Once ops-approved with an active API subscription, generate API keys from your Business Hub. All requests are JSON over HTTPS.
https://staging.nuvexnova.com/functionsAuthentication
Authenticate every request with your API key in the Authorization header. Keys are shown once at creation — store them securely and never expose them in client-side code. Revoke and rotate keys anytime from your Business Hub.
Authorization: Bearer nvx_live_xxxxxxxxxxxxxxxxRate Limits
Limits apply per key, per minute, based on your plan. Exceeding them returns 429.
| Plan | Requests / minute |
|---|---|
| Starter | 60 |
| Professional | 300 |
| Enterprise | 1000 |
Sandbox Mode
Generate a sandbox key to test your integration safely. Sandbox requests are fully validated and return realistic responses, but never create real tasks, dispatch taskers, or count against your quota. Sandbox responses include "sandbox": true.
Endpoints
/apiTasksCreate a new task request. The task enters ops review, gets priced, and is dispatched to a verified tasker. Sandbox keys simulate the request without creating a real task.
titlestringRequiredShort title of the work needed
servicestringRequiredService key from GET /apiServices, e.g. "Plumber"
addressstringFull service address (required unless business_address_id is set)
business_address_idstringID of a saved address from your Business Hub
descriptionstringDetails of the work
prioritystringlow | medium | high | urgent (default: medium)
scheduled_datestringPreferred ISO 8601 date-time
curl -X POST https://staging.nuvexnova.com/functions/apiTasks \
-H "Authorization: Bearer nvx_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Fix leaking kitchen faucet",
"service": "Plumber",
"address": "123 Main St, Boston, MA 02108",
"priority": "high"
}'{
"task": {
"id": "665f1c...",
"title": "Fix leaking kitchen faucet",
"service": "Plumber",
"status": "ops_review",
"priority": "high",
"created_at": "2026-07-05T14:03:00Z"
},
"quota": { "used": 13, "included": 50, "overage": false }
}/apiTasksList your tasks, newest first. Pass ?id= to fetch a single task, or ?status= to filter by lifecycle status.
idstringFetch one task by ID
statusstringFilter by status, e.g. in_progress
limitnumberMax results, up to 100 (default 50)
curl "https://staging.nuvexnova.com/functions/apiTasks?status=in_progress&limit=20" \
-H "Authorization: Bearer nvx_live_..."{
"tasks": [
{
"id": "665f1c...",
"title": "Fix leaking kitchen faucet",
"service": "Plumber",
"status": "in_progress",
"price_estimate": 245.00,
"created_at": "2026-07-05T14:03:00Z"
}
],
"count": 1
}/apiServicesThe catalog of bookable service categories and their pricing model. Use the service key when creating tasks.
curl https://staging.nuvexnova.com/functions/apiServices \
-H "Authorization: Bearer nvx_live_..."{
"services": [
{
"key": "Plumber",
"category": "licensed_trade",
"description": "Plumbing repairs, fixtures, leaks...",
"pricing": "hourly"
}
],
"count": 14
}/apiInvoicesList invoices and receipts for your completed tasks, newest first.
limitnumberMax results, up to 100 (default 50)
curl https://staging.nuvexnova.com/functions/apiInvoices \
-H "Authorization: Bearer nvx_live_..."{
"invoices": [
{
"id": "664a9b...",
"task_id": "665f1c...",
"amount": 245.00,
"status": "paid",
"created_at": "2026-07-01T10:00:00Z"
}
],
"count": 1
}/apiSubscriptionGet your current API subscription status, tier, quota usage, and billing cycle. Returns 403 if no active subscription exists — keys are hidden until a subscription is active and ops-approved.
curl https://staging.nuvexnova.com/functions/apiSubscription \
-H "Authorization: Bearer nvx_live_..."{
"subscription": {
"tier": "professional",
"status": "active",
"quota": { "used": 42, "included": 250, "overage": false },
"cycle_start": "2026-09-01",
"next_billing_date": "2026-10-01"
}
}/apiSubscriptionUpgrade your API tier or cancel your subscription. Upgrades take effect immediately and are prorated. Cancellations stop the next billing cycle — existing quota remains usable until the cycle ends.
actionstringRequiredupgrade or cancel
tierstringTarget tier for upgrades: starter | professional | enterprise
curl -X POST https://staging.nuvexnova.com/functions/apiSubscription \
-H "Authorization: Bearer nvx_live_..." \
-H "Content-Type: application/json" \
-d '{
"action": "upgrade",
"tier": "professional"
}'{
"subscription": {
"tier": "professional",
"status": "active",
"quota": { "used": 42, "included": 250, "overage": false },
"next_billing_date": "2026-10-01"
}
}Code Examples
JavaScript (fetch) examples for the two most common operations — task creation and status lookup.
// Create a task — JavaScript (fetch)
const response = await fetch("https://staging.nuvexnova.com/functions/apiTasks", {
method: "POST",
headers: {
"Authorization": "Bearer nvx_live_...",
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Fix leaking kitchen faucet",
service: "Plumber",
address: "123 Main St, Boston, MA 02108",
priority: "high",
}),
});
const data = await response.json();
console.log(data.task.id);// Get task status — JavaScript (fetch)
const taskId = "665f1c...";
const response = await fetch(
"https://staging.nuvexnova.com/functions/apiTasks?id=" + taskId,
{ headers: { "Authorization": "Bearer nvx_live_..." } }
);
const data = await response.json();
console.log(data.task.status);Webhooks
Register a webhook URL in your Business Hub to receive task lifecycle events as POST requests. Each delivery includes an X-Nuvex-Signature header — the HMAC-SHA256 hex digest of the raw body using your signing secret — and an X-Nuvex-Event header with the event name.
| Event | Fires when |
|---|---|
task.created | A task was created through the API |
task.scheduled | A tasker was assigned to the task |
task.started | The tasker checked in and began work |
task.completed | The work was approved and completed |
task.cancelled | The task was cancelled or expired |
{
"event": "task.completed",
"task_id": "665f1c...",
"status": "approved",
"title": "Fix leaking kitchen faucet",
"service": "Plumber",
"timestamp": "2026-07-05T18:22:00Z"
}Errors
Errors return a JSON body with an error message and standard HTTP status codes:
| Status | Meaning |
|---|---|
| 401 | Missing, invalid, or revoked API key |
| 403 | Business account is pending, rejected, or suspended |
| 404 | Resource not found |
| 405 | HTTP method not supported on this endpoint |
| 422 | Validation failed — see the details array in the response |
| 429 | Rate limit exceeded — slow down and retry |
| 500 | Something went wrong on our side |
Plans
- 50 tasks / month included
- 60 requests / minute
- $5/task overage
- 250 tasks / month included
- 300 requests / minute
- $4/task overage
- 1000 tasks / month included
- 1000 requests / minute
Apply for a business account and get your API keys within one business day.
Request API Access