Skip to main content
Vendor List API
curl --request GET \
  --url https://api.pazy.io/v1.0/vendors

Authentication

All requests require an API key in the request headers. Headers:
Authorization: Api-Key YOUR_API_KEY

Request

Query Parameters

ParameterTypeRequiredDescription
namestringNoFilter by vendor name (partial match).
gstNumberstringNoFilter by GST number. Must be a valid 15-character GSTIN.
panNumberstringNoFilter by PAN number. Must be a valid 10-character PAN.
userIdstringNoFilter by the id of the vendor’s owner user.
limitintegerNoNumber of records to return. Min 1, Max 100.
cursorstringNoCursor for pagination. Use the nextCursor value returned by the previous response.

Code Examples

curl -X GET "https://api.pazy.io/v1.0/vendors?limit=30&name=ABC" \
  -H "Authorization: Api-Key YOUR_API_KEY"

Success Response

HTTP Status: 200 OK Response Fields:
FieldTypeDescription
okbooleanIndicates whether the request was successful
dataobjectContains the vendor list response data
data.vendorsarrayList of vendors
data.vendors[].idstringUnique identifier (slug) for the vendor
data.vendors[].namestringVendor display name (falls back to legal name)
data.vendors[].GSTINstringVendor GSTIN. Empty string if not set
data.vendors[].PANstringVendor PAN. Empty string if not set
data.vendors[].dateCreatedstringDate the vendor was created (ISO 8601 format)
data.vendors[].emailstringVendor email address. Empty string if not set
data.vendors[].ownerIdstringUnique slug identifier of the vendor owner
data.vendors[].ownerNamestringFull name of the vendor owner
data.vendors[].totalPaidAmountnumber or stringTotal amount paid to the vendor
data.vendors[].outstandingAmountnumber or stringTotal outstanding amount for the vendor
data.vendors[].overdueAmountnumber or stringTotal overdue amount for the vendor
data.vendors[].advanceAmountnumber or stringTotal advance amount available for the vendor
data.vendors[].currencystringCurrency code for the vendor amount summaries
data.vendors[].accountingSyncedbooleanIndicates whether the vendor is synced to the connected accounting platform
data.vendors[].accountingSyncIdstringIdentifier of the vendor in the connected accounting platform
data.vendors[].selfUrlstringShareable URL for viewing the vendor in the web interface
data.contextobjectPagination metadata
data.context.countnumberTotal number of vendors matching the filters
data.context.hasMorebooleanIndicates whether there are more vendors to fetch
data.context.nextCursorstring or nullCursor to fetch the next page. null when there are no more results

Response Example

{
  "ok": true,
  "data": {
    "vendors": [
      {
        "id": "vendor_identifier",
        "name": "ABC Suppliers",
        "GSTIN": "29ABCDE1234F1Z5",
        "PAN": "ABCDE1234F",
        "dateCreated": "2026-03-28T08:12:25.088Z",
        "email": "contact@abcsuppliers.com",
        "ownerId": "user_identifier",
        "ownerName": "John Doe",
        "totalPaidAmount": 25000,
        "outstandingAmount": 15000,
        "overdueAmount": 5000,
        "advanceAmount": 10000,
        "currency": "INR",
        "accountingSynced": true,
        "accountingSyncId": "LEDGER-ABC-SUPPLIERS",
        "selfUrl": "https://app.pazy.io/p/vendor/update/vendor_identifier"
      }
    ],
    "context": {
      "count": 120,
      "hasMore": true,
      "nextCursor": "30"
    }
  }
}

Error Responses

Invalid GST Number

HTTP Status: 400 Bad Request
{
  "ok": false,
  "error": {
    "code": "INVALID_GST_NUMBER",
    "message": "Invalid GST number format"
  }
}

Invalid PAN Number

HTTP Status: 400 Bad Request
{
  "ok": false,
  "error": {
    "code": "INVALID_PAN_NUMBER",
    "message": "Invalid PAN number format"
  }
}

Validation Error

HTTP Status: 400 Bad Request
{
  "ok": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed: /query/gstNumber: must NOT have fewer than 15 characters"
  }
}

Access Denied

HTTP Status: 403 Forbidden
{
  "ok": false,
  "error": {
    "code": "ACCESS_DENIED",
    "message": "Access denied: You can only view vendors you own"
  }
}

Authentication Errors

HTTP Status: 401 Unauthorized
{
  "ok": false,
  "error": {
    "code": "MISSING_CREDENTIALS",
    "message": "Missing Credentials"
  }
}
{
  "ok": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid API Key"
  }
}

Permission Errors

HTTP Status: 403 Forbidden
{
  "ok": false,
  "error": {
    "code": "INSUFFICIENT_PERMISSIONS",
    "message": "Permission check failed - PERMISSION_CHECK_FAILED"
  }
}

Internal Error

HTTP Status: 500 Internal Server Error
{
  "ok": false,
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal error"
  }
}

Best Practices

  • Use cursor and limit together to paginate; pass the nextCursor from the response as the cursor value for the next call
  • Combine name, gstNumber, panNumber, and userId filters to narrow results
  • Use the id from the response as the input to the Vendor Details API for full vendor information
  • The API returns at most 100 vendors per call regardless of the limit value
  • Access is limited to users with vendor read permission and an admin or bookkeeper role