> **For AI agents:** this page is a focused, LLM-optimized view of a
> single Fiber AI operation. Before calling it, fetch the routing
> instructions at [`https://api.fiber.ai/llms.txt`](https://api.fiber.ai/llms.txt) and the full operation
> index at [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md).

# getTalentFlow

`POST /v1/talent-flow`

**Tags:** `Company info`

Get talent flow analysis for a company

**Endpoint:** `https://api.fiber.ai/v1/talent-flow`

## Description

Visualizes talent movement at a company. Use 'joiners' to see where a company is hiring from — which competitors, universities, and regions it pulls talent from during the time window. Use 'leavers' to see where a company's alumni are going — which companies or startups are attracting its former employees. Processes up to 10,000 profiles per request. Large companies may take up to two minutes to analyze.

⚡ Rate limit: 30 requests per 1 minute

💰 Cost: 5 credits per talent flow report ⓘ

⏱ Recommended timeout: 2 minutes ⓘ

## Request body (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "apiKey": {
      "type": "string",
      "description": "Your Fiber API key"
    },
    "company": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "identifier": {
              "type": "string",
              "enum": [
                "linkedinUrl"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1,
              "description": "LinkedIn company URL (e.g. 'https://www.linkedin.com/company/openai')."
            }
          },
          "required": [
            "identifier",
            "value"
          ]
        },
        {
          "type": "object",
          "properties": {
            "identifier": {
              "type": "string",
              "enum": [
                "linkedinSlug"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1,
              "description": "LinkedIn company slug (e.g. 'openai')."
            }
          },
          "required": [
            "identifier",
            "value"
          ]
        },
        {
          "type": "object",
          "properties": {
            "identifier": {
              "type": "string",
              "enum": [
                "linkedinOrgId"
              ]
            },
            "value": {
              "type": "string",
              "pattern": "^\\d+$",
              "minLength": 1,
              "description": "LinkedIn numeric organization ID (e.g. '11130470')."
            }
          },
          "required": [
            "identifier",
            "value"
          ]
        },
        {
          "type": "object",
          "properties": {
            "identifier": {
              "type": "string",
              "enum": [
                "domain"
              ]
            },
            "value": {
              "type": "string",
              "minLength": 1,
              "description": "Company website domain (e.g. 'openai.com')."
            }
          },
          "required": [
            "identifier",
            "value"
          ]
        }
      ],
      "description": "Company to analyze. Set identifier to 'linkedinUrl', 'linkedinSlug', 'linkedinOrgId', or 'domain' and provide the corresponding value."
    },
    "direction": {
      "type": "string",
      "enum": [
        "joiners",
        "leavers"
      ],
      "description": "Direction of talent flow. 'joiners' finds people who started at the company within the window and reports where they came from. 'leavers' finds people who left the company within the window and reports where they went."
    },
    "dateRange": {
      "type": "object",
      "properties": {
        "lowerBound": {
          "type": [
            "string",
            "null"
          ]
        },
        "upperBound": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    }
  },
  "required": [
    "apiKey",
    "company",
    "direction",
    "dateRange"
  ]
}
```

## Response — success (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "output": {
      "type": "object",
      "properties": {
        "direction": {
          "type": "string",
          "enum": [
            "joiners",
            "leavers"
          ],
          "description": "Direction of the analysis."
        },
        "company": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "description": "Company name."
            },
            "linkedinOrgId": {
              "type": "string",
              "description": "LinkedIn organization ID (e.g. '1441' for Google)."
            },
            "domains": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Company website domains."
            },
            "linkedinSlug": {
              "type": [
                "string",
                "null"
              ],
              "description": "LinkedIn company slug (e.g. 'anthropic')."
            }
          },
          "required": [
            "name",
            "linkedinOrgId",
            "domains"
          ],
          "description": "Company that was analyzed."
        },
        "window": {
          "type": "object",
          "properties": {
            "after": {
              "type": [
                "string",
                "null"
              ],
              "description": "Start of the analysis window (YYYY-MM-DD). Null means no lower bound."
            },
            "before": {
              "type": [
                "string",
                "null"
              ],
              "description": "End of the analysis window (YYYY-MM-DD). Null means no upper bound."
            }
          },
          "description": "Time window for the analysis."
        },
        "peopleCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of people who joined (joiners) or left (leavers) the company within the analysis window."
        },
        "companyBuckets": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "companyName": {
                "type": "string",
                "description": "Company name."
              },
              "domain": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Company website domain (e.g. 'amazon.com')."
              },
              "linkedinUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "LinkedIn company URL."
              },
              "linkedinOrgId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "LinkedIn organization ID."
              },
              "count": {
                "type": "integer",
                "minimum": 0,
                "description": "Number of people who came from this company (joiners) or went to this company (leavers)."
              },
              "percent": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Percentage of total people (0-100, one decimal place)."
              },
              "stage": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Funding stage (e.g. 'Series A', 'Acquired', 'IPO')."
              },
              "totalFundingUsd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Total funding raised in USD, if available."
              },
              "valuationUsd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Latest known valuation in USD, if available."
              }
            },
            "required": [
              "companyName",
              "count",
              "percent"
            ]
          },
          "description": "Where people came from (joiners) or went to (leavers), sorted by count descending."
        },
        "yearsOfExperience": {
          "type": "object",
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0,
              "description": "Number of data points."
            },
            "median": {
              "type": [
                "number",
                "null"
              ],
              "description": "Median value."
            },
            "mean": {
              "type": [
                "number",
                "null"
              ],
              "description": "Mean (average) value."
            },
            "stdDev": {
              "type": [
                "number",
                "null"
              ],
              "description": "Standard deviation."
            },
            "p25": {
              "type": [
                "number",
                "null"
              ],
              "description": "25th percentile."
            },
            "p75": {
              "type": [
                "number",
                "null"
              ],
              "description": "75th percentile."
            },
            "min": {
              "type": [
                "number",
                "null"
              ],
              "description": "Minimum value."
            },
            "max": {
              "type": [
                "number",
                "null"
              ],
              "description": "Maximum value."
            }
          },
          "required": [
            "count"
          ],
          "description": "Years of experience at the time of the join or leave event."
        },
        "tenureMonths": {
          "type": "object",
          "properties": {
            "count": {
              "type": "integer",
              "minimum": 0,
              "description": "Number of data points."
            },
            "median": {
              "type": [
                "number",
                "null"
              ],
              "description": "Median value."
            },
            "mean": {
              "type": [
                "number",
                "null"
              ],
              "description": "Mean (average) value."
            },
            "stdDev": {
              "type": [
                "number",
                "null"
              ],
              "description": "Standard deviation."
            },
            "p25": {
              "type": [
                "number",
                "null"
              ],
              "description": "25th percentile."
            },
            "p75": {
              "type": [
                "number",
                "null"
              ],
              "description": "75th percentile."
            },
            "min": {
              "type": [
                "number",
                "null"
              ],
              "description": "Minimum value."
            },
            "max": {
              "type": [
                "number",
                "null"
              ],
              "description": "Maximum value."
            }
          },
          "required": [
            "count"
          ],
          "description": "Tenure at the analyzed company, in months."
        },
        "breakdowns": {
          "type": "object",
          "properties": {
            "bySeniority": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "seniority": {
                    "type": "string",
                    "description": "Seniority level label."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people at this seniority."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  }
                },
                "required": [
                  "seniority",
                  "count",
                  "percent"
                ]
              },
              "description": "Breakdown by seniority level."
            },
            "byJobFunction": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "jobFunction": {
                    "type": "string",
                    "description": "Job function label."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people in this function."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  }
                },
                "required": [
                  "jobFunction",
                  "count",
                  "percent"
                ]
              },
              "description": "Breakdown by job function."
            },
            "byCountry": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "countryCode": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-3 country code (e.g. 'USA', 'GBR', 'IND')."
                  },
                  "countryName": {
                    "type": "string",
                    "description": "Full English country name."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people in this country."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  }
                },
                "required": [
                  "countryCode",
                  "countryName",
                  "count",
                  "percent"
                ]
              },
              "description": "Breakdown by country."
            },
            "byMetro": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "slug": {
                    "type": "string",
                    "description": "Region identifier. Preset metros use slugs like 'sf-bay-area'; non-preset metros are clustered and use 'unknown-metro' with centroid coordinates; profiles with no location use 'no-location'."
                  },
                  "name": {
                    "type": "string",
                    "description": "Metro area display name."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people in this metro area."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  },
                  "centroid": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "properties": {
                      "lat": {
                        "type": "number",
                        "description": "Centroid latitude."
                      },
                      "lon": {
                        "type": "number",
                        "description": "Centroid longitude."
                      }
                    },
                    "required": [
                      "lat",
                      "lon"
                    ],
                    "description": "Centroid coordinates for clustered metros. Null for preset regions and no-location."
                  }
                },
                "required": [
                  "slug",
                  "name",
                  "count",
                  "percent"
                ]
              },
              "description": "Breakdown by metro area."
            },
            "bySchool": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "school": {
                    "type": "string",
                    "description": "School or university name."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people from this school."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  }
                },
                "required": [
                  "school",
                  "count",
                  "percent"
                ]
              },
              "description": "Breakdown by school or university."
            },
            "byYearsOfExperience": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Years of experience range label."
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "Number of people in this range."
                  },
                  "percent": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "description": "Percentage of total people (0-100)."
                  }
                },
                "required": [
                  "label",
                  "count",
                  "percent"
                ]
              },
              "description": "Years of experience distribution histogram."
            }
          },
          "required": [
            "bySeniority",
            "byJobFunction",
            "byCountry",
            "byMetro",
            "bySchool",
            "byYearsOfExperience"
          ],
          "description": "Categorical breakdowns of the analyzed population."
        },
        "generatedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp when the report was generated."
        },
        "markdownSummary": {
          "type": "string",
          "description": "Human-readable markdown summary of the report, including tables and charts."
        }
      },
      "required": [
        "direction",
        "company",
        "window",
        "peopleCount",
        "companyBuckets",
        "yearsOfExperience",
        "tenureMonths",
        "breakdowns",
        "generatedAt",
        "markdownSummary"
      ]
    },
    "chargeInfo": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-now"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged"
          ],
          "description": "Credits were charged immediately for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charging-later"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "Credits will be charged after the operation completes"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "charged-for-async-process"
              ]
            },
            "creditsCharged": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsCharged",
            "message"
          ],
          "description": "Credits that were charged for an asynchronous operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "free"
              ]
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "message"
          ],
          "description": "No credits were charged for this operation"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "type": "string",
              "enum": [
                "credits-refunded"
              ]
            },
            "creditsRefunded": {
              "type": "number"
            },
            "message": {
              "type": "string"
            },
            "lowCreditAlert": {
              "type": [
                "object",
                "null"
              ],
              "properties": {
                "getMoreCreditsUrl": {
                  "type": "string",
                  "format": "uri",
                  "description": "URL to top up credits or restart billing cycle to get fresh credits."
                },
                "message": {
                  "type": "string",
                  "description": "Human-readable credits warning."
                },
                "availableCredits": {
                  "type": "number",
                  "description": "Number of credits remaining in the current billing period."
                }
              },
              "required": [
                "getMoreCreditsUrl",
                "message",
                "availableCredits"
              ],
              "description": "Contains a link to get more credits, a warning message, and the remaining credit count."
            }
          },
          "required": [
            "method",
            "creditsRefunded",
            "message"
          ],
          "description": "Credits were refunded for this operation"
        }
      ]
    },
    "warnings": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Full path to extraneous field (e.g., 'searchParams.ExtraField')"
          },
          "message": {
            "type": "string",
            "description": "Warning message"
          }
        },
        "required": [
          "field",
          "message"
        ]
      },
      "description": "Warnings about extraneous fields in request"
    },
    "advice": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "Tips, recommendations, and suggestions for using this API effectively."
    }
  },
  "required": [
    "output",
    "chargeInfo"
  ],
  "additionalProperties": false
}
```

---

Canonical JSON: [`https://api.fiber.ai/openapi.json`](https://api.fiber.ai/openapi.json)
Operation index: [`https://api.fiber.ai/ai-docs/index.md`](https://api.fiber.ai/ai-docs/index.md)
