---
updatedAt: 2026-10-13T18:38:54.000Z
agentTools:
  projectIndex: https://developers.hrflow.ai/llms.txt
---

# 🧠 Grade Profiles indexed in a Source for a Job

This endpoint allows grading a Profile for a Job.

<Callout icon="📘" theme="info">
  ### Prerequisites

  1. [✨ Create a Workspace](https://hrflow.ai/signup)
  2. [🔑 Get your API Key](https://developers.hrflow.ai/docs/api-authentification)
  3. [🔌 Create a Source](https://developers.hrflow.ai/docs/connectors-source)
  4. [💾 Index a Profile](https://developers.hrflow.ai/reference/index-a-profile)
  5. [🔌 Create a Board](https://developers.hrflow.ai/docs/connectors-board)
  6. [💾 Index a Job](https://developers.hrflow.ai/reference/index-a-job)
</Callout>

## Request headers

| Field                     | Value                            |
| :------------------------ | :------------------------------- |
| <code>X-API-KEY</code>    | Your API Key.                    |
| <code>X-USER-EMAIL</code> | Your HrFlow\.ai account's email. |

<Callout icon="🚧" theme="warn">
  ### Query Parameters

  * The <code>key</code> and  the <code>reference</code>  can not be null at the same time in the Query Parameters.
  * Single profile processing is deprecated. Please use batch mode with the <code>profile_ids</code> parameter.
</Callout>

<Callout icon="📘" theme="info">
  ### Response

  This endpoint returns a <code>data</code> object containing four keys, with one entry per profile, in the order of the profiles:

  * Profiles: array of objects Profile.
  * Scores:  array of arrays of floats \[ 1-score, score ]. Example:  \[0.49184858798980713,  0.50815147161483765].
  * Errors: `null` for a graded profile, otherwise an object with `code` and `message`, and the profile's Scores entry is `null`. The code is `item_not_found` when the profile can't be read.
  * Axis: `null` unless `return_axis` is `true` with `grader-hrflow-profiles-cosmic5` or `grader-hrflow-profiles-titan5`. Otherwise one object per profile with 8 keys (education, languages, skills, seniority, management, contract, role, domain), each `true` (met), `false` (not met) or `null` (the job doesn't ask).
</Callout>

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "website-api",
    "version": "2.3"
  },
  "servers": [
    {
      "url": "https://api.hrflow.ai/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "sec0": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY",
        "x-default": ""
      },
      "sec1": {
        "type": "apiKey",
        "in": "header",
        "name": "X-USER-EMAIL"
      }
    }
  },
  "security": [
    {
      "sec0": [],
      "sec1": []
    }
  ],
  "paths": {
    "/profile/grading": {
      "get": {
        "summary": "🧠 Grade Profiles indexed in a Source for a Job",
        "description": "This endpoint allows grading a Profile for a Job.",
        "operationId": "grade-a-profile-indexed-in-a-source-for-a-job",
        "parameters": [
          {
            "in": "query",
            "name": "algorithm_key",
            "schema": {
              "type": "string",
              "enum": [
                "grader-hrflow-profiles-cosmic3",
                "grader-hrflow-profiles-titan3",
                "grader-hrflow-profiles-cosmic4",
                "grader-hrflow-profiles-cosmic5",
                "grader-hrflow-profiles-titan5"
              ],
              "default": "grader-hrflow-profiles-cosmic3"
            },
            "required": true
          },
          {
            "name": "board_key",
            "in": "query",
            "description": "The key of the Board associated to the job.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "job_key",
            "in": "query",
            "description": "The Job unique identifier.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "job_reference",
            "in": "query",
            "description": "The Job reference chosen by the customer.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "profile_ids",
            "schema": {
              "type": "array",
              "items": {
                "properties": {
                  "source_key": {
                    "type": "string",
                    "description": "The key of the Source associated to the profile."
                  },
                  "profile_key": {
                    "type": "string",
                    "description": "The Profile unique identifier."
                  },
                  "profile_reference": {
                    "type": "string",
                    "description": "The Profile reference chosen by the customer."
                  }
                },
                "type": "object"
              }
            },
            "style": "deepObject",
            "explode": true,
            "required": false,
            "description": "List of Profiles unique ids to grade (Maximum length: 32)."
          },
          {
            "in": "query",
            "name": "prompt_positive",
            "schema": {
              "type": "string"
            },
            "description": "What makes a profile a better fit, added to the job description (e.g. `Fintech experience is a plus.`).",
            "required": false
          },
          {
            "in": "query",
            "name": "prompt_negative",
            "schema": {
              "type": "string"
            },
            "description": "What makes a profile a worse fit, added to the job description (e.g. `No hands-on Spark experience is a no-go.`)."
          },
          {
            "in": "query",
            "name": "return_axis",
            "schema": {
              "type": "boolean",
              "default": "false"
            },
            "description": "Set to `true` to get `data.axis`: whether each profile meets the job on 8 axes. Only `grader-hrflow-profiles-cosmic5` and `grader-hrflow-profiles-titan5` return it."
          }
        ],
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "code": 200,
                      "message": "Grading finished in 0.42 seconds.",
                      "data": {
                        "profiles": [
                          {
                            "key": "profile_key",
                            "reference": "profile_reference"
                          }
                        ],
                        "scores": [
                          [
                            0.49184858798980713,
                            0.5081514716148376
                          ]
                        ],
                        "axis": [
                          {
                            "education": true,
                            "languages": null,
                            "skills": true,
                            "seniority": false,
                            "management": null,
                            "contract": null,
                            "role": true,
                            "domain": true
                          }
                        ],
                        "errors": [
                          null
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": {
                      "code": 400,
                      "message": "Bad request. Something went wrong."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "integer",
                      "example": 400,
                      "default": 0
                    },
                    "message": {
                      "type": "string",
                      "example": "Invalid source fields"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```