/api/client/job prefix. Browsing the public job board requires no authentication. Creating, updating, and viewing job details requires a valid JWT.
The Stripe payment endpoint that initiates escrow funding is also mounted under this prefix. See Payments endpoints for the full payment flow context.
GET /api/client/job/get-jobs
Return a paginated, searchable, filterable list of all published jobs. Auth required: NoQuery parameters
Page number to retrieve.
Number of results per page.
Full-text search term matched against job titles and descriptions.
Filter by job status or category. The accepted values correspond to the job
status field (Open, Ongoing, Closed) or a category ObjectId.Sort order for results. Accepted values depend on the service implementation (e.g.,
newest, rate).Response
Array of job objects for the current page.
Total number of jobs matching the query (before pagination).
The page returned.
Total number of pages given the current
limit.cURL
POST /api/client/job/create-job
Post a new job. The authenticated user’s ID is used as theclientId.
Auth required: Yes — client role
Request body
Short, descriptive job title.
Detailed job description including scope and deliverables.
Total budget for the job in INR.
Required experience level. One of
Beginner, Intermediate, or Expert.Location requirement (e.g.,
Remote, Mumbai).ObjectId of the job category. Retrieve valid IDs from
GET /api/admin/categories/get-categories.Array of skill ObjectIds required for this job.
ISO 8601 date string for the expected start date.
ISO 8601 date string for the expected end date.
Response
Confirmation message.
The newly created job document.
cURL
GET /api/client/job/job-details/:id
Retrieve full details for a single job by its ObjectId. Auth required: Yes —client or freelancer role
Path parameters
MongoDB ObjectId of the job.
Response
The full job document with populated
clientId, category, and skills references.cURL
GET /api/client/job/my-jobs/:id
Return a paginated list of jobs posted by a specific client. Auth required: NoPath parameters
MongoDB ObjectId of the client user.
Query parameters
Page number.
Results per page.
Search term.
Filter by job status.
Sort order.
Response
Paginated array of the client’s job listings.
Total matching jobs.
Current page number.
Total pages.
cURL
PUT /api/client/job/update-job/:id
Update an existing job. Only the client who created the job can update it — the server verifies ownership before applying changes. Auth required: Yes —client role
Path parameters
MongoDB ObjectId of the job to update.
Request body
Provide only the fields you want to change. All job fields are accepted (see create-job for the full field list).Response
Confirmation message.
The updated job document.
cURL
GET /api/client/job/applicants/:jobId/:clientId
Retrieve all applications submitted for a specific job, scoped to the owning client. Auth required: NoPath parameters
MongoDB ObjectId of the job.
MongoDB ObjectId of the client who owns the job.
Response
An array of application objects, each including thefreelancerId (populated), status, and isApplied fields.
cURL
GET /api/client/profile/get-profile/:id
Retrieve the client profile for the given user ID. Auth required: Yes —client or freelancer role
Path parameters
MongoDB ObjectId of the client user.
Response
The client profile document.
cURL
PUT /api/client/profile/update-profile/:id
Update the client’s profile information. Auth required: Yes —client role
Path parameters
MongoDB ObjectId of the client user.
Request body
Provide the fields to update from the client profile schema:firstName, city, state.
Response
The updated client profile document.cURL
POST /api/client/profile/upload-image/:id
Upload a profile picture for the client. Acceptsmultipart/form-data.
Auth required: Yes — client role
Path parameters
MongoDB ObjectId of the client user.
Request body
Send the file asmultipart/form-data with the field name profilePic.
Image file to upload. Stored and served via Cloudinary.
Response
The updated client profile document including the newprofilePic URL.
cURL
