Skip to main content
Purchase Order Search API
curl --request GET \
  --url https://api.pazy.io/v1.0/procurement/purchase-order/search

Authentication

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

Request

Query Parameters

At least one of poNumber or vendorId must be provided.
ParameterTypeRequiredDescription
poNumberstringNoPartial or full PO number to search for (case-insensitive)
vendorIdstringNoExact vendor slug identifier to filter by

Code Examples

# Search by PO number
curl -X GET "https://api.pazy.io/v1.0/procurement/purchase-order/search?poNumber=PO-2024" \
  -H "Authorization: Api-Key YOUR_API_KEY"

# Search by vendor
curl -X GET "https://api.pazy.io/v1.0/procurement/purchase-order/search?vendorId=vendor_identifier" \
  -H "Authorization: Api-Key YOUR_API_KEY"

# Search with both filters
curl -X GET "https://api.pazy.io/v1.0/procurement/purchase-order/search?poNumber=PO-2024&vendorId=vendor_identifier" \
  -H "Authorization: Api-Key YOUR_API_KEY"

Success Response

HTTP Status: 200 OK Returns up to 20 purchase orders matching the search criteria, ordered by creation date (newest first). Archived POs are excluded from results. Response Fields:
FieldTypeDescription
okbooleanIndicates whether the request was successful
dataobjectContains the search results
data.purchaseOrdersarrayList of matching purchase orders
data.purchaseOrders[].poIdstringUnique slug identifier for the purchase order
data.purchaseOrders[].poNumberstringPurchase order number
data.purchaseOrders[].statestringCurrent state of the PO
data.purchaseOrders[].amountnumberTotal purchase order amount
data.purchaseOrders[].currencystringCurrency code (e.g., INR)
data.purchaseOrders[].poDatestringPurchase order date (ISO 8601 format)
data.purchaseOrders[].vendorobjectLinked vendor information (null if no vendor linked)
data.purchaseOrders[].vendor.vendorIdstringUnique slug identifier of the vendor
data.purchaseOrders[].vendor.namestringVendor display name

Response Example

{
  "ok": true,
  "data": {
    "purchaseOrders": [
      {
        "poId": "po_slug_identifier",
        "poNumber": "PO-2024-001",
        "state": "APPROVED",
        "amount": 12500.00,
        "currency": "INR",
        "poDate": "2024-01-15",
        "vendor": {
          "vendorId": "vendor_identifier",
          "name": "ABC Suppliers"
        }
      },
      {
        "poId": "po_slug_identifier_2",
        "poNumber": "PO-2024-002",
        "state": "DRAFTED",
        "amount": 8000.00,
        "currency": "INR",
        "poDate": "2024-01-20",
        "vendor": null
      }
    ]
  }
}

Empty Results

If no purchase orders match the search criteria, an empty array is returned:
{
  "ok": true,
  "data": {
    "purchaseOrders": []
  }
}

Error Responses

Missing Search Parameters

HTTP Status: 400 Bad Request
{
  "ok": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "At least one of poNumber or vendorId is required"
  }
}

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

  • Provide at least one of poNumber or vendorId — the API returns a 400 if neither is supplied
  • poNumber supports partial matching (e.g., searching PO-2024 will match PO-2024-001, PO-2024-002, etc.)
  • vendorId requires an exact match — use the vendor slug returned from the Vendor Creation API or Vendor Search API
  • Results are capped at 20 and sorted newest first — use more specific search terms to narrow results
  • Archived POs are excluded from search results