The Customer Service Management (CSM) bulk APIs allow you to create, update, and manage large volumes of customer and organization data. These APIs are designed for integration scenarios where you need to sync data from external systems like CRMs, support platforms, or customer databases.
Bulk APIs provide asynchronous operations for:
All bulk operations are asynchronous. A successful request returns a task ID that you can poll to check the status and results of the operation.
Creates or updates basic customer account records. Use this API when you need to quickly create customer accounts with just essential information (email and display name). This is ideal for initial bulk imports or when you want to create accounts first and populate detail fields later.
Use Case: Rapidly onboard customers from your CRM with minimal information, then enrich their profiles later with additional detail fields.
Max per Request: 50 customers
Creates or updates comprehensive customer profiles including detail field values and organization associations. This is the most feature-rich customer bulk operation, allowing you to populate the complete customer profile in a single request.
Use Case: Complete customer migration from external systems where you want to import customer data, custom fields, and organizational relationships all at once.
Max per Request: 100 customers
Updates specific detail field values for existing customers without modifying other profile attributes. Use this API when you need to update custom fields across many customers.
Use Case: Sync updated customer attributes (e.g., support tier, health score) from your CRM to CSM without re-importing entire customer profiles.
Max per Request: 1000 detail-field operations total, counted across all customers in the request
Creates customer detail-field definitions (the schema, not values) in bulk. This is a setup-time operation that provisions new custom fields on the customer entity, ready to receive values via the value-update bulk endpoints above.
Use Case: During initial tenant onboarding or when integrating with a new external system, provision the full set of custom fields (Tier, Account Manager, Region, Renewal Date, etc.) in a single call before importing customer data.
This endpoint is create-only. It does not modify or replace existing detail-field definitions. See Unique field names below for the full contract.
Max per Request: 50 detail field definitions
Creates or updates basic organization records. Similar to customer accounts, this operation handles essential organization information (name, ID) without detail fields.
Use Case: Quickly set up organization structures in CSM for grouping customers and managing organizational relationships.
Max per Request: 50 organizations
Creates or updates comprehensive organization profiles including detail field values. This allows you to populate complete organization information in bulk.
Use Case: Migrate organizational hierarchies and company data from your CRM with all associated custom fields and attributes.
Max per Request: 100 organizations
Updates specific detail field values for existing organizations. Use this API to sync organization-level custom fields.
Use Case: Update organization attributes (e.g., industry, contract status, renewal date) across multiple organizations without re-importing entire profiles.
Max per Request: 1000 detail-field operations total, counted across all organizations in the request
Creates organization detail-field definitions (the schema, not values) in bulk. This is a setup-time operation that provisions new custom fields on the organization entity, ready to receive values via the value-update bulk endpoints above.
Use Case: During initial tenant onboarding or when integrating with a new external system, provision the full set of organization custom fields (Region, Account Manager, Customer Tier, Renewal Date, etc.) in a single call before importing organization data.
This endpoint is create-only. It does not modify or replace existing detail-field definitions. See Unique field names below for the full contract.
Max per Request: 50 detail field definitions
When you submit a bulk operation:
id and statusUrlExample response:
1 2{ "id": "abc123def456", "statusUrl": "/api/v1/tasks/abc123def456" }
Each tenant (cloud site, identified by cloudId) can have up to 5 non-terminal bulk tasks queued or in progress at the same time. Tasks with NOT_STARTED or IN_PROGRESS status count toward this limit. Tasks with FINISHED or FAILED status do not.
If the task limit is reached, new bulk requests are rejected with 400 Bad Request and the message Maximum number of tasks reached. Wait for existing tasks to finish before submitting more work. Non-terminal tasks older than 30 minutes are treated as timed out during task-limit checks, which frees capacity for new tasks.
Every bulk API request requires an Idempotency-Key header. This ensures safe retries without duplicating operations.
Idempotency-Key value.f47ac10b-58cc-4372-a567-0e02b2c3d479)The detail-field definition endpoints are create-only. Every name in the request must be unique:
"Region", "region", and " region " all collide).If either rule is violated, the call is rejected synchronously with 400 Bad Request (with the colliding names listed in the response body) and no task is created. Nothing is partially applied. To update an existing detail field's shape, delete it and re-create it via this API.
The total number of customer and organization detail fields is also capped (currently 50 per entity type). If the size of the request exceeds the remaining budget, the call is rejected with 400 Bad Request.
Poll the task status endpoint to check results:
1 2GET /api/v1/tasks/{taskId}
Status values:
NOT_STARTED: Task is queuedIN_PROGRESS: Task is runningFINISHED: Task finished. Check failures to distinguish complete success from partial successFAILED: Task failed or timed out before completionExample completed response:
1 2{ "id": "abc123def456", "type": "BULK_CUSTOMER_PROFILE_CREATE_UPDATE", "status": "FINISHED", "createdAt": "2026-01-15T10:00:00Z", "updatedAt": "2026-01-15T10:01:23Z", "failures": [ { "entity": "CUSTOMER", "entityId": "invalid@example", "operation": "UPSERT", "operatedOn": "CUSTOMER_ACCOUNT", "error": "Invalid customer email" } ] }
Here's a complete example of creating customer profiles in bulk:
1 2# Step 1: Submit bulk operation curl -X POST https://api.atlassian.com/api/v1/customer/profile/bulk \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Idempotency-Key: f47ac10b-58cc-4372-a567-0e02b2c3d479" \ -H "X-ExperimentalApi: true" \ -H "Content-Type: application/json" \ -d '{ "customerProfiles": [ { "operationType": "UPSERT", "payload": { "email": "john.doe@example.com", "displayName": "John Doe", "details": [ { "name": "Phone", "values": ["+1-555-0123"] }, { "name": "Company", "values": ["Acme Corp"] } ] } }, { "operationType": "UPSERT", "payload": { "email": "jane.smith@example.com", "displayName": "Jane Smith", "details": [ { "name": "Phone", "values": ["+1-555-0124"] }, { "name": "Company", "values": ["Tech Inc"] } ] } } ] }' # Response: # { # "id": "abc123def456", # "statusUrl": "/api/v1/tasks/abc123def456" # } # Step 2: Poll for results curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ https://api.atlassian.com/api/v1/tasks/abc123def456
Use bulk APIs to sync customer data from your external CRM:
See HubSpot Integration Guide for a detailed example.
Update specific detail field values without modifying other profile information:
1 2POST /api/v1/customer/details/bulk { "customers": [ { "customerId": "qm:82a83bc1-d19a-4220-b388-af3f7d92165d:a495e659-5978-402f-a878-636e415ba1c1", "operations": [ { "operationType": "UPDATE", "payload": { "name": "Support Tier", "values": ["Premium"] } } ] } ] }
Bulk create organizations before associating customers:
1 2POST /api/v1/organization/profile/bulk { "organizations": [ { "name": "Acme Corporation", "details": { "industry": "Manufacturing", "website": "https://acme.example.com" } } ] }
cloudId)Validate data before submission:
Solution: Generate a new UUID for each distinct request. Only reuse keys when retrying the exact same request.
Solution:
Solution:
FINISHED or FAILEDSolution:
Solution:
For support with bulk APIs:
Rate this page: