Developer overview
API reference8 minute readAPI v1

Field sales API reference

The complete public REST endpoint index for orders, inventory, CRM customers and Zapier triggers.

Browse developer docs

SalesPro Hub exposes a versioned REST API for server-to-server integrations with ERP, accounting, CRM, warehouse and automation systems. The public integration surface covers submitted orders, inventory, customer identities and Zapier REST-hook subscriptions.

The mobile application's private synchronisation API is not part of this public contract.

Base URL

text
https://portal.salesrepsoftware.co.za/api/v1

All requests use HTTPS and JSON. Send an Accept: application/json header. Requests with a body must also send Content-Type: application/json.

Authentication

Use a scoped API key in either header:

http
X-API-Key: sk_your_api_key
http
Authorization: Bearer sk_your_api_key

Keys are tenant-scoped, revocable and shown only once when created. See API authentication for permission and rotation guidance.

Orders

MethodEndpointScopePurpose
GET/ordersorders:readList submitted orders with filters and incremental cursors
GET/orders/{orderNumber}orders:readRetrieve one order and its line items
POST/orders/{orderNumber}/acknowledgeorders:writeStore the receiving system's reference idempotently
PUT/orders/{orderNumber}/statusorders:writeReturn a valid fulfilment status

Drafts are not exposed. The recommended hand-off is:

text
poll unacknowledged orders → create in ERP → acknowledge → return status

See the Sales order REST API for filters, payloads, status transitions and retry behaviour.

Inventory

MethodEndpointScopePurpose
GET/inventoryinventory:readList product stock and available quantities
GET/inventory/movementsinventory:readAudit stock movements
GET/inventory/{sku}inventory:readRetrieve stock for one SKU
PUT/inventory/{sku}inventory:writeSet an absolute quantity with an optional idempotency reference
POST/inventory/bulkinventory:writeSet quantities for up to 500 SKUs

Choose one owner for physical stock before launch. If an ERP owns on-hand quantity, do not also apply the same delivery deduction in both systems.

See the Inventory sync API for quantity semantics, reservation shortfalls and reconciliation guidance.

CRM Customers

MethodEndpointScopePurpose
GET/customerscustomers:readList active records, changes and deletion tombstones
GET/customers/{externalSystem}/{externalId}customers:readRetrieve a customer by stable source identity
PUT/customers/{externalSystem}/{externalId}customers:writeIdempotently create, update or reactivate a customer
DELETE/customers/{externalSystem}/{externalId}customers:writeDeactivate while retaining the source identity

The external system and immutable external ID form the integration key. Names and email addresses are not used as merge keys.

See the CRM customer sync API for cursor and conflict policy.

Zapier REST Hooks

MethodEndpointScopePurpose
POST/zapier/subscribezapier:writeSubscribe a validated Zapier catch-hook URL
DELETE/zapier/subscribe/{subscription}zapier:writeRemove a tenant-owned subscription
GET/zapier/subscriptionszapier:readList active subscriptions
GET/zapier/samplezapier:readFetch sample data for a supported event

This is a developer REST-hook integration, not a public one-click Zapier marketplace application. See the Zapier integration guide.

Pagination and Incremental Sync

List endpoints use page-based pagination. Order and customer endpoints also return a timestamp-and-ID cursor:

json
{
  "next_cursor": {
    "updated_since": "2026-07-23T10:00:00.000000Z",
    "updated_since_id": 412
  }
}

Persist and replay both values. The ID tie-breaker prevents skipped records when multiple rows share the same update timestamp.

Idempotency

  • Order acknowledgements can be safely retried with the same external reference.
  • Customer upserts use the stable (external_system, external_id) identity.
  • Inventory updates accept a reference per SKU. Replaying the same reference and quantity is safe; reusing it for a different quantity returns a conflict.
  • Webhook and Zapier deliveries include stable delivery IDs for consumer-side deduplication.

Rate Limits

Every external endpoint is limited to 60 requests per minute per route group. The Professional plan also has a 5,000-request daily tenant quota; Enterprise has no practical daily plan quota.

Successful responses include:

http
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4872

A daily-quota response uses HTTP 429 and includes Retry-After. Prefer bulk inventory updates, incremental cursors and webhooks over high-frequency full polling.

Errors

The API uses conventional HTTP status codes:

StatusMeaning
401Missing, invalid, disabled or expired API key
402Organisation subscription is not active
403Inactive organisation, unavailable feature or insufficient scope
404Resource does not exist within the authenticated tenant
409Idempotency reference conflicts with an earlier request
422Request validation or state transition failed
429Per-minute throttle or daily plan quota exceeded

See Errors and troubleshooting for failure recovery procedures.

OpenAPI Description

The machine-readable OpenAPI 3.1 description is available at:

text
https://salesrepsoftware.co.za/developers/openapi.json

Treat the reference documentation and OpenAPI description as the public integration contract for API version v1.

Build against the real API

Professional API features are included in the 14-day trial.