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.

Create a new job application record associated with the authenticated user. Only company_name and position_title are required — all other fields are optional and can be populated now or updated later. On success, the full created resource is returned.

Endpoint

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

Request Body

company_name
string
required
The name of the company you applied to. Maximum 255 characters.
position_title
string
required
The job title or role you applied for. Maximum 255 characters.
status
string
The current status of the application. Must be one of: applied, interview, offer, rejected. Defaults to applied if omitted.
source
string
The platform or channel where you found the job listing (e.g., "LinkedIn", "Indeed", "Company Website"). Maximum 255 characters.
source_url
string
A URL pointing to the original job posting. Must be a valid, fully-qualified URL. Maximum 255 characters.
salary_min
integer
The minimum salary you expect or that was advertised. Must be an integer greater than or equal to 0.
salary_max
integer
The maximum salary you expect or that was advertised. Must be an integer greater than or equal to 0.
location
string
The location of the role (e.g., "Remote", "New York, NY", "London, UK"). Maximum 255 characters.
notes
string
Free-text notes about the application — recruiter contact details, impressions, or reminders. No length limit enforced.
applied_at
date
The date you submitted the application, in YYYY-MM-DD format (e.g., "2024-05-01").
next_step_at
date
The date of the next scheduled step, such as an interview or a response deadline, in YYYY-MM-DD format.

Example Request

curl -X POST https://your-domain.com/api/applications \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "company_name": "Acme Corp",
    "position_title": "Backend Developer",
    "status": "applied",
    "source": "LinkedIn",
    "source_url": "https://linkedin.com/jobs/view/123",
    "salary_min": 50000,
    "salary_max": 70000,
    "location": "Remote",
    "notes": "Promising role, fast response expected.",
    "applied_at": "2024-05-01"
  }'

Response

201 Created

Returns the newly created job application resource as a JSON object.
{
  "data": {
    "id": 1,
    "user_id": 1,
    "company_name": "Acme Corp",
    "position_title": "Backend Developer",
    "status": "applied",
    "source": "LinkedIn",
    "source_url": "https://linkedin.com/jobs/view/123",
    "salary_min": 50000,
    "salary_max": 70000,
    "location": "Remote",
    "notes": "Promising role, fast response expected.",
    "applied_at": "2024-05-01T00:00:00.000000Z",
    "next_step_at": null,
    "created_at": "2024-05-01T10:00:00.000000Z",
    "updated_at": "2024-05-01T10:00:00.000000Z"
  }
}
data
object
required
The newly created job application object.

401 Unauthorized

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

422 Unprocessable Entity

Returned when one or more request body fields fail validation. The errors object contains field-level messages.
{
  "message": "The company name field is required. (and 1 more error)",
  "errors": {
    "company_name": [
      "The company name field is required."
    ],
    "status": [
      "The selected status is invalid."
    ]
  }
}

Build docs developers (and LLMs) love