Nembl
Developer Guide
API Reference

API Reference

The Nembl REST API provides programmatic access to services, requests, workflows, users, and other platform resources. Use the API to build integrations, automate processes, and extend the platform.

Base URL

All API requests use the following base URL:

https://api.nembl.com/v1

All endpoints require HTTPS. HTTP requests are rejected.

Authentication

Authenticate API requests using an API key passed in the x-api-key header:

curl -X GET https://api.nembl.com/v1/services \
  -H "x-api-key: nmbl_live_abc123xyz"

API keys are scoped to your company and carry the permissions of the user or service account that created them. See Authentication for details on creating and managing API keys.

Rate Limits

API requests are rate-limited per API key to ensure platform stability.

PlanRequests per minuteRequests per day
Free / Pro6010,000
Starter12050,000
Growth300200,000
Business6001,000,000
EnterpriseCustomCustom

When you exceed the rate limit, the API returns a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait.

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded. Retry after 12 seconds.",
  "retryAfter": 12
}

Common Response Format

All API responses follow a consistent JSON structure.

Successful Responses

Single resource:

{
  "data": {
    "id": "svc_abc123",
    "name": "IT Support",
    "status": "active",
    "createdAt": "2026-01-15T09:00:00Z",
    "updatedAt": "2026-03-10T14:30:00Z"
  }
}

List of resources (paginated):

{
  "data": [
    { "id": "svc_abc123", "name": "IT Support" },
    { "id": "svc_def456", "name": "HR Services" }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 20,
    "totalPages": 3,
    "totalCount": 52
  }
}

Error Responses

{
  "error": "validation_error",
  "message": "The 'name' field is required.",
  "details": [
    { "field": "name", "message": "Required field is missing" }
  ]
}

HTTP Status Codes

CodeMeaning
200Success
201Resource created
204Success with no content (e.g., delete)
400Bad request (validation error)
401Unauthorized (missing or invalid API key)
403Forbidden (insufficient permissions)
404Resource not found
409Conflict (e.g., duplicate slug)
429Rate limit exceeded
500Internal server error

Pagination

List endpoints support pagination with query parameters:

ParameterDefaultDescription
page1Page number (1-indexed)
pageSize20Items per page (max 100)
curl "https://api.nembl.com/v1/requests?page=2&pageSize=50" \
  -H "x-api-key: nmbl_live_abc123xyz"

Filtering and Sorting

List endpoints support filtering and sorting:

# Filter by status
curl "https://api.nembl.com/v1/requests?status=IN_PROGRESS" \
  -H "x-api-key: nmbl_live_abc123xyz"
 
# Sort by creation date (descending)
curl "https://api.nembl.com/v1/requests?sort=-createdAt" \
  -H "x-api-key: nmbl_live_abc123xyz"
 
# Combine filters
curl "https://api.nembl.com/v1/requests?status=PENDING&priority=HIGH&sort=-createdAt" \
  -H "x-api-key: nmbl_live_abc123xyz"

Prefix a sort field with - for descending order.

Core Endpoints

EndpointMethodsDescription
/v1/servicesGET, POSTList and create services
/v1/services/{id}GET, PATCH, DELETEGet, update, or delete a service
/v1/services/{id}/offeringsGET, POSTList and create offerings for a service
/v1/requestsGET, POSTList and create requests
/v1/requests/{id}GET, PATCHGet or update a request
/v1/workflowsGET, POSTList and create workflows
/v1/workflows/{id}GET, PATCH, DELETEGet, update, or delete a workflow
/v1/usersGETList company members
/v1/users/{id}GET, PATCHGet or update a user
/v1/teamsGET, POSTList and create teams
/v1/organizationsGET, POSTList and create organizations
/v1/secretsGET, POSTList and create secrets (value not returned)
/v1/billing/creditsGETView credit balance and history
/v1/auditGETQuery audit log entries

Creating a Request (Example)

curl -X POST https://api.nembl.com/v1/requests \
  -H "x-api-key: nmbl_live_abc123xyz" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceId": "svc_abc123",
    "offeringId": "off_xyz789",
    "title": "New laptop for onboarding",
    "priority": "MEDIUM",
    "fields": {
      "employeeName": "Jane Smith",
      "department": "Engineering",
      "laptopType": "MacBook Pro 16"
    }
  }'

Response:

{
  "data": {
    "id": "req_new456",
    "serviceId": "svc_abc123",
    "offeringId": "off_xyz789",
    "title": "New laptop for onboarding",
    "status": "PENDING",
    "priority": "MEDIUM",
    "createdAt": "2026-04-01T10:00:00Z"
  }
}

SDKs and Libraries

Official SDKs are planned for:

  • TypeScript/JavaScript (@nembl/sdk)
  • Python (nembl-python)

In the meantime, use any HTTP client to interact with the REST API directly.