/api/freelancer prefix, with sub-routes for job applications (/jobs), contracts (/contract), profile (/profile), and wallet (/wallet).
Freelancer contract endpoints are documented on the Contracts endpoints page. This page covers applications, profile management, and wallet operations.
POST /api/freelancer/jobs/apply-job/:jobId
Submit a job application. Creates anApplication record linking the freelancer to the job.
Auth required: Yes — freelancer role
Path parameters
MongoDB ObjectId of the job to apply for.
Request body
No request body is required. The freelancer’s ID is read from the authenticated JWT.Response
Confirmation that the application was submitted.
The created application document.
cURL
DELETE /api/freelancer/jobs/cancel-application/:applicationId
Withdraw a pending job application. Auth required: Yes —freelancer role
Path parameters
MongoDB ObjectId of the application to cancel.
Response
Confirmation that the application was withdrawn.
cURL
GET /api/freelancer/jobs/applied-jobs
List all jobs the authenticated freelancer has applied for. Auth required: Yes —freelancer role
Response
Array of application documents, each populated with the associatedjobId details.
cURL
GET /api/freelancer/jobs/applied-status/:jobId/:freelancerId
Check the application status for a specific freelancer on a specific job. Auth required: NoPath parameters
MongoDB ObjectId of the job.
MongoDB ObjectId of the freelancer.
Response
The matching application document, or
null if no application exists.cURL
GET /api/freelancer/profile/get-profile/:id
Retrieve the public freelancer profile for a given user ID. Auth required: NoPath parameters
MongoDB ObjectId of the freelancer user.
Response
The freelancer profile document.
cURL
PUT /api/freelancer/profile/update-profile/:id
Update the freelancer’s profile information. Auth required: Yes —freelancer role
Path parameters
MongoDB ObjectId of the freelancer user.
Request body
Provide any combination of updatable profile fields:First name.
Professional headline.
Short biography.
Array of skill ObjectIds.
Category ObjectId.
City.
State.
Country.
Postal code.
Languages spoken.
Beginner, Intermediate, or Expert.Array of
{ name, imageUrl } portfolio objects.{ college, course } education object.{ github, linkedIn, website } link object.Array of
{ company, position, duration } employment records.Response
The updated freelancer profile document.cURL
POST /api/freelancer/profile/upload-image/:id
Upload a profile picture for the freelancer. Acceptsmultipart/form-data.
Auth required: Yes — freelancer role
Path parameters
MongoDB ObjectId of the freelancer user.
Request body
Image file to upload. Stored via Cloudinary and the resulting URL is saved to the profile.
Response
The updated freelancer profile document including the newprofilePic URL.
cURL
GET /api/freelancer/wallet/earnings/:userId
Retrieve the wallet record for a user, including current balance. Auth required: Yes —freelancer or client role
Path parameters
MongoDB ObjectId of the user whose wallet to retrieve.
Response
The wallet document.
cURL
GET /api/freelancer/wallet/transactions/:walletId
Retrieve the full transaction history for a wallet. Auth required: Yes —freelancer or client role
Path parameters
MongoDB ObjectId of the wallet (from the
_id returned by the earnings endpoint).Response
Array of transaction records ordered by date.
cURL
GET /api/freelancer/wallet/user-sales-report/:userId
Retrieve aggregated earnings data for a user, suitable for generating charts or sales reports. Auth required: NoPath parameters
MongoDB ObjectId of the user.
Response
Aggregated sales data. The exact shape is determined by the wallet service implementation and typically includes monthly totals.cURL
