openapi: 3.0.3 info: title: SmartRecruiters Posting API description: >- The SmartRecruiters Posting API enables customers to build fully customizable career sites by providing access to published job postings. Supports searching and filtering postings by keyword, location, department, language, and custom fields. version: 1.0.0 contact: name: SmartRecruiters Developer Support url: https://developers.smartrecruiters.com/ termsOfService: https://www.smartrecruiters.com/legal/ servers: - url: https://api.smartrecruiters.com description: SmartRecruiters Production API security: - ApiKey: [] paths: /v1/companies/{companyIdentifier}/postings: get: operationId: listPostings summary: List Job Postings description: >- Returns a paginated list of active job postings published by a company. Supports filtering by keyword, location, department, and custom fields. tags: - Postings parameters: - name: companyIdentifier in: path required: true description: The company identifier as it appears at the end of the default career site URL schema: type: string - name: q in: query required: false description: Full-text search query across job title and description schema: type: string - name: limit in: query required: false description: Maximum number of results to return schema: type: integer default: 10 maximum: 100 - name: offset in: query required: false description: Number of results to skip for pagination schema: type: integer default: 0 - name: country in: query required: false description: Filter by country code (ISO 3166-1 alpha-2) schema: type: string - name: region in: query required: false description: Filter by region or state name schema: type: string - name: city in: query required: false description: Filter by city name schema: type: string - name: department in: query required: false description: Filter by department name schema: type: string - name: language in: query required: false description: Filter postings by language code (e.g., en, fr, de) schema: type: string responses: '200': description: List of job postings content: application/json: schema: $ref: '#/components/schemas/PostingListResult' '400': description: Bad request '401': description: Unauthorized '403': description: Forbidden '404': description: Company not found '429': description: Too many requests /v1/companies/{companyIdentifier}/postings/{postingId}: get: operationId: getPosting summary: Get Job Posting description: >- Retrieves detailed information about a specific job posting including full job description, qualifications, company description, and location details. tags: - Postings parameters: - name: companyIdentifier in: path required: true description: The company identifier schema: type: string - name: postingId in: path required: true description: The unique posting ID or UUID schema: type: string responses: '200': description: Job posting details content: application/json: schema: $ref: '#/components/schemas/PostingDetails' '401': description: Unauthorized '403': description: Forbidden '404': description: Posting not found /v1/companies/{companyIdentifier}/postings/{postingId}/candidates: post: operationId: submitApplication summary: Submit Job Application description: >- Creates a new candidate application for a specific job posting. Supports submission of candidate profile, screening question answers, and resume/CV attachments. tags: - Applications parameters: - name: companyIdentifier in: path required: true description: The company identifier schema: type: string - name: postingId in: path required: true description: The unique posting ID or UUID schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApplicationSubmission' responses: '201': description: Application submitted successfully content: application/json: schema: $ref: '#/components/schemas/ApplicationResult' '400': description: Bad request '401': description: Unauthorized '404': description: Posting not found '429': description: Too many requests /v1/companies/{companyIdentifier}/postings/{postingId}/candidates/{candidateId}/status: get: operationId: getApplicationStatus summary: Get Application Status description: >- Retrieves the current application status of a specific candidate for a specific job posting. tags: - Applications parameters: - name: companyIdentifier in: path required: true description: The company identifier schema: type: string - name: postingId in: path required: true description: The unique posting ID or UUID schema: type: string - name: candidateId in: path required: true description: The candidate ID schema: type: string responses: '200': description: Application status content: application/json: schema: $ref: '#/components/schemas/ApplicationStatus' '401': description: Unauthorized '403': description: Forbidden '404': description: Application not found components: securitySchemes: ApiKey: type: apiKey in: header name: X-SmartToken OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://www.smartrecruiters.com/identity/oauth/allow tokenUrl: https://www.smartrecruiters.com/identity/oauth/token scopes: candidates.read: Read candidate data candidates.write: Write candidate data jobs.read: Read job data jobs.write: Write job data schemas: PostingListResult: type: object properties: limit: type: integer description: Maximum number of results returned offset: type: integer description: Number of results skipped totalFound: type: integer description: Total number of matching postings content: type: array items: $ref: '#/components/schemas/Posting' Posting: type: object properties: id: type: string description: Unique posting identifier uuid: type: string description: Universal unique identifier for the posting title: type: string description: Job title department: $ref: '#/components/schemas/Department' location: $ref: '#/components/schemas/Location' releasedDate: type: string format: date-time description: Date when the posting was released applyUrl: type: string format: uri description: URL to apply for the position industry: $ref: '#/components/schemas/Industry' function: $ref: '#/components/schemas/Function' experienceLevel: $ref: '#/components/schemas/ExperienceLevel' employmentType: $ref: '#/components/schemas/EmploymentType' company: $ref: '#/components/schemas/CompanySummary' PostingDetails: allOf: - $ref: '#/components/schemas/Posting' - type: object properties: jobAd: type: object properties: sections: type: object properties: companyDescription: type: object properties: title: type: string text: type: string jobDescription: type: object properties: title: type: string text: type: string qualifications: type: object properties: title: type: string text: type: string additionalInformation: type: object properties: title: type: string text: type: string questionnaire: type: object properties: id: type: string questions: type: array items: $ref: '#/components/schemas/Question' language: type: string description: Language of the posting ApplicationSubmission: type: object required: - firstName - lastName - email properties: firstName: type: string description: Candidate first name lastName: type: string description: Candidate last name email: type: string format: email description: Candidate email address phone: type: string description: Candidate phone number location: $ref: '#/components/schemas/Location' web: type: object properties: linkedIn: type: string format: uri facebook: type: string format: uri portfolio: type: string format: uri tags: type: array items: type: string answers: type: array description: Answers to screening questions items: $ref: '#/components/schemas/Answer' ApplicationResult: type: object properties: id: type: string description: Application ID candidateId: type: string description: Candidate ID postingId: type: string description: Posting ID status: type: string description: Initial application status ApplicationStatus: type: object properties: candidateId: type: string postingId: type: string status: type: string enum: - IN_PROGRESS - REJECTED - OFFERED - HIRED reasonForRejection: type: object properties: id: type: string label: type: string Department: type: object properties: id: type: string label: type: string Location: type: object properties: country: type: string description: ISO 3166-1 alpha-2 country code countryCode: type: string region: type: string city: type: string address: type: string postalCode: type: string remote: type: boolean description: Whether the position is remote Industry: type: object properties: id: type: string label: type: string Function: type: object properties: id: type: string label: type: string ExperienceLevel: type: object properties: id: type: string label: type: string EmploymentType: type: object properties: id: type: string label: type: string CompanySummary: type: object properties: identifier: type: string name: type: string Question: type: object properties: id: type: string required: type: boolean label: type: string type: type: string enum: - TEXT - SINGLE_SELECT - MULTI_SELECT - DATE - NUMBER - BOOLEAN answerOptions: type: array items: type: object properties: id: type: string label: type: string Answer: type: object properties: id: type: string description: Question ID answer: oneOf: - type: string - type: array items: type: string - type: boolean