> **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).

# getTalentFlowRivals

`POST /v1/talent-flow/rivals`

**Tags:** `Company info`

Get top talent sources/destinations for a company

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

## Description

Given a company, find the companies where most of its talent is heading to or coming from, in both directions. For instance, company A might have gained N people from company X but lost M people to them in a given window. Reports the two-way head-to-head flow for the most important sources and destinations of the chosen firm. Processes up to 10,000 profiles per direction. Large companies may take up to four minutes to analyze.

⚡ Rate limit: 30 requests per 1 minute

💰 Cost: 5 credits per talent flow report ⓘ

⏱ Recommended timeout: 4 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."
    },
    "dateRange": {
      "type": "object",
      "properties": {
        "lowerBound": {
          "type": [
            "string",
            "null"
          ]
        },
        "upperBound": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "numCompaniesPerSide": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10,
      "description": "Number of top donor and acceptor companies to include. Donors are companies the analyzed company gained the most people from; acceptors are companies it lost the most people to. Overlapping companies are combined, so the rival list may hold fewer than twice this number."
    }
  },
  "required": [
    "apiKey",
    "company",
    "dateRange"
  ]
}
```

## Response — success (JSON Schema)

```json
{
  "type": "object",
  "properties": {
    "output": {
      "type": "object",
      "properties": {
        "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."
        },
        "numCompaniesPerSide": {
          "type": "integer",
          "minimum": 1,
          "description": "Requested number of donor and acceptor companies per side."
        },
        "joinersCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of people who joined the analyzed company within the window."
        },
        "leaversCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Number of people who left the analyzed company within the window."
        },
        "rivals": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "companyName": {
                "type": "string",
                "description": "Rival company name."
              },
              "domain": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Rival company website domain (e.g. 'stripe.com')."
              },
              "linkedinUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Rival company LinkedIn URL."
              },
              "linkedinOrgId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Rival company LinkedIn organization ID."
              },
              "gainedCount": {
                "type": "integer",
                "minimum": 0,
                "description": "People who left this company to join the analyzed company within the window."
              },
              "lostCount": {
                "type": "integer",
                "minimum": 0,
                "description": "People who left the analyzed company to join this company within the window."
              },
              "netCount": {
                "type": "integer",
                "description": "gainedCount minus lostCount. Positive means the analyzed company gained more talent from this company than it lost to it."
              },
              "totalMovesCount": {
                "type": "integer",
                "minimum": 0,
                "description": "Total two-way moves with this company (gainedCount plus lostCount)."
              },
              "stage": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Rival company funding stage (e.g. 'Series A', 'IPO')."
              },
              "totalFundingUsd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Rival company total funding raised in USD, if available."
              },
              "valuationUsd": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Rival company latest known valuation in USD, if available."
              }
            },
            "required": [
              "companyName",
              "gainedCount",
              "lostCount",
              "netCount",
              "totalMovesCount"
            ]
          },
          "description": "Companies trading the most talent with the analyzed company, sorted by total two-way moves (gained plus lost) descending. Includes up to `numCompaniesPerSide` top donors (companies it hires from most) and up to `numCompaniesPerSide` top acceptors (companies its alumni join most); overlapping companies are combined into one entry."
        },
        "generatedAt": {
          "type": "string",
          "description": "ISO 8601 timestamp when the report was generated."
        },
        "markdownSummary": {
          "type": "string",
          "description": "Human-readable markdown summary of the report, including a rival table."
        }
      },
      "required": [
        "company",
        "window",
        "numCompaniesPerSide",
        "joinersCount",
        "leaversCount",
        "rivals",
        "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)
