Beam Help
Get help now

How-to · Zoho CRM

How to retrieve bulk write jobs in Zoho

Fetch bulk write job status and results programmatically.

Retrieving a bulk write job in Zoho CRM lets you check the current status and details of a previously submitted bulk write operation using its unique job ID.


Why this matters


When you submit large volumes of records to Zoho CRM via the bulk write API, the job runs asynchronously. You need a way to poll or inspect that job later to confirm whether it succeeded, is still processing, or encountered errors. This endpoint is your primary tool for that status check, and it is classified as a safe, read-only operation. [4]


---


Step-by-step


Step 1. Confirm your OAuth token includes the correct CRM bulk scope before making any request. The required scope is ZohoCRM.bulk.ALL, which grants full access to bulk operations in Zoho CRM. Without this scope, the API will reject your request. [2]


Step 2. Identify the job ID (jid) for the bulk write job you want to inspect. This ID is returned when you originally create a bulk write job via POST /bulk/v1/write. Keep a record of it at creation time so you can reference it later. [7]


Step 3. Send a GET request to the bulk write job endpoint, substituting your job ID into the path:


GET /bulk/v1/write/{jid}

Replace {jid} with the actual job ID string. This call requires no request body — the job ID in the path is the only required parameter. [1]


Step 4. If you are working in Python, the call can be made through the CRM client wrapper like this:


def get_bulk_write_job(self, jid: str):
    return self.c.request("GET", f"/bulk/v1/write/{jid}")

Pass the job ID as a string argument. The method issues the authenticated GET request and returns the job details as a response object. [1]


Step 5. When invoking this through a higher-level tool layer, supply the job ID via the jobid parameter key. Internally, this maps directly to the getbulkwritejob function described above. [5]


Step 6. Parse the response to review the job's current state. The response will contain metadata about the bulk write operation, including its processing status. If the job is still running, repeat the request after a short delay to poll for completion. [4]


---


Common pitfalls


  • Confusing bulk write and bulk read endpoints. The endpoint for checking a bulk *read* job is GET /bulk/v1/read/{jid}, which is a separate operation entirely. Make sure you are hitting /bulk/v1/write/{jid} when checking a write job. [6]
  • Missing or incorrect scope. If your OAuth token was generated without ZohoCRM.bulk.ALL, the request will fail with an authorisation error. Re-generate your token with the correct scope included. [2]
  • Using the wrong job ID. The jid must correspond to a job created via POST /bulk/v1/write. Passing a read job ID to the write endpoint, or vice versa, will return an error or unexpected result. [6][7]

---


What to check


  • Scope is present: Verify that ZohoCRM.bulk.ALL appears in your active OAuth token's scope list before making the call. [2]
  • Correct endpoint path: Confirm the URL contains /bulk/v1/write/ (not /read/) followed by the exact job ID you received at creation time. [1][6]
  • Job ID source: Ensure the jid value was captured from the original POST /bulk/v1/write response, not from a read job or another unrelated operation. [7]

---


*Beam Help provides independent expert support for Zoho — we are not official Zoho support. For platform-level issues, always cross-reference with Zoho's official documentation.*

Sources cited

  1. [1] GET /bulk/v1/write/{jid}
  2. [2] config.py
  3. [3] server.py: chat_stream
  4. [4] get_bulk_write_job
  5. [5] get_bulk_write_job
  6. [6] GET /bulk/v1/read/{jid}
  7. [7] POST /bulk/v1/write
  8. [8] server.py: build_zoho_links
Retrieve Bulk Write Jobs | Beam Help — Beam Help