AI Applyd Search API

The search API from AI Applyd — 2 operation(s) for search.

Operations 2

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /search/describe Turn a plain-language job search into settings · Describe Your Search (natural language) #
Ask an LLM
“Can I describe the jobs I want in my own words and get search settings?”
“Can I tweak my existing search by describing what to change?”
Tell an agent
Set up a job search from this description: {message}.
Adjust search config {currentConfig} with: {message}.
POST /search/describe/from-resume Derive job search settings from my resume · Set Up Search From Resume #
Ask an LLM
“Can my job search be set up automatically from my resume?”
“Does building search settings from a resume use AI?”
Tell an agent
Set up my job search from my latest resume.
Derive search settings from resume data {parsedData}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/aiapplyd:aiapplyd-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

aiapplyd-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@aiapplyd.com
    name: AI Applyd
    url: https://aiapplyd.com
  description: 'The AI Applyd API runs the whole job hunt for you: it matches you to roles that fit your profile, rewrites your resume for each posting, writes the cover letter the form asks for, and auto-applies across the major applicant tracking systems.'
  license:
    name: Proprietary
    url: https://aiapplyd.com/legal/terms
  title: AI Applyd Search API
  version: 115c47ce
servers:
- description: Current environment
  url: https://api.aiapplyd.com/api/v1
security:
- BearerAuth: []
tags:
- name: Search
paths:
  /search/describe:
    post:
      tags:
      - Search
      summary: Describe Your Search (natural language)
      description: Turn a free-text description of the job search the user wants into a structured search configuration. Stateless - nothing is persisted; the caller applies the returned config.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDescribeRequest'
      responses:
        '200':
          description: Structured search config derived from the message
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchDescribeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      operationId: postSearchDescribe
  /search/describe/from-resume:
    post:
      tags:
      - Search
      summary: Set Up Search From Resume
      description: Derive a structured search configuration from a resume (deterministic canonicalization, no AI). Send `parsedData` to derive from the picked/uploaded resume, or omit the body to derive from the user's latest READY base resume. Stateless - nothing is persisted; the caller applies the returned config.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchDescribeFromResumeRequest'
      responses:
        '200':
          description: Structured search config derived from the base resume
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchDescribeFromResumeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
      operationId: postSearchDescribeFromResume
