> ## Documentation Index
> Fetch the complete documentation index at: /people-search/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Enrich person

> Enrich a LinkedIn or Reddit user profile. Send linkedin_url for existing LinkedIn workflows, or profile_url for either platform. Reddit enrichment returns the public profile/avatar and one page each of recent posts and comment previews, with separate cursors and independent history errors. Professional contact and social-matching options apply only to LinkedIn.

Pass a Reddit or LinkedIn `profile_url`, or use the existing `linkedin_url` field for LinkedIn. Send exactly one URL field.

## LinkedIn

Pass a `linkedin_url` from [Search people](/people-search/docs/api-reference/people-search.md), or one you already have. The person's full public LinkedIn profile is collected from AnyAPI first; a 404 means no profile was found for that address. Send `platforms: []` to get only the profile.

Contact lookup is off by default. With `contact: true`, `person.emails` and `person.phones` hold the person's work and personal emails and phone numbers from Crustdata, looked up alongside the platforms. Each email has a `type`, `work` or `personal`, and a `status`: `deliverable`; `catch_all`, when the domain accepts any address so delivery isn't certain; or `unknown`. Addresses Crustdata found to bounce are left out. The lookup costs Crustdata credits, about 1 plus 1 for work emails and 2 each for personal emails and phone numbers found, and fails independently: if the lookup fails, the contact lists are empty and the rest of the response still returns.

`person.posts` holds the person's `linkedin_posts` most recent LinkedIn posts (10 by default, up to 100), newest first, read from LinkedIn alongside the platforms. Reposts are included and labeled by `type`: `post` is the person's own; `repost` is someone else's post shared without comment, so its `text` is empty, its `url` is that post's and `referenced` holds that post's author and text; `quote` is someone else's post shared with the person's own `text`, with the quoted post in `referenced`. `created_at` is the day the person posted or shared it. One read usually returns up to 100 posts and costs the same however many; asking for more than 50 sometimes takes a second read. A person with fewer posts than asked for returns fewer. If the lookup fails, `person.posts` is empty and the rest of the response still returns. Send `linkedin_posts: 0` to skip it.

Each platform runs in parallel and fails independently: if one platform's search fails, its result list is empty and the others still return. Accounts and videos are filtered to confident matches when ranking succeeds. See [Matching](/people-search/docs/concepts/matching.md).

With `youtube` in `platforms` (the default), `videos` lists YouTube videos from searching the person's name and, when their profile has a current employer, the name with that employer. Each video is checked for whether the person speaks in it, as a speaker, guest, interviewee or panelist, on any channel, and only matches come back. Videos where others talk about them or their work are left out.

## Facebook

Facebook is included in the default platforms. To request it alone, send:

```json theme={null}
{
  "linkedin_url": "https://www.linkedin.com/in/jane-doe",
  "platforms": ["facebook"],
  "linkedin_posts": 0
}
```

`accounts.facebook` contains confident matches found by looking up the person’s name and comparing public Facebook profile information with LinkedIn. `max_results.facebook` controls how many candidates are checked (1–7, default 7). A matching name or verification badge alone is insufficient. Unreadable profiles and ambiguous candidates are omitted; if the comparison fails, no Facebook matches are returned. Personal profiles and the person’s own public creator Pages are eligible; employer and fan Pages are not. This flow uses AnyAPI’s Facebook endpoints, without People Data Labs.

With `enrich_accounts: true`, each match includes its profile and up to `account_posts` available public posts, reading at most five provider pages. Private or unavailable content is not accessible. Post failures preserve the matched profile and any posts already read, with `enrichment.posts_error` explaining the failure. `account_posts: 0` skips posts. Facebook following lists are not fetched. Direct Facebook URLs are not accepted as the input to Enrich person; start with LinkedIn.

## Matches come back enriched

In the same call, as soon as each platform's accounts are ranked, every matched account is enriched: its `enrichment` holds the account's profile, its `account_posts` most recent posts and the `account_following` accounts it follows. Up to 8 matched videos get their `transcript`: the captions' whole text, as a string. These are billed with this call, and fail on their own: an account that can't be enriched has `enrichment: { "error": "…" }`, and a video without captions has `transcript: null` and a `transcript_error`. Send `enrich_accounts: false` or `transcribe_videos: false` to skip them.

## Reddit

Send `profile_url: "https://www.reddit.com/user/username/"`, or click **Enrich** on a Reddit search result. Enrichment reads that account directly; it does not infer a real name, match other social accounts, or look up contact details.

