---
title: "Get top talent sources/destinations for a company"
method: POST
path: "/v1/talent-flow/rivals"
tags: ["Company info"]
---

# Get top talent sources/destinations for a company

`POST /v1/talent-flow/rivals`

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.

<span>⚡ <strong>Rate limit:</strong> 30 requests per 1 minute</span>

<span>💰 <strong>Cost:</strong> 5 credits per talent flow report&nbsp;<span title="Pricing shown is default pricing. Actual pricing may vary.">ⓘ</span></span>

<span>⏱ <strong>Recommended timeout:</strong> 4 minutes&nbsp;<span title="Recommended timeout: set your HTTP client timeout to at least 4 minutes for this endpoint.">ⓘ</span></span>

## Request body

- object
  - `apiKey` string, required — Your Fiber API key
  - `company` union, required — Company to analyze. Set identifier to 'linkedinUrl', 'linkedinSlug', 'linkedinOrgId', or 'domain' and provide the corresponding value.
    - object
      - `identifier` 'linkedinUrl', required
      - `value` string, required — LinkedIn company URL (e.g. 'https://www.linkedin.com/company/openai').
    - object
      - `identifier` 'linkedinSlug', required
      - `value` string, required — LinkedIn company slug (e.g. 'openai').
    - object
      - `identifier` 'linkedinOrgId', required
      - `value` string, required — LinkedIn numeric organization ID (e.g. '11130470').
    - object
      - `identifier` 'domain', required
      - `value` string, required — Company website domain (e.g. 'openai.com').
  - `dateRange` object, required
    - `lowerBound` string, nullable
    - `upperBound` string, nullable
  - `numCompaniesPerSide` integer — 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.

## Response `200`

Default Response

- object
  - `output` object, required
    - `company` object, required — Company that was analyzed.
      - `name` string, required — Company name.
      - `linkedinOrgId` string, required — LinkedIn organization ID (e.g. '1441' for Google).
      - `domains` string[], required — Company website domains.
      - `linkedinSlug` string, nullable — LinkedIn company slug (e.g. 'anthropic').
    - `window` object, required — Time window for the analysis.
      - `after` string, nullable — Start of the analysis window (YYYY-MM-DD). Null means no lower bound.
      - `before` string, nullable — End of the analysis window (YYYY-MM-DD). Null means no upper bound.
    - `numCompaniesPerSide` integer, required — Requested number of donor and acceptor companies per side.
    - `joinersCount` integer, required — Number of people who joined the analyzed company within the window.
    - `leaversCount` integer, required — Number of people who left the analyzed company within the window.
    - `rivals` object[], required — 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.
      - `companyName` string, required — Rival company name.
      - `domain` string, nullable — Rival company website domain (e.g. 'stripe.com').
      - `linkedinUrl` string, nullable — Rival company LinkedIn URL.
      - `linkedinOrgId` string, nullable — Rival company LinkedIn organization ID.
      - `gainedCount` integer, required — People who left this company to join the analyzed company within the window.
      - `lostCount` integer, required — People who left the analyzed company to join this company within the window.
      - `netCount` integer, required — gainedCount minus lostCount. Positive means the analyzed company gained more talent from this company than it lost to it.
      - `totalMovesCount` integer, required — Total two-way moves with this company (gainedCount plus lostCount).
      - `stage` string, nullable — Rival company funding stage (e.g. 'Series A', 'IPO').
      - `totalFundingUsd` number, nullable — Rival company total funding raised in USD, if available.
      - `valuationUsd` number, nullable — Rival company latest known valuation in USD, if available.
    - `generatedAt` string, required — ISO 8601 timestamp when the report was generated.
    - `markdownSummary` string, required — Human-readable markdown summary of the report, including a rival table.
  - `chargeInfo` union, required
    - object — Credits were charged immediately for this operation
      - `method` 'charged-now', required
      - `creditsCharged` number, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits will be charged after the operation completes
      - `method` 'charging-later', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits that were charged for an asynchronous operation
      - `method` 'charged-for-async-process', required
      - `creditsCharged` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — No credits were charged for this operation
      - `method` 'free', required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
    - object — Credits were refunded for this operation
      - `method` 'credits-refunded', required
      - `creditsRefunded` number, required
      - `message` string, required
      - `lowCreditAlert` object, nullable — Contains a link to get more credits, a warning message, and the remaining credit count.
        - `getMoreCreditsUrl` string, uri, required — URL to top up credits or restart billing cycle to get fresh credits.
        - `message` string, required — Human-readable credits warning.
        - `availableCredits` number, required — Number of credits remaining in the current billing period.
  - `warnings` object[], nullable — Warnings about extraneous fields in request
    - `field` string, required — Full path to extraneous field (e.g., 'searchParams.ExtraField')
    - `message` string, required — Warning message
  - `advice` string[], nullable — Tips, recommendations, and suggestions for using this API effectively.

## Other responses

- `400` — Default Response
- `401` — Default Response
- `402` — Default Response
- `403` — Default Response
- `404` — Default Response
- `422` — Default Response
- `429` — Default Response
- `500` — Default Response
- `503` — Default Response

## Changes

- **2026-09-01** `f8a78c729da9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/fiber/apis/fiber-ai-api/changes/v1/talent-flow/rivals/post.md)

---

[API](https://skmtc.dev/fiber/apis/fiber-ai-api.md) · [All operations](https://skmtc.dev/fiber/apis/fiber-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fiber/fiber-ai-api/revisions/4124c1dafb12/schema)