components:
  schemas:
    DescribeSearchResult:
      type: object
      properties:
        config:
          $ref: '#/components/schemas/SearchConfig'
        summary:
          type: string
          maxLength: 600
        understood:
          type: boolean
      required:
      - config
      - summary
      - understood
    SearchDescribeResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DescribeSearchResult'
        meta:
          $ref: '#/components/schemas/ResponseMetadata'
        success:
          type: boolean
          enum:
          - true
      required:
      - data
      - success
      additionalProperties: false
      description: Successful API response
    EducationItem:
      type: object
      properties:
        degree:
          type: string
          description: Degree or certification name
          example: B.S. Computer Science
        institution:
          type: string
          description: School or institution name
          example: MIT
        year:
          type:
          - string
          - 'null'
          description: Graduation year or date range
          example: '2018'
      required:
      - degree
      - institution
      - year
      additionalProperties: false
    SearchDescribeFromResumeResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DescribeSearchResult'
        meta:
          $ref: '#/components/schemas/ResponseMetadata'
        success:
          type: boolean
          enum:
          - true
      required:
      - data
      - success
      additionalProperties: false
      description: Successful API response
    SearchDescribeFromResumeRequest:
      type: object
      properties:
        parsedData:
          allOf:
          - $ref: '#/components/schemas/ParsedResumeData'
          - description: Resume data parsed client-side (temporary upload or picked document). When omitted, the endpoint derives from the latest READY base resume.
    SearchConfig:
      type: object
      properties:
        targetRoles:
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 120
          maxItems: 5
        locations:
          type:
          - array
          - 'null'
          items:
            type: string
            minLength: 1
            maxLength: 160
          maxItems: 5
        workStyles:
          type: array
          items:
            type: string
            enum:
            - onsite
            - hybrid
            - remote
            description: User's preferred work style, physical mode only, no geo scoping
            example: remote
          maxItems: 3
        experienceLevels:
          type: array
          items:
            type: string
            enum:
            - entry
            - mid
            - senior
            - lead
            - executive
            description: Professional experience level
            example: mid
          maxItems: 3
        remoteGlobal:
          type:
          - boolean
          - 'null'
        salaryMin:
          type:
          - integer
          - 'null'
          minimum: 0
        salaryMax:
          type:
          - integer
          - 'null'
          minimum: 0
        visaSponsorship:
          type:
          - string
          - 'null'
          enum:
          - required
          - preferred
          - not_needed
          - any
          - null
          description: Visa sponsorship preference
          example: any
        presetId:
          type: string
          enum:
          - balanced
          - the_professional
          - the_conversationalist
          - the_storyteller
          - the_closer
          - the_enthusiast
          - custom
          description: AI communication style preset for generated content
          example: balanced
        minMatchScore:
          type: integer
          minimum: 0
          maximum: 100
        dailyLimit:
          type: integer
          minimum: 1
          maximum: 50
        coverLetterStrategy:
          type: string
          enum:
          - 'off'
          - use_base
          - tailor_base
          - generate_new
          description: 'How AI handles cover letters: off, use base as-is, tailor base per job, or generate new per job'
          example: generate_new
        resumeStrategy:
          type: string
          enum:
          - base
          - tailor
          description: 'How AI handles your resume per application: base (as-is) or tailor (customized per job)'
          example: tailor
      additionalProperties: false
    ParsedResumeData:
      type: object
      properties:
        addressLine1:
          type:
          - string
          - 'null'
          description: Street + number exactly as printed, or null
          example: Hauptstrasse 12
        city:
          type:
          - string
          - 'null'
          description: City from resume
          example: San Francisco
        companySize:
          type: array
          items:
            type: string
          description: 'AI-inferred company size preferences: startup, small, medium, large, enterprise'
          example:
          - startup
          - medium
        country:
          type:
          - string
          - 'null'
          description: Country from resume
          example: United States
        currentJobTitle:
          type:
          - string
          - 'null'
          description: Current or most recent job title
          example: Senior Software Engineer
        documentId:
          type: integer
          description: ID of the saved user document
          example: 42
        education:
          type: array
          items:
            $ref: '#/components/schemas/EducationItem'
          description: Education history extracted from resume
        educationLevel:
          type:
          - string
          - 'null'
          description: 'AI-inferred education level: high_school, associate, bachelor, master, doctorate'
          example: bachelor
        email:
          type:
          - string
          - 'null'
          description: Email address from resume
          example: john.doe@example.com
        experienceLevel:
          type:
          - string
          - 'null'
          description: 'AI-inferred experience level: entry, mid, senior, lead, executive'
          example: senior
        fieldEvidence:
          type: array
          items:
            $ref: '#/components/schemas/ResumeFieldEvidence'
          description: Verbatim quotes the model offers for contact and level facts
        firstName:
          type:
          - string
          - 'null'
          description: First name parsed from full name
          example: John
        fullName:
          type:
          - string
          - 'null'
          description: Full name from resume
          example: John Doe
        githubUrl:
          type:
          - string
          - 'null'
          description: GitHub profile URL exactly as printed, or null
          example: https://github.com/johndoe
        industries:
          type: array
          items:
            type: string
          description: AI-inferred industries from work history
          example:
          - Software & SaaS
          - AI & Machine Learning
        jobTypes:
          type: array
          items:
            type: string
          description: 'AI-inferred job types: full_time, part_time, contract, freelance, internship, temporary'
          example:
          - full_time
        lastName:
          type:
          - string
          - 'null'
          description: Last name parsed from full name
          example: Doe
        linkedinUrl:
          type:
          - string
          - 'null'
          description: LinkedIn profile URL exactly as printed, or null
          example: https://www.linkedin.com/in/johndoe
        phone:
          type:
          - string
          - 'null'
          description: Phone number from resume
          example: +1-555-123-4567
        portfolioUrl:
          type:
          - string
          - 'null'
          description: Personal website / portfolio URL exactly as printed, or null
          example: https://johndoe.dev
        prefill:
          $ref: '#/components/schemas/ResumePrefill'
        professionalSummary:
          type:
          - string
          - 'null'
          description: Professional summary or objective
          example: Experienced full-stack engineer with 8 years building scalable web applications.
        skills:
          type: array
          items:
            type: string
          description: Skills extracted from resume
          example:
          - TypeScript
          - React
          - Node.js
          - PostgreSQL
        state:
          type:
          - string
          - 'null'
          description: State/province from resume
          example: California
        suggestedJobTitles:
          type: array
          items:
            type: string
          description: Suggested job titles based on experience
          example:
          - Senior Software Engineer
          - Full Stack Developer
          - Tech Lead
        suggestedLocations:
          type: array
          items:
            type: string
          description: Suggested job search locations based on resume
          example:
          - San Francisco, CA
          - Remote
        workExperience:
          type: array
          items:
            $ref: '#/components/schemas/WorkExperienceItem'
          description: Work experience history extracted from resume
        yearsOfExperience:
          type:
          - integer
          - 'null'
          description: Estimated total years of experience (whole number)
          example: 8
        zipCode:
          type:
          - string
          - 'null'
          description: ZIP/postal code from resume
          example: '94105'
      required:
      - city
      - companySize
      - country
      - currentJobTitle
      - documentId
      - education
      - educationLevel
      - email
      - experienceLevel
      - firstName
      - fullName
      - industries
      - jobTypes
      - lastName
      - phone
      - professionalSummary
      - skills
      - state
      - suggestedJobTitles
      - suggestedLocations
      - workExperience
      - yearsOfExperience
      - zipCode
      additionalProperties: false
    SearchDescribeRequest:
      type: object
      properties:
        message:
          type: string
          minLength: 1
          maxLength: 2000
          description: Natural-language description of the job search the user wants.
          example: Remote senior backend roles in the US paying at least $180k
        priorConfig:
          allOf:
          - $ref: '#/components/schemas/SearchConfig'
          - description: Config produced by the previous describe turn (conversation memory).
        currentConfig:
          allOf:
          - $ref: '#/components/schemas/SearchConfig'
          - description: The user's current live search config, so the model only changes what was asked.
      required:
      - message
      additionalProperties: false
    ResponseMetadata:
      type: object
      properties:
        duration:
          type: number
          description: Request duration in milliseconds
          example: 150
          exclusiveMinimum: 0
        performance:
          type: object
          properties:
            dbQueries:
              type: integer
              minimum: 0
            totalDbTime:
              type: number
              minimum: 0
          description: Performance metrics (preview/local only)
        requestId:
          type: string
          description: Unique request identifier
          example: req_abc123
        timestamp:
          type: string
          format: date-time
          description: ISO 8601 timestamp
          example: '2026-09-25T17:29:47.224Z'
        version:
          type: string
          description: API version
          example: v1
    ResumePrefill:
      type: object
      properties:
        addressLine1:
          type:
          - string
          - 'null'
        city:
          type:
          - string
          - 'null'
        country:
          type:
          - string
          - 'null'
        currentEmployer:
          type:
          - string
          - 'null'
        githubUrl:
          type:
          - string
          - 'null'
        highestEducation:
          type:
          - string
          - 'null'
          enum:
          - high_school
          - associate
          - bachelor
          - master
          - doctorate
          - any
          - null
          description: Education level requirement
          example: any
        homeLocation:
          type:
          - string
          - 'null'
        linkedinUrl:
          type:
          - string
          - 'null'
        ownTitles:
          type: array
          items:
            type: string
        phone:
          type:
          - string
          - 'null'
        portfolioUrl:
          type:
          - string
          - 'null'
        seeded:
          type: object
          properties:
            jobPreferences:
              type: object
              properties:
                locations:
                  type: boolean
                  enum:
                  - true
                experienceLevels:
                  type: boolean
                  enum:
                  - true
                skills:
                  type: boolean
                  enum:
                  - true
                targetRoles:
                  type: boolean
                  enum:
                  - true
            profile:
              type: object
              properties:
                addressLine1:
                  type: boolean
                  enum:
                  - true
                city:
                  type: boolean
                  enum:
                  - true
                state:
                  type: boolean
                  enum:
                  - true
                country:
                  type: boolean
                  enum:
                  - true
                zipCode:
                  type: boolean
                  enum:
                  - true
                phone:
                  type: boolean
                  enum:
                  - true
                linkedinUrl:
                  type: boolean
                  enum:
                  - true
                githubUrl:
                  type: boolean
                  enum:
                  - true
                portfolioUrl:
                  type: boolean
                  enum:
                  - true
                currentEmployer:
                  type: boolean
                  enum:
                  - true
                highestEducation:
                  type: boolean
                  enum:
                  - true
                yearsOfExperience:
                  type: boolean
                  enum:
                  - true
          additionalProperties: false
        state:
          type:
          - string
          - 'null'
        workHistoryLocations:
          type: array
          items:
            type: string
        yearsOfExperience:
          type:
          - integer
          - 'null'
        zipCode:
          type:
          - string
          - 'null'
      required:
      - addressLine1
      - city
      - country
      - currentEmployer
      - githubUrl
      - highestEducation
      - homeLocation
      - linkedinUrl
      - ownTitles
      - phone
      - portfolioUrl
      - state
      - workHistoryLocations
      - yearsOfExperience
      - zipCode
      additionalProperties: false
    ResumeFieldEvidence:
      type: object
      properties:
        confidence:
          type: string
          enum:
          - high
          - medium
          - low
          description: 'How the value was read: high/medium when printed in the resume, low when inferred'
          example: high
        field:
          type: string
          enum:
          - addressLine1
          - city
          - state
          - country
          - zipCode
          - phone
          - email
          - linkedinUrl
          - githubUrl
          - portfolioUrl
          - currentEmployer
          - educationLevel
          description: A parsed resume fact the model must back with a verbatim quote from the resume
          example: city
        quote:
          type:
          - string
          - 'null'
          description: The exact contiguous resume text that contains the value (<=160 chars), or null
          example: Berlin, Germany | +49 176 1234 5678
      required:
      - confidence
      - field
      - quote
      additionalProperties: false
    WorkExperienceItem:
      type: object
      properties:
        company:
          type: string
          description: Company name
          example: Acme Corp
        current:
          type: boolean
          description: Whether this is the current position
          example: false
        description:
          type:
          - string
          - 'null'
          description: Role description or achievements
          example: Led a team of 5 engineers building microservices
        endDate:
          type:
          - string
          - 'null'
          description: End date (free-form from resume)
          example: Dec 2023
        location:
          type:
          - string
          - 'null'
          description: City of this role exactly as printed on the resume
          example: Berlin
        startDate:
          type:
          - string
          - 'null'
          description: Start date (free-form from resume)
          example: Jan 2020
        title:
          type: string
          description: Job title
          example: Senior Software Engineer
      required:
      - company
      - current
      - description
      - endDate
      - startDate
      - title
      additionalProperties: false
    ApiErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
            context:
              oneOf:
              - type: object
                properties:
                  errorType:
                    type: string
                    enum:
                    - validation
                  field:
                    type: string
                  fieldErrors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        expected:
                          type: string
                        field:
                          type: string
                        message:
                          type: string
                        received:
                          type: string
                      required:
                      - field
                      - message
                  schemaName:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  attemptedEmail:
                    type: string
                    format: email
                  errorType:
                    type: string
                    enum:
                    - authentication
                  failureReason:
                    type: string
                    enum:
                    - invalid_credentials
                    - account_locked
                    - expired_token
                    - token_expired
                    - missing_token
                    - invalid_token
                    - session_expired
                    description: Reason for authentication failure
                    example: token_expired
                  ipAddress:
                    type: string
                  operation:
                    type: string
                  service:
                    type: string
                  userAgent:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  actualPermission:
                    type: string
                  errorType:
                    type: string
                    enum:
                    - authorization
                  requiredPermission:
                    type: string
                  resource:
                    type: string
                  resourceId:
                    type: string
                  userId:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  constraint:
                    type: string
                  errorType:
                    type: string
                    enum:
                    - database
                  operation:
                    type: string
                    enum:
                    - insert
                    - update
                    - delete
                    - select
                    - batch
                    - transaction
                    - migration
                    description: Type of database operation
                    example: select
                  resourceId:
                    type: string
                  sqlState:
                    type: string
                  table:
                    type: string
                  userId:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  endpoint:
                    type: string
                  errorType:
                    type: string
                    enum:
                    - external_service
                  httpStatus:
                    type: number
                  operation:
                    type: string
                  resourceId:
                    type: string
                  responseTime:
                    type: number
                  retryAttempt:
                    type: integer
                  service:
                    type: string
                  serviceName:
                    type: string
                  userId:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  errorType:
                    type: string
                    enum:
                    - resource
                  resource:
                    type: string
                  resourceId:
                    type: string
                  service:
                    type: string
                  userId:
                    type: string
                required:
                - errorType
              - type: object
                properties:
                  errorType:
                    type: string
                    enum:
                    - rate_limit
                  limit:
                    type: number
                  resetTime:
                    type: string
                  windowMs:
                    type: number
                required:
                - errorType
              - type: object
                properties:
                  configKey:
                    type: string
                  errorType:
                    type: string
                    enum:
                    - configuration
                  operation:
                    type: string
                  service:
                    type: string
                required:
                - errorType
              description: Type-safe error context information
              example:
                errorType: validation
                fieldErrors:
                - field: email
                  message: Invalid email format
            details:
              oneOf:
              - type: object
                properties:
                  detailType:
                    type: string
                    enum:
                    - validation
                  validationErrors:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        field:
                          type: string
                        message:
                          type: string
                      required:
                      - field
                      - message
                required:
                - detailType
                - validationErrors
                additionalProperties: false
              - type: object
                properties:
                  detailType:
                    type: string
                    enum:
                    - service_error
                  originalError:
                    type: string
                  serviceName:
                    type: string
                required:
                - detailType
                - serviceName
                additionalProperties: false
              - type: object
                properties:
                  currentSize:
                    type: number
                  detailType:
                    type: string
                    enum:
                    - batch
                  originalError:
                    type: string
                  statementCount:
                    type: number
                required:
                - detailType
                additionalProperties: false
              - type: object
                properties:
                  detailType:
                    type: string
                    enum:
                    - rate_limit
                  limit:
                    type: number
                  resetTime:
                    type: string
                  windowMs:
                    type: number
                required:
                - detailType
                - limit
                - resetTime
                - windowMs
                additionalProperties: false
              - type: object
                properties:
                  conflictingField:
                    type: string
                  detailType:
                    type: string
                    enum:
                    - resource
                  resourceId:
                    anyOf:
                    - type: string
                    - type: number
                  resourceType:
                    type: string
                required:
                - detailType
                additionalProperties: false
              - type: object
                properties:
                  detailType:
                    type: string
                    enum:
                    - generic
                  info:
                    type: string
                required:
                - detailType
                additionalProperties: false
              - type: object
                properties:
                  currentTokens:
                    type: integer
                    minimum: 0
                  detailType:
                    type: string
                    enum:
                    - insufficient_tokens
                  requiredTokens:
                    type: integer
                    minimum: 0
                required:
                - currentTokens
                - detailType
                - requiredTokens
                additionalProperties: false
            message:
              type: string
            validation:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  field:
                    type: string
                  message:
                    type: string
                required:
                - field
                - message
                additionalProperties: false
          required:
          - code
          - message
          additionalProperties: false
        meta:
          $ref: '#/components/schemas/ResponseMetadata'
        success:
          type: boolean
          enum:
          - false
      required:
      - error
      - success
      additionalProperties: false
  securitySchemes:
    BearerAuth:
      description: 'Session token from signing in to AI Applyd, sent as `Authorization: Bearer <token>`.'
      scheme: bearer
      type: http