`person` contains `platform: "reddit"`, the username, public display name, avatar (`picture_url`), bio (`summary`), account creation date, karma split, public activity counts, followers, trophies, and available account flags. Missing values are null or empty. The provider's profile counts may differ from the activity returned by its history sources. A missing or suspended profile returns 404.

By default, the response includes one whole provider page in each of `reddit.posts` and `reddit.comments`, newest first. Pages vary in size; this is recent public activity, not a guarantee of complete account history. Each feed contains `items` and `next_cursor`. Send `reddit_posts: false` or `reddit_comments: false` to skip a feed; disable both for just the profile.

Comments contain `body_preview`, `is_preview: true`, the parent post title, and `thread_url`. The text may be shortened and the link opens the thread, not the individual comment. Posts include their title, available body text, date, subreddit, and canonical Reddit link.

To continue, pass a feed's `next_cursor` back for the same account. Disable the other feed so it is not fetched again:

```json theme={null}
{
  "profile_url": "https://www.reddit.com/user/username/",
  "reddit_posts": false,
  "reddit_comments": true,
  "reddit_comments_cursor": "<reddit.comments.next_cursor>"
}
```

The dashboard provides **Load more** buttons for both feeds. A null cursor means the source supplied no continuation. We retain whole pages so following a cursor does not skip items hidden by a result limit.

History lookups fail independently: the profile and any successful feed remain available. A failed feed has an `error`, an empty `items` list, and its requested cursor for retry. This is different from a successful empty history. Each request reads the profile again and bills actual provider receipts, including paid history failures. No model call is needed. LinkedIn-specific contact, platform, and video options do not trigger extra lookups for Reddit.


## OpenAPI

````yaml POST /v1/people/enrich
openapi: 3.1.0
info:
  title: Constants Social Search API
  version: 1.0.0
  description: >-
    Search for people with a natural-language description, enrich a person's
    LinkedIn profile with their X, Instagram, TikTok and Facebook accounts and
    YouTube videos, enrich any one account with its profile and recent posts,
    and read the transcripts of a person's videos.
servers:
  - url: https://www.constants.io/people-search
    description: Production
security:
  - apiKey: []
paths:
  /v1/people/enrich:
    post:
      summary: Enrich person
      description: >-
        Enrich a LinkedIn or Reddit user profile. Send linkedin_url for existing
        LinkedIn workflows, or profile_url for either platform. Reddit
        enrichment returns the public profile/avatar and one page each of recent
        posts and comment previews, with separate cursors and independent
        history errors. Professional contact and social-matching options apply
        only to LinkedIn.
      operationId: enrichPerson
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonEnrichRequest'
            examples:
              every:
                summary: Every platform
                value:
                  linkedin_url: https://www.linkedin.com/in/satyanadella
              some:
                summary: Some platforms
                value:
                  linkedin_url: https://www.linkedin.com/in/satyanadella
                  platforms:
                    - x
                    - youtube
                  max_results:
                    x: 10
                    youtube: 20
      responses:
        '200':
          description: >-
            The person's profile, each platform's matched accounts and, with
            `youtube`, matched videos, with the matched ones enriched and
            transcribed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonEnrichResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/ProfileNotFound'
        '413':
          $ref: '#/components/responses/TooLarge'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/Failed'
        '502':
          $ref: '#/components/responses/ProfileProviderFailed'
        '503':
          $ref: '#/components/responses/Unconfigured'
