NeerSoft CRM API

Written By Ritesh Sharma

Last updated About 1 hour ago

The HTTP API behind the NeerSoft CRM integration on Zapier: how to authenticate, the two polling triggers and two actions available, exact request and response formats, and every error code you can receive.

Authentication

Every request is scoped to a single workspace by its API token. There is no OAuth flow β€” one static token per workspace, generated inside the CRM.

Find the token at Settings β†’ Integrations β†’ Webhook / API (Pro, Plus, and Enterprise plans only). It can be regenerated at any time β€” regenerating invalidates the previous token immediately.

METHOD

WHERE IT GOES

EXAMPLE

Header (recommended)

Authorization

Bearer 13b0t40f-512d-488b-8ece-4563e1f89123

Query param

api_key

?api_key=12b0d40e-512d-...

Prefer the header. Zapier's own auth field sends the token as api_key in the URL, which is why both are supported - but a token in a URL can end up in server access logs. If you're calling the API by hand rather than through Zapier's UI, use the header form.

MISSING INVALID TOKEN

HTTP/1.1 401 Unauthorized { "error": "Invalid or missing API key. Use Authorization: Bearer <your-api-token>" }

Rate limits

30 requests per 60 seconds, shared across all four endpoints below and scoped to your workspace's token β€” not your IP, so other NeerSoft customers' traffic never affects your budget. Zapier's default polling interval (5–15 minutes) stays well under this in normal use.

Limit exceeded

Copy

HTTP/1.1 429 Too Many Requests { "error": "Rate limit exceeded" }

GET/api/zapier/triggers/new-customer

New Customer β€” polling trigger

Returns the 25 most recently created customers, newest first. Zapier polls this on an interval and deduplicates by id, so a Zap only fires once per genuinely new customer.

Request

Copy

GET /api/zapier/triggers/new-customer Authorization: Bearer <api-token>

Response β€” 200 OK

Copy

[ { "id": "dnb8zSv39PUzrXwxJwHO", "name": "Ritesh Sharma", "mobile": "9876543210", "email": "ritesh@example.com", "company": "Acme Co", "source": "Website", "notes": "Interested in enterprise plan", "createdAt": "2026-07-29T15:32:10.000Z" } ]

FieldTypeNotes

id

string

Used by Zapier for deduplication

name

string

mobile

string

Empty string if not set

email

string

Empty string if not set

company

string

Empty string if not set

source

string

e.g. "Website", "Zapier", "WordPress", "Lead Form"

notes

string

Empty string if not set

createdAt

string

ISO 8601

GET/api/zapier/triggers/new-deal

New Deal β€” polling trigger

Returns the 25 most recently created deals, newest first, deduplicated by id.

Request

Copy

GET /api/zapier/triggers/new-deal Authorization: Bearer <api-token>

Response β€” 200 OK

Copy

[ { "id": "a1B2c3D4e5F6", "title": "Website redesign project", "customerId": "dnb8zSv39PUzrXwxJwHO", "dealSize": 50000, "source": "Zapier", "priority": "hot", "stage": "New Lead", "tags": "urgent, referral", "createdAt": "2026-07-29T15:40:00.000Z" } ]

FieldTypeNotes

id

string

Used by Zapier for deduplication

title

string

customerId

string

ID of the linked customer

dealSize

number

0 if not set

source

string

priority

string

cold Β· warm Β· hot

stage

string

Pipeline stage name

tags

string

Comma-separated; empty if none

createdAt

string

ISO 8601

POST/api/zapier/actions/add-customer

Add Customer β€” action

Creates a new customer in the workspace.

Request

Copy

POST /api/zapier/actions/add-customer Authorization: Bearer <api-token> Content-Type: application/json { "name": "Ritesh Sharma", "mobile": "9876543210", "email": "ritesh@example.com", "company": "Acme Co", "notes": "Interested in enterprise plan", "source": "Zapier" }

FIELD

REQUIRED

TYPE

NOTES

name

Required

string

mobile

Required

string

email

Optional

string

company

Optional

string

notes

Optional

string

source

Optional

string

Defaults to "Zapier"

Response β€” 201 Created

Copy

{ "id": "dnb8zSv39PUzrXwxJwHO", "name": "Ritesh Sharma", "mobile": "9876543210", "email": "ritesh@example.com", "company": "Acme Co", "source": "Zapier" }

Validation errors β€” 422 Unprocessable Entity

Copy

{ "error": "name is required" } { "error": "mobile is required" }

POST/api/zapier/actions/add-deal

Add Deal β€” action

Creates a new deal. Omit customerId and a new customer is created automatically from customerName and linked to the deal.

Request

Copy

POST /api/zapier/actions/add-deal Authorization: Bearer <api-token> Content-Type: application/json { "title": "Website redesign project", "customerName": "Ritesh Sharma", "mobile": "9876543210", "email": "ritesh@example.com", "company": "Acme Co", "dealSize": 50000, "source": "Zapier", "priority": "hot", "stage": "New Lead", "notes": "Referred by existing client" }

FieldRequiredTypeNotes

title

Required

string

Deal title / project name

customerName

Required*

string

*Unless customerId is given

customerId

Optional

string

Links an existing customer instead; skips creation

mobile

Optional

string

Only used when auto-creating a customer

email

Optional

string

Only used when auto-creating a customer

company

Optional

string

Only used when auto-creating a customer

dealSize

Optional

number

Defaults to 0

source

Optional

string

Defaults to "Zapier"

priority

Optional

string

cold Β· warm Β· hot β€” defaults to warm

stage

Optional

string

Defaults to the workspace's first pipeline stage, or "New Lead"

notes

Optional

string

Only used when auto-creating a customer

Response β€” 201 Created

Copy

{ "id": "a1B2c3D4e5F6", "title": "Website redesign project", "customerId": "dnb8zSv39PUzrXwxJwHO", "dealSize": 50000, "source": "Zapier", "priority": "hot", "stage": "New Lead" }

Validation errors β€” 422 Unprocessable Entity

Copy

{ "error": "title is required" } { "error": "customerName is required" }

Error handling

Every error response is JSON with a single error field containing a human-readable message β€” reliable to map to one field across all four endpoints above.

StatusMeaningWhen it happens

401

Unauthorized

Token missing, invalid, or regenerated in the CRM since the Zap was set up

422

Unprocessable Entity

A required field is missing β€” see the per-endpoint tables above

429

Too Many Requests

More than 30 requests/60s from this workspace's token

500

Internal Server Error

Unexpected failure β€” transient, safe to retry; contact support if it persists

Data model notes

Customers and deals belong to a single workspace, scoped by whichever API token authorized the request β€” a Zap only ever sees and creates records in the one workspace its token belongs to.

Triggers are polling-based, not instant webhooks. Zapier's own polling interval β€” typically 5–15 minutes β€” determines how quickly new records surface in a Zap.

For instant, event-driven delivery instead of polling β€” e.g. pushing WordPress form submissions into the CRM in real time β€” see the separate Webhook / API integration documented under Settings β†’ Integrations in the CRM.