> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.futurejobs.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.futurejobs.ai/_mcp/server.

# JD to Filters

POST https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation
Content-Type: application/json

## JD to Filters

Analyzes a job description (JD) text and extracts structured sourcing filters (annotations) that can be used to search and match candidate profiles.

---

## Request

**Method:** `POST`  
**URL:** `{{BASE_URL}}/api/v1/wl/sourcing-session/get-annotation`

### Headers

| Key | Value |
| --- | --- |
| `Authorization` | `{{FJ_API_KEY}}` |
| `Content-Type` | `application/json` |

### Request Body

Sent as raw JSON.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `userText` | `string` | Yes | The full job description text to be analyzed. The API parses this to extract relevant sourcing filters such as industry, skills, experience level, and education. |
| `linkedin_profile_url` | `string` | No | Optional LinkedIn profile URL. Can be provided to further refine or contextualize the annotation. Pass an empty string if not applicable. |

**Example Body:**

``` json
{
  "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain...",
  "linkedin_profile_url": ""
}

 ```

---

## Response

**Status:** `200 OK`

Returns a JSON object where each key represents a candidate profile field (e.g., `all_employers.company_industries`, `education_background.degree_name`). Each field contains:

| Property | Type | Description |
| --- | --- | --- |
| `presence` | `boolean` | Indicates whether this filter should be actively applied when sourcing candidates. |
| `value` | `array` | The extracted values for this filter. May contain `null` if no relevant value was found. |

**Example Response:**

``` json
{
  "all_employers.company_industries": {
    "presence": true,
    "value": ["Information Services", "Technology, Information and Internet", "Financial Services", "Software Development"]
  },
  "education_background.degree_name": {
    "presence": false,
    "value": [null]
  }
}

 ```

Reference: https://docs.futurejobs.ai/fj-sourcing-ap-is/filters/jd-to-filters

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: FJ Sourcing APIs
  version: 1.0.0
paths:
  /api/v1/wl/sourcing-session/get-annotation:
    post:
      operationId: jd-to-filters
      summary: JD to Filters
      description: >-
        ## JD to Filters


        Analyzes a job description (JD) text and extracts structured sourcing
        filters (annotations) that can be used to search and match candidate
        profiles.


        ---


        ## Request


        **Method:** `POST`  

        **URL:** `{{BASE_URL}}/api/v1/wl/sourcing-session/get-annotation`


        ### Headers


        | Key | Value |

        | --- | --- |

        | `Authorization` | `{{FJ_API_KEY}}` |

        | `Content-Type` | `application/json` |


        ### Request Body


        Sent as raw JSON.


        | Field | Type | Required | Description |

        | --- | --- | --- | --- |

        | `userText` | `string` | Yes | The full job description text to be
        analyzed. The API parses this to extract relevant sourcing filters such
        as industry, skills, experience level, and education. |

        | `linkedin_profile_url` | `string` | No | Optional LinkedIn profile
        URL. Can be provided to further refine or contextualize the annotation.
        Pass an empty string if not applicable. |


        **Example Body:**


        ``` json

        {
          "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain...",
          "linkedin_profile_url": ""
        }

         ```

        ---


        ## Response


        **Status:** `200 OK`


        Returns a JSON object where each key represents a candidate profile
        field (e.g., `all_employers.company_industries`,
        `education_background.degree_name`). Each field contains:


        | Property | Type | Description |

        | --- | --- | --- |

        | `presence` | `boolean` | Indicates whether this filter should be
        actively applied when sourcing candidates. |

        | `value` | `array` | The extracted values for this filter. May contain
        `null` if no relevant value was found. |


        **Example Response:**


        ``` json

        {
          "all_employers.company_industries": {
            "presence": true,
            "value": ["Information Services", "Technology, Information and Internet", "Financial Services", "Software Development"]
          },
          "education_background.degree_name": {
            "presence": false,
            "value": [null]
          }
        }

         ```
      tags:
        - subpackage_filters
      parameters:
        - name: x-fj-api-key
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Filters_JD to Filters_Response_200'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userText:
                  type: string
                linkedin_profile_url:
                  type: string
              required:
                - userText
                - linkedin_profile_url
servers:
  - url: https://prod.api.futurejobs.ai
    description: https://prod.api.futurejobs.ai