components:
  schemas:
    PersonEnrichRequest:
      type: object
      properties:
        linkedin_url:
          type: string
          maxLength: 500
          description: >-
            The person's LinkedIn profile address, such as
            `https://www.linkedin.com/in/jane-doe`. Country subdomains and
            addresses without `https://` work too.
        platforms:
          type: array
          items:
            $ref: '#/components/schemas/Source'
          minItems: 0
          default:
            - x
            - instagram
            - tiktok
            - facebook
            - youtube
          description: >-
            Platforms to search. `youtube` returns videos in `videos` rather
            than accounts. Empty returns only the profile. Facebook looks up the
            name, reads public profiles and returns only confident matches;
            failed comparisons return no Facebook matches.
        contact:
          type: boolean
          default: false
          description: >-
            Look up the person's emails and phone numbers on Crustdata,
            alongside the platforms. Costs Crustdata credits: about 1, plus 1
            for work emails and 2 each for personal emails and phone numbers
            found.
        linkedin_posts:
          type: integer
          minimum: 0
          maximum: 100
          default: 10
          description: >-
            Up to how many of the person's most recent LinkedIn posts, reposts
            and quotes to return in `person.posts`, newest first. One read
            usually returns up to 100 and costs the same however many; asking
            for more than 50 sometimes takes a second read. A person with fewer
            posts returns fewer. 0 skips them.
        max_results:
          type: object
          additionalProperties: false
          properties:
            x:
              type: integer
              minimum: 1
              maximum: 50
              default: 50
              description: X accounts to return. X bills each account returned.
            tiktok:
              type: integer
              minimum: 1
              maximum: 30
              default: 30
              description: TikTok accounts to return. TikTok returns at most 30.
            facebook:
              type: integer
              minimum: 1
              maximum: 7
              default: 7
              description: Facebook candidates to look up and compare, up to 7.
            youtube:
              type: integer
              minimum: 1
              maximum: 50
              default: 20
              description: >-
                Videos to keep from each YouTube search (the name, and the name
                with the current employer). Above 20 uses a slower search.
          description: >-
            Results per platform. Leave a platform out for its default.
            Instagram's search takes no count.
        enrich_accounts:
          type: boolean
          default: true
          description: >-
            Enrich each matched account (its profile, recent posts and who it
            follows) into its `enrichment`. Billed with this call. Nothing is
            enriched on a platform where ranking didn't run.
        account_posts:
          type: integer
          minimum: 0
          maximum: 100
          default: 20
          description: >-
            Recent posts per enriched account. Private accounts return none.
            Facebook reads up to 5 provider pages; fewer posts may be available.
        account_following:
          type: integer
          minimum: 0
          maximum: 500
          default: 200
          description: >-
            How many accounts each enriched account follows to return.
            Instagram's come with only their name, picture and badges. 0 skips
            it. Facebook following lists are not fetched.
        transcribe_videos:
          type: boolean
          default: true
          description: >-
            Add the transcript of up to 8 matched videos as plain text, the
            captions' whole text. Billed with this call. Nothing is transcribed
            when ranking didn't run.
        profile_url:
          type: string
          maxLength: 500
          description: >-
            A Reddit or LinkedIn user profile URL. Send exactly one of
            profile_url or linkedin_url.
        reddit_posts:
          type: boolean
          default: true
          description: >-
            For Reddit profiles, include one whole page of recent posts. False
            skips it.
        reddit_comments:
          type: boolean
          default: true
          description: >-
            For Reddit profiles, include one whole page of recent comment
            previews. False skips it.
        reddit_posts_cursor:
          type: string
          maxLength: 8000
          description: >-
            reddit.posts.next_cursor from the previous response for this
            account. Keep reddit_posts enabled.
        reddit_comments_cursor:
          type: string
          maxLength: 8000
          description: >-
            reddit.comments.next_cursor from the previous response for this
            account. Keep reddit_comments enabled.
      oneOf:
        - required:
            - linkedin_url
        - required:
            - profile_url
    PersonEnrichResponse:
      type: object
      properties:
        person:
          anyOf:
            - $ref: '#/components/schemas/Person'
            - $ref: '#/components/schemas/RedditPerson'
        accounts:
          type: object
          description: Keyed by platform, best first.
          properties:
            x:
              type: array
              items:
                $ref: '#/components/schemas/RankedAccount'
            instagram:
              type: array
              items:
                $ref: '#/components/schemas/RankedAccount'
            tiktok:
              type: array
              items:
                $ref: '#/components/schemas/RankedAccount'
            facebook:
              type: array
              items:
                $ref: '#/components/schemas/RankedAccount'
              description: >-
                Confident Facebook matches from public profile evidence. Empty
                when evidence is insufficient or matching fails.
        videos:
          type: array
          items:
            $ref: '#/components/schemas/RankedVideo'
          description: >-
            With `youtube` in `platforms`: the videos the person speaks in, from
            searching the name and, when the profile has a current employer, the
            name with that employer. Only matches; best first.
        usage:
          $ref: '#/components/schemas/Usage'
        ms:
          type: integer
        reddit:
          $ref: '#/components/schemas/RedditActivity'
    Source:
      type: string
      enum:
        - x
        - instagram
        - tiktok
        - facebook
        - youtube
      description: >-
        What Enrich person can search: the account platforms, plus `youtube` for
        videos.
    Person:
      type: object
      description: The public LinkedIn profile collected from AnyAPI.
      properties:
        source:
          type: string
          enum:
            - anyapi
        id:
          type: string
        name:
          type: string
        headline:
          type: string
        location:
          type: string
        current_role:
          type: string
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Keyed by `linkedin`, `x`, `github` or `facebook`. `linkedin` is
            always set.
        picture_url:
          type:
            - string
            - 'null'
        emails:
          type: array
          description: >-
            Work emails first, then personal, up to 10. Empty unless `contact`
            was on and Crustdata had some. Addresses Crustdata found to bounce
            are left out.
          items:
            $ref: '#/components/schemas/Email'
        phones:
          type: array
          items:
            type: string
          description: Phone numbers as Crustdata gives them, up to 5.
        posts:
          type: array
          items:
            $ref: '#/components/schemas/LinkedinPost'
          description: >-
            With `linkedin_posts` above 0: the person's recent LinkedIn posts,
            reposts and quotes, newest first. Empty when the lookup failed or
            found none.
        summary:
          type: string
        connections:
          type:
            - integer
            - 'null'
        followers:
          type:
            - integer
            - 'null'
        experience:
          type: array
          items:
            $ref: '#/components/schemas/Experience'
          description: Newest first, up to 30.
        education:
          type: array
          items:
            $ref: '#/components/schemas/Education'
        skills:
          type: array
          items:
            type: string
          description: Inferred by the profile provider; can be noisy.
        languages:
          type: array
          items:
            type: object
            properties:
              language:
                type: string
              proficiency:
                type: string
    RedditPerson:
      type: object
      required:
        - platform
        - username
      description: >-
        Public Reddit account metadata. Name is u/<username>; display_name is an
        unverified public display title. Null means the provider did not supply
        the field. No real-world identity or contact matching is performed.
      properties:
        source:
          type: string
          enum:
            - anyapi
        platform:
          type: string
          enum:
            - reddit
        id:
          type: string
        provider_id:
          type: string
        username:
          type: string
        name:
          type: string
        display_name:
          type: string
        picture_url:
          type:
            - string
            - 'null'
        summary:
          type: string
        links:
          type: object
          properties:
            reddit:
              type: string
        created_at:
          type:
            - string
            - 'null'
        karma:
          type:
            - number
            - 'null'
        post_karma:
          type:
            - number
            - 'null'
        comment_karma:
          type:
            - number
            - 'null'
        posts_count:
          type:
            - number
            - 'null'
        comments_count:
          type:
            - number
            - 'null'
        followers:
          type:
            - number
            - 'null'
        trophies:
          type:
            - number
            - 'null'
        is_employee:
          type:
            - boolean
            - 'null'
        is_nsfw:
          type:
            - boolean
            - 'null'
        verified:
          type:
            - boolean
            - 'null'
    RankedAccount:
      allOf:
        - $ref: '#/components/schemas/Account'
        - type: object
          properties:
            linked:
              type: boolean
              description: >-
                Enrich person only: true on the X account the person's
                professional profile links to, which is returned instead of a
                name search when it's found. Absent on other accounts.
            enrichment:
              description: >-
                Enrich person only, on matched accounts when `enrich_accounts`
                is on: the account's profile, posts and following, or `{ error
                }` when enriching it failed.
              oneOf:
                - $ref: '#/components/schemas/AccountEnrichment'
                - type: object
                  properties:
                    error:
                      type: string
                  required:
                    - error
    RankedVideo:
      allOf:
        - $ref: '#/components/schemas/Video'
        - type: object
          properties:
            transcript:
              type:
                - string
                - 'null'
              description: >-
                Enrich person only, on up to 8 matched videos when
                `transcribe_videos` is on: the video's whole caption text as
                plain text. Captions don't say who is speaking. Null when the
                video has no captions or they couldn't be read.
            transcript_error:
              type: string
              description: Why `transcript` is null.
    Usage:
      type: object
      description: What the call cost.
      properties:
        credits:
          type: integer
          description: The credits the call was charged.
        credits_remaining:
          type: integer
          description: >-
            The workspace's credits left after this call. Calls running at the
            same time can change it. Left out when the balance couldn't be read;
            the x-credits-remaining header has the same number.
    RedditActivity:
      type: object
      properties:
        posts:
          type: object
          description: >-
            Present when requested. One whole provider page; page sizes vary.
            Errors do not discard the profile or other history.
          properties:
            items:
              type: array
              items:
                $ref: '#/components/schemas/RedditPost'
            next_cursor:
              type:
                - string
                - 'null'
              description: >-
                Opaque cursor for this feed and account. Null means this source
                supplied no continuation. On failure the requested cursor is
                retained for retry.
            error:
              type: string
              description: >-
                Present only if this history lookup failed; an empty list with
                error does not mean no activity.
        comments:
          type: object
          description: >-
            Present when requested. One whole provider page; page sizes vary.
            Errors do not discard the profile or other history.
          properties:
            items:
              type: array
              items:
                $ref: '#/components/schemas/RedditCommentPreview'
            next_cursor:
              type:
                - string
                - 'null'
              description: >-
                Opaque cursor for this feed and account. Null means this source
                supplied no continuation. On failure the requested cursor is
                retained for retry.
            error:
              type: string
              description: >-
                Present only if this history lookup failed; an empty list with
                error does not mean no activity.
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
    Email:
      type: object
      properties:
        email:
          type: string
        type:
          type: string
          enum:
            - work
            - personal
        status:
          type:
            - string
            - 'null'
          enum:
            - deliverable
            - catch_all
            - unknown
            - null
          description: >-
            Whether Crustdata found the address accepts mail: `deliverable`;
            `catch_all`, when the domain accepts any address so delivery isn't
            certain; or `unknown`.
    LinkedinPost:
      type: object
      description: A post from the person's LinkedIn activity.
      properties:
        url:
          type:
            - string
            - 'null'
        created_at:
          type:
            - string
            - 'null'
          format: date
          description: The day the person posted or shared it, in UTC.
        type:
          type: string
          enum:
            - post
            - repost
            - quote
          description: >-
            `post`: the person's own. `repost`: someone else's post shared
            without comment; `text` is empty, and `referenced` and `url` are
            that post's. `quote`: someone else's post shared with the person's
            `text`.
        text:
          type: string
        has_video:
          type: boolean
        media_urls:
          type: array
          items:
            type: string
          description: Images attached to the post.
        referenced:
          type: object
          description: 'For a repost or quote: the post it shares.'
          properties:
            author:
              type:
                - string
                - 'null'
            author_url:
              type:
                - string
                - 'null'
              description: The author's LinkedIn profile address.
            text:
              type:
                - string
                - 'null'
            url:
              type:
                - string
                - 'null'
            media_urls:
              type: array
              items:
                type: string
            unavailable:
              type: boolean
              description: True when a quote's original didn't come back.
        metrics:
          type: object
          properties:
            reactions:
              type:
                - integer
                - 'null'
            comments:
              type:
                - integer
                - 'null'
            shares:
              type:
                - integer
                - 'null'
    Experience:
      type: object
      properties:
        title:
          type: string
        company:
          type: string
        location:
          type: string
        start:
          type: string
          examples:
            - October 2024
        end:
          type: string
          description: Empty while current.
        months:
          type:
            - integer
            - 'null'
        current:
          type: boolean
        description:
          type: string
    Education:
      type: object
      properties:
        school:
          type: string
        degree:
          type: string
        start:
          type:
            - integer
            - 'null'
        end:
          type:
            - integer
            - 'null'
    Account:
      type: object
      properties:
        platform:
          type: string
          enum:
            - x
            - instagram
            - tiktok
            - facebook
        id:
          type: string
        handle:
          type: string
        name:
          type: string
        url:
          type: string
          format: uri
        avatar_url:
          type: string
        bio:
          type: string
        location:
          type: string
        followers:
          type:
            - integer
            - 'null'
        following:
          type:
            - integer
            - 'null'
        posts:
          type:
            - integer
            - 'null'
          description: Posts, or videos on TikTok.
        verified:
          type: boolean
        private:
          type:
            - boolean
            - 'null'
          description: >-
            Whether the account is private, when known. Facebook does not report
            this.
        created_at:
          type:
            - string
            - 'null'
          format: date-time
        category:
          type: string
          description: Public account category or verification label, when available.
        links:
          type: array
          items:
            type: string
          description: Links from the profile, up to 5.
    AccountEnrichment:
      type: object
      properties:
        account:
          $ref: '#/components/schemas/Account'
        posts:
          type: array
          items:
            $ref: '#/components/schemas/Post'
        following:
          type: array
          items:
            $ref: '#/components/schemas/Account'
          description: >-
            Present when `account_following` was above 0 and the account isn't
            private. Each followed account leaves out `avatar_url` and
            `platform` (always the enriched account's), leaves out `url` and
            `id` when it has a `handle` (the address is the platform's profile
            address for that handle), and leaves out every field that came back
            empty, null or false, so many of them stay short. Absent for
            Facebook.
        ms:
          type: integer
        posts_error:
          type: string
          description: >-
            Facebook posts could not be fully loaded. Any posts already fetched
            remain in posts; the matched profile is retained.
    Video:
      type: object
      properties:
        platform:
          type: string
          enum:
            - youtube
        id:
          type: string
          description: The YouTube video ID.
        url:
          type: string
        title:
          type: string
        channel:
          type: string
        channel_url:
          type:
            - string
            - 'null'
        published:
          type: string
          description: As YouTube shows it, such as `2 years ago`.
        views:
          type:
            - integer
            - 'null'
        duration:
          type: string
          description: Such as `41:07`.
        description:
          type: string
          description: The snippet YouTube shows in search results.
        thumbnail_url:
          type: string
    RedditPost:
      type: object
      properties:
        id:
          type: string
        author:
          type: string
        created_at:
          type:
            - string
            - 'null'
        subreddit:
          type: string
        votes:
          type:
            - number
            - 'null'
        title:
          type: string
        text:
          type: string
        url:
          type:
            - string
            - 'null'
        comments_count:
          type:
            - number
            - 'null'
        upvote_ratio:
          type:
            - number
            - 'null'
        is_locked:
          type:
            - boolean
            - 'null'
        is_archived:
          type:
            - boolean
            - 'null'
        media:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              url:
                type: string
    RedditCommentPreview:
      type: object
      description: >-
        User-history comment text may be truncated. thread_url opens its parent
        thread; it is not a direct comment permalink.
      properties:
        id:
          type: string
        author:
          type: string
        created_at:
          type:
            - string
            - 'null'
        subreddit:
          type: string
        votes:
          type:
            - number
            - 'null'
        body_preview:
          type: string
        is_preview:
          type: boolean
          const: true
        post_id:
          type: string
        post_title:
          type: string
        thread_url:
          type:
            - string
            - 'null'
    Post:
      type: object
      description: A social post identified by its URL. Post IDs are not included.
      properties:
        url:
          type:
            - string
            - 'null'
        created_at:
          type:
            - string
            - 'null'
          format: date-time
        type:
          type: string
          description: >-
            X: `post`, `reply`, `quote` or `repost`. Instagram: `photo`,
            `video`, `carousel` or `reel`. TikTok: `video` or `photos`.
            Facebook: `post`.
        text:
          type: string
        lang:
          type:
            - string
            - 'null'
          description: X only.
        referenced:
          type: object
          description: 'X only: the post a reply, quote or repost refers to.'
          properties:
            author:
              type:
                - string
                - 'null'
            text:
              type:
                - string
                - 'null'
            url:
              type:
                - string
                - 'null'
            unavailable:
              type: boolean
              description: True when the original was deleted or is private.
        metrics:
          type: object
          properties:
            likes:
              type:
                - integer
                - 'null'
            comments:
              type:
                - integer
                - 'null'
            replies:
              type:
                - integer
                - 'null'
            reposts:
              type:
                - integer
                - 'null'
            shares:
              type:
                - integer
                - 'null'
            views:
              type:
                - integer
                - 'null'
  responses:
    BadRequest:
      description: The request is invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: url must be an X, Instagram or TikTok profile address.
    Unauthorized:
      description: No API key was sent, or the key isn't valid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: >-
                Send your API key as Authorization: Bearer <key>. Sign in to the
                dashboard to make one.
    ProfileNotFound:
      description: No public profile was found for the LinkedIn address.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: No profile was found for that LinkedIn address.
    TooLarge:
      description: The request body is over 64 KB.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: The profile provider is rate limiting requests. Retry shortly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: LinkedIn profiles are rate limited right now; try again shortly.
    Failed:
      description: The request failed unexpectedly.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              message: The request failed.
    ProfileProviderFailed:
      description: >-
        The LinkedIn profile provider failed or refused the request, for example
        because its wallet is out of funds.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unconfigured:
      description: The server is missing the credentials this request needs.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        An API key from the dashboard's API Keys page (sign in or sign up there
        with a constants.io account), sent as `Authorization: Bearer <key>`.
        Keys start with `cps_`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.