List Jobs
Retrieve a paginated list of all jobs in your company.GET /jobs
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pageNumber | integer | No | Page number (default: 1) |
perPage | integer | No | Items per page. Must be one of: 10, 20, 40, 80, 100 (default: 10) |
Example Request
Example Response
Response Fields
| Field | Type | Description |
|---|---|---|
jobs | array | Array of job objects |
totalJobs | number | Total number of jobs in your company |
pipelineStage: Array of pipeline stages with candidate countscreatedAt: Timestamp when job was createdrunningRevenue: Total revenue from hired candidatesrejectedCandidateCount: Number of rejected candidates
Error Responses
Invalid perPage value:Create Job
Create a new job posting.POST /jobs
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Request Body Parameters
Required Fields
title (string, required)
What it does: The job title that will be displayed to candidates and in job listings.
Data format:
- Must be between 3 and 500 characters
- Should be clear and descriptive (e.g., “Senior Software Engineer”, “Marketing Manager”, “Sales Representative”)
- Avoid abbreviations unless they’re industry-standard
- ✅ Good:
"Senior Full Stack Developer" - ✅ Good:
"Product Marketing Manager" - ❌ Bad:
"Dev"(too short) - ❌ Bad:
"SWE"(unclear abbreviation)
city (string, required)
What it does: The city where the job is located. Used for location-based job searches and candidate matching.
Data format:
- Maximum 200 characters
- Use the full city name (e.g., “San Francisco”, “New York”, “London”)
- Don’t include state/province or country here (use
stateandcountryfields)
- ✅ Good:
"San Francisco" - ✅ Good:
"New York" - ❌ Bad:
"San Francisco, CA"(state should be instatefield)
state (string, required)
What it does: The state or province where the job is located.
Data format:
- Maximum 200 characters
- Use full state/province name (e.g., “California”, “New York”, “Ontario”)
- For countries without states/provinces, you can use the country name or leave as empty string (though country is still required)
- ✅ Good:
"California" - ✅ Good:
"New York" - ✅ Good:
"Ontario"(for Canada)
country (string, required)
What it does: The country where the job is located. Used for geographic filtering and compliance.
Data format:
- Maximum 200 characters
- Use full country name (e.g., “United States”, “United Kingdom”, “Canada”)
- ✅ Good:
"United States" - ✅ Good:
"United Kingdom" - ✅ Good:
"Canada"
Optional Fields
description (string, optional)
What it does: The detailed job description that explains the role, responsibilities, company culture, and what you’re looking for. This is what candidates will read to understand the job.
Data format:
- Maximum 10,000 characters
- Can include formatting, bullet points, and detailed information
- If omitted, TapTalent will auto-generate a description based on other job fields
- ✅ Provide when you have a specific, well-written job description
- ✅ Use when you want to highlight company culture, benefits, or unique aspects
- ⚠️ Omit if you want TapTalent to generate a description automatically
status (string, optional)
What it does: Controls whether the job is immediately visible to candidates or saved as a draft.
Valid values (for creating jobs):
"DRAFT"(default): Job is saved but not visible to candidates. Use this when you’re still working on the job posting."ACTIVE": Job is live and visible to candidates. Use this when the job is ready to accept applications.
"DRAFT" and "ACTIVE" are allowed. Additional status values ("INACTIVE", "DELETED") are available when updating jobs. See Update Job for status transition rules.
When to use:
- Use
"DRAFT"when creating jobs programmatically and want to review them before going live - Use
"ACTIVE"when the job is ready to be published immediately
"DRAFT"
workMode (string, optional)
What it does: Specifies the work arrangement for the position. This is important for candidates who have location preferences.
Valid values:
"ONSITE"(default): Work must be done at a physical office location"REMOTE": Work can be done entirely from home or any location"HYBRID": Combination of onsite and remote work
- Use
"ONSITE"for jobs that require physical presence (e.g., manufacturing, retail) - Use
"REMOTE"for jobs that can be done from anywhere (e.g., software development, customer support) - Use
"HYBRID"for jobs with flexible arrangements (e.g., 2-3 days in office, rest remote)
"REMOTE"
screeningQuestion (array, optional)
What it does: Pre-screening questions that candidates must answer when applying. These help filter candidates early in the process.
Data format:
- Maximum 15 questions
- Each question is an object with:
type: Must be"text"(only text questions are supported)question: The question text (1-3000 characters)
- Use for essential qualifications that can be quickly verified (e.g., “Do you have 5+ years of experience with React?”)
- Use for deal-breaker questions (e.g., “Are you authorized to work in the United States?”)
- Keep questions short and specific
teamId (string UUID, optional)
What it does: Associates the job with a specific team within your organization. Useful for multi-team companies.
Data format:
- Must be a valid UUID
- Must be an existing team ID in your TapTalent account
- Use when your organization has multiple teams and you want to assign the job to a specific team
- Leave empty if you don’t use teams or want to assign later
"123e4567-e89b-12d3-a456-426614174000"
contractType (string, optional)
What it does: Specifies the employment contract type. Important for candidates to understand the nature of the position.
Valid values:
"Permanent": Full-time permanent employment"Freelance / Consultant": Contract-based, project-based work"Fixed term contract": Temporary position with a defined end date"Internship": Internship position"Student": Student position or part-time student role
- Use
"Permanent"for standard full-time positions - Use
"Freelance / Consultant"for contract work - Use
"Internship"or"Student"for entry-level learning positions
"Permanent"
degreeLevel (string, optional)
What it does: The minimum education level required for the position. Used for candidate filtering and matching.
Valid values:
"High School": High school diploma or equivalent"Bachelor's": Bachelor’s degree required"Master's": Master’s degree required"M.B.A.": MBA degree required"Ph.D.": Doctoral degree required"Other": Other education requirements
- Specify when education is a hard requirement
- Leave empty if education level is flexible or not important
- Consider using
criterionDetailsfor more nuanced education requirements
"Bachelor's"
jobRole (string, optional)
What it does: Categorizes the job into a specific role category. Used for job organization and candidate matching.
Valid values:
Accounting, Administrative, Customer Service, Design, Education, Engineering, Finance, Healthcare, Hospitality & Tourism, Human Resources (HR), Information Technology (IT), Legal, Marketing, Media & Public Relations (PR), Pharmaceuticals, Production, Property Management, Public Service & Security, Real Estate, Retail, Sales, Supply Chain & Logistics
When to use:
- Use to categorize jobs for better organization
- Helps with candidate matching and job recommendations
- Choose the category that best fits the role
"Engineering"
salaryRangeFrom (number, conditional*)
What it does: The minimum salary for the position. Used to attract candidates and set expectations.
Data format:
- Integer between 0 and 9,999,999,999
- Represents the minimum annual salary
- Must be provided together with
salaryRangeToandsalaryCurrency
- Provide when you want to display salary range to attract candidates
- Use realistic market rates
- Must be less than
salaryRangeTo
120000 (for $120,000)
salaryRangeTo (number, conditional*)
What it does: The maximum salary for the position.
Data format:
- Integer between 0 and 9,999,999,999
- Represents the maximum annual salary
- Must be greater than
salaryRangeFrom - Must be provided together with
salaryRangeFromandsalaryCurrency
180000 (for $180,000)
salaryCurrency (string, conditional*)
What it does: The currency for the salary range.
Valid values:
USD, PHP, SGD, IDR, EUR, INR, GBP, AED, MYR, AUD, CAD, JPY, CNY, CHF, ZAR, KRW, THB, VND, BRL, MXN, RUB, TRY, SEK, NOK, DKK, PLN, HKD, MAD
Important: All three salary fields (salaryRangeFrom, salaryRangeTo, salaryCurrency) must be provided together or omitted together.
Example: "USD"
potentialAmount (number, optional)
What it does: The potential revenue or value associated with filling this position. Used for business planning and reporting.
Data format:
- Number greater than or equal to 0
- Represents the monetary value (e.g., revenue, commission potential)
- If provided,
potentialAmountCurrencyis required
- Use for sales positions with commission potential
- Use for roles that directly generate revenue
- Leave empty for standard salaried positions
50000
potentialAmountCurrency (string, conditional**)
What it does: The currency for the potential amount.
Data format:
- 3-character uppercase currency code (e.g., “USD”, “EUR”)
- Required if
potentialAmountis provided
"USD"
potentialHiresCount (number, optional)
What it does: The number of people you plan to hire for this position. Used for planning and resource allocation.
Data format:
- Integer, minimum 1
- Represents how many candidates you want to hire for this role
- Use when hiring multiple people for the same role
- Leave as 1 for single positions
3 (hiring 3 people for this role)
yearOfExperience (number, optional)
What it does: The minimum years of professional experience required for the position.
Data format:
- Number between 0 and 50
- Represents years of experience
- Use for experience requirements (e.g., “5 years of experience”)
- Can be combined with
criterionDetailsfor more specific experience requirements - Use 0 for entry-level positions
5 (5 years of experience required)
applicationForm (object, optional)
What it does: Configures which fields are required, optional, or hidden in the candidate application form. This controls what information candidates must provide when applying to the job.
Data format:
- Object with fields that can be set to
"OPTIONAL","MANDATORY", or"OFF" - See applicationForm Structure below for complete field list
- Use to customize the candidate application experience
- Control which information is required vs optional
- Hide fields that aren’t relevant to your hiring process
criterionDetails (array, optional)
What it does: Detailed job requirements and qualifications. This is used by TapTalent’s AI to match and score candidates. See the Job Criteria section below for comprehensive details.
Data format:
- Array of criterion objects (maximum 7)
- Each criterion has:
priority:"Must Have","Nice to Have", or"Bonus"(default:"Nice to Have")criterion_text: Requirement description (1-3000 characters)
- ✅ Always recommended for better candidate matching
- ✅ Essential for AI-powered candidate evaluation
- ✅ Helps filter and rank candidates automatically
* Salary Fields Rule: All three salary fields (
salaryRangeFrom, salaryRangeTo, salaryCurrency) must be provided together or omitted together. salaryRangeTo must be greater than salaryRangeFrom.
** Potential Amount Rule: potentialAmountCurrency is required if potentialAmount is provided.
applicationForm Structure
TheapplicationForm field allows you to configure the candidate application form by specifying which fields should be required, optional, or hidden.
Field Descriptions
| Field | Valid Values | Description |
|---|---|---|
phone | OPTIONAL, MANDATORY, OFF | Phone number field requirement |
currentJobTitle | OPTIONAL, MANDATORY, OFF | Current job title field requirement |
resume | OPTIONAL, MANDATORY, OFF | Resume/CV upload requirement |
otherFiles | OPTIONAL, MANDATORY, OFF | Other documents upload requirement |
company | OPTIONAL, MANDATORY, OFF | Current company field requirement |
isWillingToRelocate | MANDATORY, OFF | Willingness to relocate question (no OPTIONAL) |
noticePeriod | OPTIONAL, MANDATORY, OFF | Notice period field requirement |
expectedCTC | OPTIONAL, MANDATORY, OFF | Expected compensation requirement |
currentCTC | OPTIONAL, MANDATORY, OFF | Current compensation requirement |
currencyExpectedCTC | string | Currency code for expected CTC (required if expectedCTC is not OFF) |
currencyCurrentCTC | string | Currency code for current CTC (required if currentCTC is not OFF) |
expectedCTCPeriod | ANNUALLY, MONTHLY | Period for expected CTC |
currentCTCPeriod | ANNUALLY, MONTHLY | Period for current CTC |
gender | OPTIONAL, MANDATORY, OFF | Gender field requirement |
dateOfBirth | OPTIONAL, MANDATORY, OFF | Date of birth field requirement |
nationality | OPTIONAL, MANDATORY, OFF | Nationality field requirement |
Example: Complete applicationForm
Example: Minimal applicationForm (Only Required Fields)
Important Notes
- All fields are optional in the
applicationFormobject - you can specify only the fields you want to configure - Currency fields: If
expectedCTCorcurrentCTCis set toMANDATORYorOPTIONAL(notOFF), the corresponding currency field is required - Default values: If
applicationFormis not provided, the system will set default values automatically - Partial updates: When updating a job, you can provide only the
applicationFormfields you want to change - they will be merged with existing values
Job Criteria (criterionDetails)
ThecriterionDetails field is one of the most important fields for recruiters when creating a job posting. It defines the specific requirements, qualifications, and skills you’re looking for in candidates. These criteria are used by TapTalent’s AI to automatically evaluate and score candidates against your job requirements.
Why Job Criteria Matter
From a recruiter’s perspective, job criteria help you:- Define Clear Requirements: Specify exactly what skills, experience, and qualifications candidates need
- Improve Candidate Matching: The AI uses these criteria to match candidates to your job and provide match scores
- Save Time: Automatically filter and rank candidates based on how well they meet your requirements
- Set Expectations: Clearly communicate what you’re looking for, helping candidates self-assess their fit
Understanding Priority Levels
Each criterion has a priority level that indicates how important it is:| Priority | Description | When to Use |
|---|---|---|
| Must Have | Essential requirements that candidates absolutely must meet | Use for non-negotiable skills, certifications, or qualifications. Candidates without these should typically be filtered out. |
| Nice to Have | Preferred qualifications that would make a candidate stronger | Use for skills or experience that would be beneficial but aren’t deal-breakers. This is the default priority. |
| Bonus | Additional skills that would be great but aren’t necessary | Use for extra qualifications that would make a candidate exceptional but aren’t required. |
Best Practices for Writing Criteria
- Be Specific: Instead of “Good communication skills”, write “Excellent written and verbal communication skills with experience presenting to stakeholders”
- Focus on Measurable Skills: Include specific technologies, tools, or certifications (e.g., “5+ years of experience with React and TypeScript”)
-
Balance Your Criteria:
- Use 2-4 “Must Have” criteria for essential requirements
- Use 3-5 “Nice to Have” criteria for preferred qualifications
- Use 1-2 “Bonus” criteria for exceptional skills
- Keep It Relevant: Only include criteria that directly relate to job performance
- Think Like a Recruiter: Write criteria that help you quickly identify qualified candidates
CriterionDetails Structure
Each criterion in the array must have:| Field | Type | Required | Description |
|---|---|---|---|
priority | string | No | Priority level. Valid values: "Must Have", "Nice to Have", "Bonus". Default: "Nice to Have" |
criterion_text | string | Yes | The requirement description (1-3000 characters). This is where you describe the skill, qualification, or requirement. |
Example: Software Engineer Job
Example: Marketing Manager Job
How Criteria Affect Candidate Matching
When you upload resumes or add candidates to a job:- AI Evaluation: TapTalent’s AI analyzes each candidate’s resume against your criteria
- Match Scoring: Candidates receive a profile match score based on how well they meet your criteria
- Priority Weighting: “Must Have” criteria carry more weight in the scoring than “Nice to Have” or “Bonus” criteria
- Detailed Breakdown: You’ll see which criteria each candidate meets and how well they match
Validation Rules
- Maximum 7 criteria per job
- Each
criterion_textmust be between 1 and 3000 characters prioritymust be one of:"Must Have","Nice to Have", or"Bonus"- If
priorityis omitted, it defaults to"Nice to Have"
Tips for Developers
When building job creation forms or integrations:- Make Priority Selection Easy: Provide clear UI options for priority selection with helpful descriptions
- Character Limits: Show character count for
criterion_text(max 3000) - Validation: Enforce the 7-criteria maximum and validate text length
- Default Values: Pre-fill
priorityas"Nice to Have"for better UX - Help Text: Provide examples or tooltips explaining each priority level
Valid Job Role Values
Accounting, Administrative, Customer Service, Design, Education, Engineering, Finance, Healthcare, Hospitality & Tourism, Human Resources (HR), Information Technology (IT), Legal, Marketing, Media & Public Relations (PR), Pharmaceuticals, Production, Property Management, Public Service & Security, Real Estate, Retail, Sales, Supply Chain & Logistics
Parameter Quick Reference
| Parameter | Type | Required | Max Length/Value | Default | Purpose |
|---|---|---|---|---|---|
title | string | ✅ Yes | 3-500 chars | - | Job title displayed to candidates |
city | string | ✅ Yes | 200 chars | - | Job location city |
state | string | ✅ Yes | 200 chars | - | Job location state/province |
country | string | ✅ Yes | 200 chars | - | Job location country |
description | string | No | 10,000 chars | Auto-generated | Detailed job description |
status | string | No | - | "DRAFT" | Job visibility (DRAFT or ACTIVE) |
workMode | string | No | - | "ONSITE" | Work arrangement (ONSITE, REMOTE, HYBRID) |
screeningQuestion | array | No | 15 items max | [] | Pre-screening questions |
teamId | UUID | No | - | - | Team assignment |
contractType | string | No | - | - | Employment type |
degreeLevel | string | No | - | - | Minimum education required |
jobRole | string | No | - | - | Job category |
salaryRangeFrom | number | Conditional* | 0-9,999,999,999 | - | Minimum salary |
salaryRangeTo | number | Conditional* | 0-9,999,999,999 | - | Maximum salary |
salaryCurrency | string | Conditional* | - | - | Salary currency code |
potentialAmount | number | No | ≥ 0 | - | Revenue potential |
potentialAmountCurrency | string | Conditional** | 3 chars | - | Potential amount currency |
potentialHiresCount | number | No | ≥ 1 | - | Number of hires needed |
yearOfExperience | number | No | 0-50 | - | Years of experience required |
applicationForm | object | No | - | Auto-set | Candidate form requirements |
criterionDetails | array | No | 7 items max | - | Job requirements/criteria |
** Required if
potentialAmount is provided
Common Use Case Examples
Example 1: Remote Software Engineer Position
Example 2: Onsite Sales Position with Commission
Example 3: Entry-Level Internship
Example Request
Example Response
Validation Rules
title: Required, 3-500 charactersdescription: Optional, max 10,000 characterscity,state,country: Required, max 200 characters eachscreeningQuestion: Max 15 questions, each question 1-3000 characterssalaryRangeFrom,salaryRangeTo,salaryCurrency: Must all be provided together or all omitted.salaryRangeTomust be greater thansalaryRangeFrompotentialAmountandpotentialAmountCurrency: IfpotentialAmountis provided,potentialAmountCurrencyis required
Common Errors
Validation Error:Get Job
Retrieve detailed information about a specific job.GET /jobs/:jobId
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
jobId | integer | The unique identifier of the job |
Example Request
Example Response
Error Responses
Job Not Found:Update Job
Update an existing job posting. You can update any field(s) - all fields are optional for partial updates.PUT /jobs/:jobId
Authentication
Requires API key authentication viaAuthorization: Bearer YOUR_API_KEY header.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
jobId | integer | The unique identifier of the job to update |
Request Body
All fields are optional - you can update just the fields you want to change. Fields not included in the request will remain unchanged.Updateable Fields
All fields from the Create Job endpoint can be updated, with the following differences:- All fields are optional (no required fields for updates)
- Status values: Can be
"DRAFT","ACTIVE","INACTIVE", or"DELETED"(more options than create) - Null values: Some fields can be set to
nullto clear them (e.g.,teamId,contractType,degreeLevel,jobRole,potentialAmount,potentialAmountCurrency,potentialHiresCount,yearOfExperience,description,screeningQuestion,applicationForm,criterionDetails). Fields likecity,state, andcountrycannot be set tonull- omit them if you don’t want to change them. - Partial updates: Only include fields you want to change
Status Transition Rules
Important: Once a job status moves from"DRAFT", it cannot be changed back to "DRAFT".
Valid status transitions:
- ✅
DRAFT→ACTIVE→INACTIVE→DELETED - ❌
ACTIVE→DRAFT(not allowed)
applicationForm Updates
TheapplicationForm field allows you to configure which fields are required, optional, or hidden in the candidate application form.
Structure:
| Field | Values | Description |
|---|---|---|
phone | OPTIONAL, MANDATORY, OFF | Phone number field requirement |
currentJobTitle | OPTIONAL, MANDATORY, OFF | Current job title field requirement |
resume | OPTIONAL, MANDATORY, OFF | Resume/CV upload requirement |
otherFiles | OPTIONAL, MANDATORY, OFF | Other documents upload requirement |
company | OPTIONAL, MANDATORY, OFF | Current company field requirement |
isWillingToRelocate | MANDATORY, OFF | Willingness to relocate question (no OPTIONAL) |
noticePeriod | OPTIONAL, MANDATORY, OFF | Notice period field requirement |
expectedCTC | OPTIONAL, MANDATORY, OFF | Expected compensation requirement |
currentCTC | OPTIONAL, MANDATORY, OFF | Current compensation requirement |
currencyExpectedCTC | string | Currency code for expected CTC (required if expectedCTC is not OFF) |
currencyCurrentCTC | string | Currency code for current CTC (required if currentCTC is not OFF) |
expectedCTCPeriod | ANNUALLY, MONTHLY | Period for expected CTC |
currentCTCPeriod | ANNUALLY, MONTHLY | Period for current CTC |
gender | OPTIONAL, MANDATORY, OFF | Gender field requirement |
dateOfBirth | OPTIONAL, MANDATORY, OFF | Date of birth field requirement |
nationality | OPTIONAL, MANDATORY, OFF | Nationality field requirement |
- When updating
applicationForm, it will be merged with the existingapplicationForm(new values override existing) - If
expectedCTCorcurrentCTCis set toMANDATORYorOPTIONAL(notOFF), the corresponding currency field (currencyExpectedCTCorcurrencyCurrentCTC) is required - If currency is not provided and the job doesn’t have an existing currency value, the update will fail
Example Requests
Basic Update (Single Field)
Multiple Fields Update
Update applicationForm
Update Status
Update Salary Range
Update Screening Questions
Update Criterion Details
Example Response
Error Responses
Empty Request Body:Validation Rules
- Request body: Cannot be empty - at least one field must be provided
- Status: Cannot revert to
DRAFTonce moved past it - Salary fields: All three (
salaryRangeFrom,salaryRangeTo,salaryCurrency) must be provided together if any is provided - CTC fields:
currencyExpectedCTCrequired ifexpectedCTCis notOFF(and job doesn’t have existing currency) - CTC fields:
currencyCurrentCTCrequired ifcurrentCTCis notOFF(and job doesn’t have existing currency) - applicationForm: Merged with existing
applicationFormif present - All field validations: Same as Create Job endpoint (type, length, format validations)
Best Practices
- Partial Updates: Only include fields you want to change - other fields remain unchanged
- Status Management: Use status transitions carefully - remember you can’t revert to DRAFT
- applicationForm: When updating
applicationForm, you can provide just the fields you want to change - they’ll be merged with existing values - Currency Fields: Always provide currency when setting CTC fields to MANDATORY or OPTIONAL
- Error Handling: Check error codes to understand validation failures
Use Cases
Syncing Open Roles
Create jobs programmatically from your internal systems to keep TapTalent in sync with your ATS or HRIS.Listing All Jobs
Retrieve a paginated list of all jobs in your company to:- Display jobs in your dashboard
- Sync job data with external systems
- Monitor job status and candidate counts
- Track revenue and hiring metrics
Updating Hiring Requirements
Update job details programmatically to:- Modify job descriptions and requirements
- Change candidate form requirements (
applicationForm) - Update screening questions and criteria
- Adjust salary ranges and job details
- Manage job status lifecycle
Job Status Management
Create jobs inDRAFT status and activate them when ready, or manage job lifecycle programmatically.
Next Steps
- Set up Webhooks to receive notifications when jobs are updated
- Review Integration Notes for best practices
- Explore other API endpoints
.png?fit=max&auto=format&n=lKy84_BssSCy2hcz&q=85&s=ac7c949427cc2893306f6036415f087e)