components:
  schemas:
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataAllEmployersCompanyIndustries:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            type: string
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataAllEmployersCompanyIndustries
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundDegreeName:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            description: Any type
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundDegreeName
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundFieldOfStudy:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            description: Any type
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundFieldOfStudy
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataYearsOfExperienceRaw:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            type: integer
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataYearsOfExperienceRaw
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCurrentEmployersTitle:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            type: string
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCurrentEmployersTitle
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataRegion:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            description: Any type
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataRegion
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCountryRegion:
      type: object
      properties:
        presence:
          type: boolean
        value:
          type: array
          items:
            type: string
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCountryRegion
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkillsValue:
      type: object
      properties:
        mandatory:
          type: array
          items:
            type: string
        core:
          type: array
          items:
            type: string
        secondary:
          type: array
          items:
            description: Any type
      required:
        - mandatory
        - core
        - secondary
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkillsValue
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkills:
      type: object
      properties:
        presence:
          type: boolean
        value:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkillsValue
      required:
        - presence
        - value
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkills
    ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaData:
      type: object
      properties:
        all_employers.company_industries:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataAllEmployersCompanyIndustries
        education_background.degree_name:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundDegreeName
        education_background.field_of_study:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataEducationBackgroundFieldOfStudy
        years_of_experience_raw:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataYearsOfExperienceRaw
        current_employers.title:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCurrentEmployersTitle
        region:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataRegion
        country_region:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataCountryRegion
        skills:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaDataSkills
      required:
        - all_employers.company_industries
        - education_background.degree_name
        - education_background.field_of_study
        - years_of_experience_raw
        - current_employers.title
        - region
        - country_region
        - skills
      title: >-
        ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaData
    Filters_JD to Filters_Response_200:
      type: object
      properties:
        statusCode:
          type: integer
        data:
          $ref: >-
            #/components/schemas/ApiV1WlSourcingSessionGetAnnotationPostResponsesContentApplicationJsonSchemaData
        message:
          type: string
        status:
          type: string
      required:
        - statusCode
        - data
        - message
        - status
      title: Filters_JD to Filters_Response_200
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-fj-api-key

```

## Examples



**Request**

```json
{
  "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.",
  "linkedin_profile_url": ""
}
```

**Response**

```json
{
  "statusCode": 200,
  "data": {
    "all_employers.company_industries": {
      "presence": true,
      "value": [
        "Information Services",
        "Technology, Information and Internet",
        "Technology, Information and Media",
        "Financial Services",
        "Software Development",
        "IT System Custom Software Development",
        "Design Services",
        "Desktop Computing Software Products",
        "Mobile Computing Software Products",
        "Internet Publishing"
      ]
    },
    "education_background.degree_name": {
      "presence": false,
      "value": [
        null
      ]
    },
    "education_background.field_of_study": {
      "presence": false,
      "value": []
    },
    "years_of_experience_raw": {
      "presence": true,
      "value": [
        3,
        7
      ]
    },
    "current_employers.title": {
      "presence": true,
      "value": [
        ".NET Developer",
        "C# Developer",
        "Backend Developer",
        "Software Engineer",
        "Fintech Developer",
        "API Developer"
      ]
    },
    "region": {
      "presence": false,
      "value": []
    },
    "country_region": {
      "presence": false,
      "value": [
        "India"
      ]
    },
    "skills": {
      "presence": true,
      "value": {
        "mandatory": [
          "C#",
          ".NET Core"
        ],
        "core": [
          "SQL Server",
          "Cloud Technologies"
        ],
        "secondary": []
      }
    }
  },
  "message": "Gemini response appended with LinkedIn fields.",
  "status": "SUCCESS"
}
```

**SDK Code**

```python Filters_JD to Filters_example
import requests

url = "https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation"

payload = {
    "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.",
    "linkedin_profile_url": ""
}
headers = {
    "x-fj-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript Filters_JD to Filters_example
const url = 'https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation';
const options = {
  method: 'POST',
  headers: {'x-fj-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"userText":"Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.","linkedin_profile_url":""}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Filters_JD to Filters_example
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation"

	payload := strings.NewReader("{\n  \"userText\": \"Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.\",\n  \"linkedin_profile_url\": \"\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-fj-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Filters_JD to Filters_example
require 'uri'
require 'net/http'

url = URI("https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-fj-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"userText\": \"Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.\",\n  \"linkedin_profile_url\": \"\"\n}"

response = http.request(request)
puts response.read_body
```

```java Filters_JD to Filters_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation")
  .header("x-fj-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"userText\": \"Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.\",\n  \"linkedin_profile_url\": \"\"\n}")
  .asString();
```

```php Filters_JD to Filters_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation', [
  'body' => '{
  "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.",
  "linkedin_profile_url": ""
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-fj-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp Filters_JD to Filters_example
using RestSharp;

var client = new RestClient("https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation");
var request = new RestRequest(Method.POST);
request.AddHeader("x-fj-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"userText\": \"Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.\",\n  \"linkedin_profile_url\": \"\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift Filters_JD to Filters_example
import Foundation

let headers = [
  "x-fj-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "userText": "Looking for a .NET Developer with 3–7 years of experience in building scalable backend systems, preferably in the fintech domain. The role involves developing APIs and microservices using C#, .NET Core, SQL Server, and cloud technologies while ensuring high performance, security, and reliability of financial applications.",
  "linkedin_profile_url": ""
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://prod.api.futurejobs.ai/api/v1/wl/sourcing-session/get-annotation")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```