Overview
Job assignments manage which job codes workers are assigned to in Rippling. They use two distinct types of assignments depending on whether you are modifying an active job roster (active assignements) or scheduling a future change (scheduled assignments).
Common use cases for job assignments include:
- Auditing and visibility: View scheduled changes for a worker or dimension to see what's pending before it hits payroll or time tracking.
- Rescheduling dates: A start date moves from Dec 1 to Dec 15. Cancel the old scheduled change and create a new one.
- Preventing unintended changes: A project is cancelled before it starts. Cancel the pending assignment so it never takes effect.
Key terms:
- Active assignments: Reflect the worker's live, current roster state. Modifying an active assignment changes their assignment immediately.
- Scheduled assignments: Reflect pending changes scheduled to take effect at a future date.
Available endpoints
| Endpoint | Description |
|---|---|
| GET List job assignments | View the current active roster for all workers. |
| GET Retrieve a specific job assignment | View details for one active assignment. |
| POST Create a new job assignment | Assign a job code immediately or schedule a future assignment. |
| PATCH Update a job assignment | Update fields on an active assignment (e.g., pay rate). |
| DELETE Delete a job assignment | Unassign a job code immediately or schedule a future unassignment. |
| GET List scheduled job assignments | View pending scheduled changes before they take effect. |
| GET Retrieve a specific scheduled job assignment | View details for one pending scheduled change. |
| DELETE Delete a scheduled job assignment | Cancel a pending scheduled change before it takes effect. |
Suggested workflow
- List job assignments to see the worker’s current roster.
- Create a job assignment. Omit
effective_fromto assign the job code immediately, or send a futureeffective_fromto schedule the change. - When
effective_fromis in the future, Rippling creates a pending scheduled change. Until that date, the worker’s active roster stays unchanged. List scheduled job assignments to get the pending change ID. - On the
effective_fromdate, Rippling applies the change to the active roster. List job assignments again to confirm. - To stop a pending change before
effective_from, delete the scheduled job assignment using the scheduled change ID, not the job assignment ID. A cancelled change does not apply. - To remove a job code later, delete the job assignment with a future
effective_from. That also creates a pending scheduled change, which can be cancelled as well.
Scheduled assignments UI
When a worker has active scheduled job assignment changes, a Scheduled assignments tab appears in Rippling. You can find it by navigating to either:
- The employee's profile > Job Assignments > Scheduled assignments.
- Job Dimension > Job Code.
This tab shows pending scheduled assignments and unassignment changes for that particular worker. Only future, non-cancelled PENDING changes are displayed. In addition to the API, admins can cancel pending changes directly from this tab.
Requirements
- Jobs configured with a
PER_JOB_CODEroster type on the target job dimension. - An API token with the following scopes:
job-assignments.readandscheduled-job-assignments.readto list and retrieve assignmentsjob-assignments.read-writeandscheduled-job-assignments.read-writeto fetch and manage changes
Fetch
Active job assignments
Use GET List job assignments when you need to check the current roster and see who is assigned to which job codes right now.
Request:
curl -L -X GET 'https://rest.ripplingapis.com/job-assignments' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
Response:
{
"results": [
{
"id": "66d74bc3e0d1070b2ce8324d",
"created_at": "2024-09-03T17:47:47.182000+00:00",
"updated_at": "2025-11-15T10:22:30.456000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"worker": null,
"base_pay_rate": 65.64,
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_code": null,
"job_pay_rate": 30.00,
"job_pay_rate_exceptions_id": null,
"job_pay_rate_exceptions": null
}
],
"next_link": null
}
Use GET Retrieve a specific job assignment when you have a job assignment id and need the full details of one active assignment.
Request:
curl -L -X GET 'https://rest.ripplingapis.com/job-assignments/66d74bc3e0d1070b2ce8324d' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
Response:
{
"id": "66d74bc3e0d1070b2ce8324d",
"created_at": "2024-09-03T17:47:47.182000+00:00",
"updated_at": "2025-11-15T10:22:30.456000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"worker": null,
"base_pay_rate": 65.64,
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_code": null,
"job_pay_rate": 30.00,
"job_pay_rate_exceptions_id": null,
"job_pay_rate_exceptions": null
}
Scheduled job assignments
Use GET List scheduled job assignments when you need to see pending changes.
Request:
curl -L -X GET 'https://rest.ripplingapis.com/scheduled-job-assignments' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
Response:
{
"results": [
{
"id": "67a1b2c3d4e5f6789012345a",
"created_at": "2025-10-15T14:30:00.000000+00:00",
"updated_at": "2025-10-15T14:30:00.000000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_dimension_id": "66b25055891aca1dfb199246",
"job_code_name": "Barista",
"job_dimension_name": "Task",
"change_type": "ASSIGN",
"effective_from": "2026-11-01T09:00:00.000000+00:00",
"reason": "New job start date",
"changed_by_id": "66a430b4d80b34a7fc931ab9",
"pay_rate": 25.00
}
],
"next_link": null
}
Use GET Retrieve a scheduled job assignment when you have a scheduled change id and need the full details of one pending change.
Request:
curl -L -X GET 'https://rest.ripplingapis.com/scheduled-job-assignments/67a1b2c3d4e5f6789012345a' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
Response:
{
"id": "67a1b2c3d4e5f6789012345a",
"created_at": "2025-10-15T14:30:00.000000+00:00",
"updated_at": "2025-10-15T14:30:00.000000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_dimension_id": "66b25055891aca1dfb199246",
"job_code_name": "Barista",
"job_dimension_name": "Task",
"change_type": "ASSIGN",
"effective_from": "2026-11-01T09:00:00.000000+00:00",
"reason": "New job start date",
"changed_by_id": "66a430b4d80b34a7fc931ab9",
"pay_rate": 25.00
}
Create
Use POST Create a new job assignment to assign a worker to a job code immediately or schedule a future assignment using effective_from.
These endpoints require a valid worker ID and job code ID. The job code's dimension must also have the Pay rate organizational attribute enabled.
Immediate assignment
Omit effective_from to assign the worker to the job code immediately.
Request:
curl -L -X POST 'https://rest.ripplingapis.com/job-assignments/'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization: Bearer REDACTED'
Request body:
{
"worker_id": "66a42f06d80b34a7fc92d971",
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_pay_rate": 25.00
}
Response:
{
"id": "66d74bc3e0d1070b2ce8324d",
"created_at": "2024-09-03T17:47:47.182000+00:00",
"updated_at": "2024-09-03T17:47:47.182000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"worker": null,
"base_pay_rate": 65.64,
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_code": null,
"job_pay_rate": 25.00,
"job_pay_rate_exceptions_id": null,
"job_pay_rate_exceptions": null
}
Future assignment
Request:
curl -L -X POST 'https://rest.ripplingapis.com/job-assignments/'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization: Bearer REDACTED'
Request body:
{
"worker_id": "66a42f06d80b34a7fc92d971",
"job_code_id": "66b2512c4ad1db34abae1e82",
"effective_from": "2026-11-01T09:00:00.000Z",
"change_reason": "New job start date",
"job_pay_rate": 25.00
}
A successful response returns 200 OK.
When effective_from is a future date, the response body will be empty. Use GET List scheduled job assignments to retrieve the pending change.
Update
Job assignment
Use PATCH Update a job assignment to modify an already-active assignment (e.g., pay rate). This endpoint does not schedule new changes.
Request:
curl -L -X PATCH 'https://rest.ripplingapis.com/job-assignments/66d74bc3e0d1070b2ce8324d'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
-H 'Authorization: Bearer REDACTED'
Request body:
{
"worker_id": "66a42f06d80b34a7fc92d971",
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_pay_rate": 30.00
}
Response:
{
"id": "66d74bc3e0d1070b2ce8324d",
"created_at": "2024-09-03T17:47:47.182000+00:00",
"updated_at": "2025-11-15T10:22:30.456000+00:00",
"worker_id": "66a42f06d80b34a7fc92d971",
"worker": null,
"base_pay_rate": 65.64,
"job_code_id": "66b2512c4ad1db34abae1e82",
"job_code": null,
"job_pay_rate": 30.00,
"job_pay_rate_exceptions_id": null,
"job_pay_rate_exceptions": null
}
Delete
Job assignment
Use DEL Delete a job assignment to remove a worker from a job code immediately or schedule a future unassignment. To remove the assignment right away, send no request body.
Request:
curl -L -X DELETE 'https://rest.ripplingapis.com/job-assignments/66d74bc3e0d1070b2ce8324d' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
A successful delete returns 200 and no body.
Include a JSON body with a future effective_from to schedule a future unassignment. You must send Content-Type: application/json.
Request:
curl -L -X DELETE 'https://rest.ripplingapis.com/job-assignments/66d74bc3e0d1070b2ce8324d' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer REDACTED' \
-d '{
"effective_from": "2025-11-30T23:59:00.000Z",
"change_reason": "Role ending"
}'
A successful delete returns 200 and no body.
Scheduled change
Use DEL Delete a scheduled job assignment to cancel a pending scheduled change before it takes effect. Use the scheduled change id from GET List scheduled job assignments as opposed to the job assignment id.
Request:
curl -L -X DELETE 'https://rest.ripplingapis.com/scheduled-job-assignments/67a1b2c3d4e5f6789012345a' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer REDACTED'
A successful delete returns 200 and no body.