Update active contract
Scope: team:employees.write https://api.alladdin.com/api/v2/employees/{employeeId}/contract
Updates the active contract of an employee. This is a full-replacement operation — ALL fields must be provided. Workflow: (1) Call GET /api/v2/employees/{employeeId}/contract to get current contract data. (2) Send ALL fields from that response back here, modifying only the ones you want to change. Use when the user asks to update "puesto", "cargo", "salario", "jornada", or any contract field. Does not modify salary history — use the salary-increase endpoints for that.
Parameters
Path parameters
employeeId string required
Employee ID
Request body
object employee string | null optional
Employee full name
nif string | null optional
Tax identification number (NIF/NIE)
contractType integer required
Regulatory contract type code (tipo de contrato SEPE)
contributionType string | null optional
Social Security contribution type (e.g. "general")
royalDecree string | null optional
Royal Decree code (Real Decreto)
startDate string<date-time> required
Contract start date in ISO 8601 format
seniorityDate string<date-time> | null optional
Employee real seniority (antigüedad) date in ISO 8601 format; must be on or before startDate. When omitted or null, the stored seniority date of the contract is kept, so moving startDate before it requires sending seniorityDate as well. To correct startDate, send seniorityDate as well: it is not moved along. Contracts without a stored seniority date read it as startDate
endDate string<date-time> | null optional
Contract end date; null for open-ended contracts
educationalLevel string | null optional
Educational level code
jobTitle string | null optional
Job title (puesto/cargo)
professionalCategory string | null optional
Professional category
scheduleHours number | null optional
Weekly scheduled hours
scheduleMode string | null optional
Schedule mode string (e.g. "week", "fixed")
workingDays[] string[] | null optional
Working days of the week
probationPeriodDays integer | null optional
Probation period in days
vacationDays number | null optional
Vacation days per year
isManuallyActivated boolean | null optional
Whether the contract was manually activated
workModality string | null optional
Work modality (e.g. "office", "remote", "hybrid")
salary number optional
Gross salary amount
salaryInterval string optional
Salary interval string (e.g. "yearly", "monthly")
salaryPayments number | null optional
Number of salary payments per year
Request
import requests
url = "https://api.alladdin.com/api/v2/employees/{employeeId}/contract"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
}
payload = {
"employee": "string",
"nif": "string",
"contractType": 421,
"contributionType": "string",
"royalDecree": "string",
"startDate": "2024-01-15T10:30:00Z",
"seniorityDate": "2024-01-15T10:30:00Z",
"endDate": "2024-01-15T10:30:00Z",
"educationalLevel": "string",
"jobTitle": "string",
"professionalCategory": "string",
"scheduleHours": 0,
"scheduleMode": "string",
"workingDays": [
"string"
],
"probationPeriodDays": 0,
"vacationDays": 0,
"isManuallyActivated": false,
"workModality": "string",
"salary": 20000,
"salaryInterval": "string",
"salaryPayments": 0
}
response = requests.put(url, headers=headers, json=payload)
print(response.json())Responses
Success responses
204 Resource deleted
Error responses
400 Validation error application/json 401 Invalid or missing API key application/json 403 Insufficient permissions application/json 404 Employee or active contract not found application/json 429 Rate limit exceeded application/json
