Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ericcobasdev/careertrack-api/llms.txt

Use this file to discover all available pages before exploring further.

Update an existing job application by its unique ID. All body fields use the sometimes validation rule, meaning you only need to include the fields you want to change — any field omitted from the request body will remain unchanged. This makes the endpoint suitable for both full and partial updates.

Endpoint

PUT /api/applications/{id}
This endpoint requires authentication. Include a valid Bearer token in the Authorization header of every request.

Path Parameters

id
integer
required
The unique numeric ID of the job application to update.

Request Body

All fields are optional. Only include the fields you want to update. Omitted fields will retain their current values.
company_name
string
Updated company name. Maximum 255 characters.
position_title
string
Updated job title or role. Maximum 255 characters.
status
string
Updated application status. Must be one of: applied, interview, offer, rejected.
source
string
Updated platform or channel where the job was found. Maximum 255 characters. Pass null to clear.
source_url
string
Updated URL to the original job posting. Must be a valid, fully-qualified URL. Maximum 255 characters. Pass null to clear.
salary_min
integer
Updated minimum expected salary. Must be an integer greater than or equal to 0. Pass null to clear.
salary_max
integer
Updated maximum expected salary. Must be an integer greater than or equal to 0. Pass null to clear.
location
string
Updated job location. Maximum 255 characters. Pass null to clear.
notes
string
Updated free-text notes. Pass null to clear.
applied_at
date
Updated application submission date in YYYY-MM-DD format. Pass null to clear.
next_step_at
date
Updated date for the next scheduled step in YYYY-MM-DD format. Pass null to clear.

Example Request

Update only the status and next step date after scheduling an interview:
curl -X PUT https://your-domain.com/api/applications/1 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "status": "interview",
    "next_step_at": "2024-05-15"
  }'

Response

200 OK

Returns the full updated job application resource.
{
  "data": {
    "id": 1,
    "user_id": 1,
    "company_name": "Acme Corp",
    "position_title": "Backend Developer",
    "status": "interview",
    "source": "LinkedIn",
    "source_url": "https://linkedin.com/jobs/123",
    "salary_min": 50000,
    "salary_max": 70000,
    "location": "Remote",
    "notes": "Promising role, responded quickly.",
    "applied_at": "2024-05-01T00:00:00.000000Z",
    "next_step_at": "2024-05-15T00:00:00.000000Z",
    "created_at": "2024-05-01T10:00:00.000000Z",
    "updated_at": "2024-05-10T09:30:00.000000Z"
  }
}
data
object
required
The full job application object reflecting the updated values.

401 Unauthorized

Returned when the Authorization header is missing or the token is invalid.
{
  "message": "Unauthenticated."
}

404 Not Found

Returned when no application with the given ID exists.
{
  "message": "No query results for model [App\\Models\\JobApplication] 1"
}

422 Unprocessable Entity

Returned when a provided field fails validation. Only fields present in the request body are validated.
{
  "message": "The selected status is invalid.",
  "errors": {
    "status": [
      "The selected status is invalid."
    ]
  }
}

Build docs developers (and LLMs) love