> ## Documentation Index
> Fetch the complete documentation index at: https://idle.docs.datacircle.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Get one LinkedIn profile

> Fetchin's own request (https://api.fetchin.io/api/v1/profile), sent to idle.api.datacircle.dev with your Datacircle key in `Authorization` and `X-Data-Provider: fetchin`. Nothing else changes. $0.001485 per profile, found or not (what Fetchin's credits cost us, no markup).



## OpenAPI

````yaml /openapi.json get /api/v1/profile
openapi: 3.1.0
info:
  title: Datacircle API
  version: '1'
  description: >-
    Datacircle is a data co-op.


    Step 1: Query your favorite B2B data APIs through us. Same request, same
    price, no markup.


    Step 2: You're DONE. Every morning, you get the flat file of your data plus
    everyone else's.


    You send the provider's own request to idle.api.datacircle.dev, with your
    Datacircle key. That's the only change.


    Right now we have 2 live LinkedIn profile APIs that we trust: Up2Data and
    HarvestAPI. Each request goes to the provider and gets the profile as it is
    today.


    Add $50 to your account: you get $50 of API PLUS the flat file. Or invite 3
    people who sign up.


    Sign up at idle.datacircle.dev with your work email: a $5 credit, that's
    2,105 LinkedIn profiles at $2.375 per 1,000.


    Free: 10M+ U.S. B2B leads, as a flat file. Download it at
    idle.datacircle.dev.


    Use it from Claude, ChatGPT or Cursor: add idle.api.datacircle.dev/mcp as an
    MCP server.


    The docs: [idle.docs.datacircle.dev](https://idle.docs.datacircle.dev).
  termsOfService: https://idle.datacircle.dev/terms
  contact:
    name: Datacircle
    url: https://idle.datacircle.dev
    email: wayne@datacircle.dev
  x-logo:
    url: https://idle.datacircle.dev/favicon.png
    altText: Datacircle
servers:
  - url: https://idle.api.datacircle.dev
security:
  - token: []
tags:
  - name: Datacircle
    description: 'Your Datacircle account: balance, adding funds, files, invites, API key.'
  - name: Up2Data
    description: >-
      LinkedIn Profile API: Up2Data's own request, sent to
      idle.api.datacircle.dev with your Datacircle key and `X-Data-Provider:
      up2data`.
  - name: HarvestAPI
    description: >-
      LinkedIn Profile API: HarvestAPI's own request, sent to
      idle.api.datacircle.dev with your Datacircle key and `X-Data-Provider:
      harvestapi`.
  - name: Fetchin
    description: >-
      LinkedIn Profile API: Fetchin's own request, sent to
      idle.api.datacircle.dev with your Datacircle key and `X-Data-Provider:
      fetchin`.
externalDocs:
  description: Datacircle docs
  url: https://idle.docs.datacircle.dev
paths:
  /api/v1/profile:
    get:
      tags:
        - Fetchin
      summary: Get one LinkedIn profile
      description: >-
        Fetchin's own request (https://api.fetchin.io/api/v1/profile), sent to
        idle.api.datacircle.dev with your Datacircle key in `Authorization` and
        `X-Data-Provider: fetchin`. Nothing else changes. $0.001485 per profile,
        found or not (what Fetchin's credits cost us, no markup).
      parameters:
        - name: profileUrlOrUrn
          in: query
          required: true
          description: >-
            The profile's LinkedIn URL, e.g.
            `https://www.linkedin.com/in/williamhgates`. The only Fetchin
            parameter Datacircle passes on, and only as a profile URL: Fetchin's
            public identifier and URN forms, and `fullProfile`, are refused with
            a `400`, not charged.
          schema:
            type: string
          example: https://www.linkedin.com/in/williamhgates
        - name: X-Data-Provider
          in: header
          required: true
          description: >-
            names the provider: `fetchin`. With the host, the only change from
            the provider's own request.
          schema:
            type: string
            enum:
              - fetchin
            default: fetchin
          example: fetchin
      responses:
        '200':
          description: 'Fetchin''s answer plus `datacircle_meta`: the profile ($0.001485)'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchinProfileResponse'
              example:
                id: urn:li:fsd_profile:ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc
                firstName: Bill
                lastName: Gates
                title: Chair, Gates Foundation and Founder, Breakthrough Energy
                titleLocalized:
                  en_US: Chair, Gates Foundation and Founder, Breakthrough Energy
                profilePictureUrl: >-
                  https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_800_800/B56ZRi8g.aGsAc-/0/1736826818808?e=1793232000&v=beta&t=h84Ee-2NucG0tJjTkgWGFHOtQD4ICX0mrcRqdTWoQzM
                profilePictureUrls:
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_100_100/B56ZRi8g.aGsAU-/0/1736826818802?e=1793232000&v=beta&t=O5RD8NYeOrgjqRdJ-_v4kuY6hTWP4QwmUTl48C_MlyQ
                    width: 100
                    height: 100
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_200_200/B56ZRi8g.aGsAY-/0/1736826818802?e=1793232000&v=beta&t=17jBHjv57ltykRl_wZjd5omtcoCNIeHlQmIuiDqfQdA
                    width: 200
                    height: 200
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_400_400/B56ZRi8g.aGsAg-/0/1736826818802?e=1793232000&v=beta&t=6li-zoqlynH-0YQM1GDzab3uTl-m0TiupU2rYUExUl4
                    width: 400
                    height: 400
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5603AQF-RYZP55jmXA/profile-displayphoto-shrink_800_800/B56ZRi8g.aGsAc-/0/1736826818808?e=1793232000&v=beta&t=h84Ee-2NucG0tJjTkgWGFHOtQD4ICX0mrcRqdTWoQzM
                    width: 800
                    height: 800
                location: Seattle, Washington, United States
                coverImageUrl: >-
                  https://media.licdn.com/dms/image/v2/D5616AQEjhPbTCeblYg/profile-displaybackgroundimage-shrink_350_1400/B56ZcytR5SGsAg-/0/1748902420393?e=1793232000&v=beta&t=PurNZciepthIMLCl9A59bR0oQS7vFuaZzm97H6JF1_8
                coverImageUrls:
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5616AQEjhPbTCeblYg/profile-displaybackgroundimage-shrink_200_800/B56ZcytR5SGsAc-/0/1748902420393?e=1793232000&v=beta&t=87huvcabUzbzKmLt58lcmTZuQpW6175CreT6Qw9m7KQ
                    width: 800
                    height: 200
                  - url: >-
                      https://media.licdn.com/dms/image/v2/D5616AQEjhPbTCeblYg/profile-displaybackgroundimage-shrink_350_1400/B56ZcytR5SGsAg-/0/1748902420393?e=1793232000&v=beta&t=PurNZciepthIMLCl9A59bR0oQS7vFuaZzm97H6JF1_8
                    width: 1400
                    height: 350
                publicIdentifier: williamhgates
                url: https://www.linkedin.com/in/williamhgates/
                profileId: ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc
                geoLocationName: Seattle, Washington, United States
                geoCountryName: United States
                connectionType: OUT_OF_NETWORK
                creator: true
                influencer: true
                premium: true
                isVerified: true
                geoUrn: urn:li:fsd_geo:104116203
                creatorInfo:
                  hashTags:
                    - '#books'
                    - '#climatechange'
                    - '#healthcare'
                    - '#innovation'
                    - '#sustainability'
                  website: https://gatesnot.es/AI
                memberId: '251749025'
                openToWork: false
                hiring: false
                inRemembrance: false
                topVoice: true
                followerCount: 40715903
                connectionsCount: 8
                countryCode: US
                jobTitle: Co-chair
                companyName: Gates Foundation
                companyPublicId: gates-foundation
                companyLinkedinUrl: https://www.linkedin.com/company/gates-foundation/
                currentPosition:
                  positionUrn: >-
                    urn:li:fsd_profilePosition:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,392598211)
                  name: Gates Foundation
                  companyId: '8736'
                  companyUrn: urn:li:fsd_company:8736
                  publicIdentifier: gates-foundation
                  url: https://www.linkedin.com/company/gates-foundation/
                  title: Co-chair
                currentSchool: null
                openProfile: false
                description: >-
                  Chair of the Gates Foundation. Founder of Breakthrough Energy.
                  Co-founder of Microsoft. Voracious reader. Avid traveler.
                  Active blogger.
                languages: []
                certifications: []
                volunteerCauses: []
                skills: []
                experiences:
                  - name: Gates Foundation
                    jobTitle: Co-chair
                    description: ''
                    dateRange: 2000 - Present
                    current: true
                    ongoing: true
                    positionUrn: >-
                      urn:li:fsd_profilePosition:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,392598211)
                    positionGroupUrn: >-
                      urn:li:fsd_profilePositionGroup:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,f0723c2e436a6bda4ab6fb5a97d650cfe30b9990)
                    positionGroupId: f0723c2e436a6bda4ab6fb5a97d650cfe30b9990
                    timePeriod:
                      startDate:
                        year: 2000
                      endDate: null
                    totalDuration: 26 yrs 10 mos
                    company:
                      url: https://www.linkedin.com/company/gates-foundation/
                      name: Gates Foundation
                      logo: >-
                        https://media.licdn.com/dms/image/v2/D560BAQEgMqqFTd40Tg/company-logo_400_400/company-logo_400_400/0/1736784969376/bill__melinda_gates_foundation_logo?e=1793232000&v=beta&t=-3Or6OsbYEKsjb0OeDOnM7sqQbLZt5c7mY8psW87kHE
                      companyId: '8736'
                      urn: urn:li:fsd_company:8736
                  - name: Breakthrough Energy
                    jobTitle: Founder
                    description: ''
                    dateRange: 2015 - Present
                    current: false
                    ongoing: true
                    positionUrn: >-
                      urn:li:fsd_profilePosition:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,1836104012)
                    positionGroupUrn: >-
                      urn:li:fsd_profilePositionGroup:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,e259382720cb8b581205a34c2c592d712a9091fd)
                    positionGroupId: e259382720cb8b581205a34c2c592d712a9091fd
                    timePeriod:
                      startDate:
                        year: 2015
                      endDate: null
                    totalDuration: 11 yrs 10 mos
                    company:
                      url: https://www.linkedin.com/company/breakthrough-energy/
                      name: Breakthrough Energy
                      logo: >-
                        https://media.licdn.com/dms/image/v2/D560BAQFRMYiQN7-2kA/company-logo_400_400/B56ZoI4SGPI0AY-/0/1761085563539/breakthrough_energy_logo?e=1793232000&v=beta&t=FBopuNvB5P3C3RAvxFakKw8SfEvJkHDMC8Cy1ivv3a4
                      companyId: '19141006'
                      urn: urn:li:fsd_company:19141006
                  - name: Microsoft
                    jobTitle: Co-founder
                    description: ''
                    dateRange: 1975 - Present
                    current: false
                    ongoing: true
                    positionUrn: >-
                      urn:li:fsd_profilePosition:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,392599749)
                    positionGroupUrn: >-
                      urn:li:fsd_profilePositionGroup:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,379b0fee813e578bb10050b852dc16ba755ef821)
                    positionGroupId: 379b0fee813e578bb10050b852dc16ba755ef821
                    timePeriod:
                      startDate:
                        year: 1975
                      endDate: null
                    totalDuration: 51 yrs 10 mos
                    company:
                      url: https://www.linkedin.com/company/microsoft/
                      name: Microsoft
                      logo: >-
                        https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_400_400/B56ZYQ0mrGGoAc-/0/1744038948046/microsoft_logo?e=1793232000&v=beta&t=-G3KTWbySWNRDLM-7_sSgY3V09nqPA0Iswoptltp6cs
                      companyId: '1035'
                      urn: urn:li:fsd_company:1035
                educations:
                  - name: Harvard University
                    description: ''
                    dateRange: 1973 - 1975
                    current: false
                    ongoing: false
                    educationUrn: >-
                      urn:li:fsd_profileEducation:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,157656829)
                    schoolLogo: >-
                      https://media.licdn.com/dms/image/v2/C4E0BAQF5t62bcL0e9g/company-logo_400_400/company-logo_400_400/0/1631318058235?e=1793232000&v=beta&t=tG7qGly5_Uq33s6x0-9U8QrenZr2NTdEdR8ydLfb8II
                    schoolUrl: https://www.linkedin.com/school/harvard-university/
                    timePeriod:
                      startDate:
                        year: 1973
                      endDate:
                        year: 1975
                  - name: Lakeside School
                    description: ''
                    dateRange: ''
                    current: false
                    ongoing: false
                    educationUrn: >-
                      urn:li:fsd_profileEducation:(ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc,157676006)
                    schoolLogo: >-
                      https://media.licdn.com/dms/image/v2/D560BAQGFmOQmzpxg9A/company-logo_400_400/company-logo_400_400/0/1683732883164/lakeside_school_logo?e=1793232000&v=beta&t=LuT1qFGoma5gJltCnUOlsIthuPoLj_fhfuT1SwUjyzM
                    schoolUrl: https://www.linkedin.com/school/lakeside-school/
                joinDate:
                  month: 5
                  year: 2013
                websites:
                  - url: https://gatesnot.es/sourcecode-li
                    category: BLOG
                recommendations: []
                recommendationsGiven: []
                testScores: []
                publications: []
                projects: []
                patents: []
                honors: []
                organizations: []
                courses: []
                volunteerExperiences: []
                industry: Philanthropy
                industryUrn: urn:li:fsd_industry:131
                primaryLocale: en_US
                supportedLocales:
                  - en_US
                descriptionLocalized:
                  en_US: >-
                    Chair of the Gates Foundation. Founder of Breakthrough
                    Energy. Co-founder of Microsoft. Voracious reader. Avid
                    traveler. Active blogger.
                entityType: Person
                datacircle_meta:
                  provider: fetchin
                  cost_usd: 0.001485
                  balance_usd: 20.5
        '400':
          description: >-
            Not charged: no `profileUrlOrUrn`, one that isn't a LinkedIn profile
            URL (`https://www.linkedin.com/in/<slug>`), a query parameter other
            than `profileUrlOrUrn`, or an `X-Data-Provider` value that isn't
            `up2data`, `harvestapi` or `fetchin` (`Error`); or Fetchin's own
            `400`, passed on (`FetchinError`)
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/FetchinError'
                  - $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: Balance too low
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - balance_usd
                properties:
                  error:
                    type: string
                    description: >-
                      Why the call was refused: your balance can't cover it. Not
                      charged.
                  balance_usd:
                    type: number
                    description: >-
                      Your balance now, in dollars (`balance_usd` in `GET
                      /balance/`). `POST /checkout/` adds funds.
                additionalProperties: false
        '404':
          description: >-
            Fetchin can't find the profile (`FetchinError`, `code:
            PROFILE_NOT_FOUND`): $0.001485, Fetchin bills the lookup. Or no
            `X-Data-Provider` header, or a path Datacircle doesn't call for that
            provider (`Error`), not charged
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/FetchinError'
                  - $ref: '#/components/schemas/Error'
              example:
                error: LinkedIn profile not found
                code: PROFILE_NOT_FOUND
                datacircle_meta:
                  provider: fetchin
                  cost_usd: 0.001485
                  balance_usd: 20.5
        '429':
          description: >-
            Fetchin's rate limit (`code: RATE_LIMITED`): 5 requests a second for
            all Datacircle customers together. Not charged; send the same
            request again in a second.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FetchinError'
        '502':
          description: >-
            Fetchin's own server failed: its error passes on as it came, with
            its status (`500`, `503` and `504` too, in `FetchinError`). Not
            charged; send the same request again.
        '503':
          description: >-
            Fetchin hasn't answered within 45 s, can't be reached, or refused
            Datacircle's own account (its `401`, `402` or `403`): Datacircle
            stops waiting. Not charged; send the same request again.
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Datacircle's own answer when the provider hasn't answered
                  within 45 s, retries included, or can't be reached. Not
                  charged.
                required:
                  - error
                  - balance_usd
                properties:
                  error:
                    type: string
                    description: What went wrong, in plain words.
                  balance_usd:
                    type: number
                    description: >-
                      Your balance now, in dollars (`balance_usd` in `GET
                      /balance/`).
                additionalProperties: false
      x-codeSamples:
        - lang: bash
          label: curl
          source: >-
            curl
            "https://idle.api.datacircle.dev/api/v1/profile?profileUrlOrUrn=https://www.linkedin.com/in/williamhgates"
            \
              -H "Authorization: Token $DATACIRCLE_API_KEY" \
              -H "X-Data-Provider: fetchin"
        - lang: python
          label: Python
          source: |-
            import os

            import requests

            response = requests.get(
                "https://idle.api.datacircle.dev/api/v1/profile",
                headers={"Authorization": f"Token {os.environ['DATACIRCLE_API_KEY']}", "X-Data-Provider": "fetchin"},
                params={'profileUrlOrUrn': 'https://www.linkedin.com/in/williamhgates'},
            )
            print(response.json())
components:
  schemas:
    FetchinProfileResponse:
      type: object
      properties:
        id:
          type: string
          description: Profile URN (unique identifier)
        firstName:
          type: string
          description: Profile first name.
        lastName:
          type: string
          description: >-
            Profile last name. Some members restrict their full surname to their
            own contacts; for those profiles this is the publicly displayed
            initial (e.g. "D.") and lastNameInitialOnly is true. The full
            surname is not available through any request in that case.
        lastNameInitialOnly:
          type: boolean
          description: >-
            Present and true only when lastName is an initial because the member
            restricts it. Absent otherwise, never false.
        title:
          type: string
          description: >-
            Professional headline. A member can publish their profile in several
            languages and the source does not translate between them. This is
            the English version when the member published one, otherwise the
            version in their primaryLocale. Deterministic: two calls return the
            same language. Every version they did publish is in titleLocalized /
            descriptionLocalized.
        titleLocalized:
          type: object
          additionalProperties:
            type: string
          description: >-
            title in each language the member published, keyed by locale
            ("fr_FR", "en_US").
        description:
          type: string
          description: >-
            About/summary section. A member can publish their profile in several
            languages and the source does not translate between them. This is
            the English version when the member published one, otherwise the
            version in their primaryLocale. Deterministic: two calls return the
            same language. Every version they did publish is in titleLocalized /
            descriptionLocalized. Line breaks are returned exactly as the source
            stores them: for some profiles the source holds this text with its
            line breaks already removed, and they are not reconstructed by
            guesswork.
        descriptionLocalized:
          type: object
          additionalProperties:
            type: string
          description: description in each language the member published, keyed by locale.
        location:
          type: string
          description: Where the member is, as the profile shows it.
        profilePictureUrl:
          type: string
          description: >-
            Profile picture URL, largest size available. Always a string: when
            the member has no photo of their own it holds a generic placeholder
            image and `profilePictureUrls` is absent.
        profilePictureUrls:
          type: array
          description: >-
            Every size of the profile picture, smallest first, one entry per
            distinct size (how many varies: a small original comes in fewer
            sizes); the last entry is the image `profilePictureUrl` points to
            (the framed picture when the member displays a photo frame). ABSENT,
            not empty and not null, when the member has no photo of their own,
            which is how to tell a real photo from the placeholder in
            `profilePictureUrl`. Not returned for organization records.
          items:
            type: object
            description: >-
              One size of an image. Read the size from `width` and `height`,
              never from the URL: the size written in the URL path is the size
              that was requested and can differ from the file served. Image URLs
              are signed and stop working after an expiry date the source sets
              (their `e=` query parameter), which we do not control; download an
              image to keep it rather than storing its URL.
            required:
              - url
            properties:
              url:
                type: string
                description: Image URL
              width:
                type: integer
                description: >-
                  Width in pixels, as declared by the source. Omitted when it
                  declares none.
              height:
                type: integer
                description: >-
                  Height in pixels, as declared by the source. Omitted when it
                  declares none.
        experiences:
          type: array
          description: >-
            Complete work experience history, ordered most recent first. Every
            position is returned in a single call - there is no pagination to
            follow, including for members with dozens of past employers and for
            members holding many successive roles at the same one. If a section
            could not be completed, the top-level `partial` object names it.
          items:
            type: object
            properties:
              name:
                type: string
                description: Company name
              jobTitle:
                type: string
                description: Job title/role
              description:
                type: string
                description: Role description
              dateRange:
                type: string
                description: Date range
              current:
                type: boolean
                description: >-
                  Whether this is the role the member designates as their
                  PRIMARY one (the one shown at the top of their profile). At
                  most one experience is true across the whole response, and it
                  is false when the designated role has already ended. This is a
                  designation, not a date test - use `ongoing` to find every
                  role still running.
              positionUrn:
                type: string
                description: >-
                  URN of this position entity; join key for
                  currentPosition.positionUrn
              positionGroupUrn:
                type: string
                description: >-
                  Which stint this role belongs to. A stint is one continuous
                  period at one employer: roles sharing it were held back to
                  back there and sit next to each other in `experiences`. A
                  member who leaves an employer and returns has TWO stints, i.e.
                  two different values with the same `company.companyId`, so
                  group by this rather than by `companyId`. Opaque, and
                  consistent within one response only: the same stint is not
                  guaranteed the same value on a later fetch. Omitted in the
                  rare case the grouping is not available.
              positionGroupId:
                type: string
                description: >-
                  The key inside `positionGroupUrn`, in the spirit of
                  `companyId` / `geoId`. It is a 40-character hexadecimal
                  string, not a number. Only meaningful together with the
                  profile it came from, so never use it on its own.
              locationName:
                type: string
                description: >-
                  Job location as the member sees it, in THEIR own profile
                  language (e.g. "Barcelona, Cataluna, Espana"). Free text - use
                  geoId/geoUrn to normalise or group. The profile language is
                  reported in the top-level primaryLocale.
              employmentType:
                type: string
                description: Employment type (e.g., Freelance, Part-time)
              timePeriod:
                type: object
                properties:
                  startDate:
                    type: object
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it started.
                  endDate:
                    type:
                      - object
                      - 'null'
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it ended; `null` while it lasts.
                description: When it started and ended.
              totalDuration:
                type: string
                description: Duration string (e.g., 3 yrs 1 mo)
              company:
                type: object
                properties:
                  name:
                    type: string
                    description: The company's name.
                  url:
                    type: string
                    description: Company profile URL
                  logo:
                    type: string
                    description: Company logo URL
                  companyId:
                    type: string
                    description: >-
                      Numeric company id (e.g. "8736"), parsed from the company
                      URN
                  urn:
                    type: string
                    description: Full company URN
                description: >-
                  Company details. Three cases: the employer has a professional
                  page (url/logo/companyId/urn present alongside name); the
                  member typed an employer with no page (name only); or the
                  member saved no employer at all (name is "" and company is
                  omitted - employmentType usually carries the meaning). An
                  empty name means "no employer entered", never "employer has no
                  page".
              ongoing:
                type: boolean
                description: >-
                  Whether the role is still running: a start date and no end
                  date - exactly the entries whose dateRange ends in "Present".
                  Independent of `current`: ANY number of experiences can be
                  ongoing, and someone holding four concurrent roles has four.
                  An entry saved with no dates at all is false rather than
                  assumed ongoing.
              geoLocationName:
                type: string
                description: >-
                  The standardized location caption behind locationName, in the
                  same language.
              geoUrn:
                type: string
                description: >-
                  Stable identifier for the position location, e.g.
                  "urn:li:fsd_geo:107025191". Language-independent - the right
                  key to join or group on.
              geoId:
                type: string
                description: Numeric tail of geoUrn, e.g. "107025191".
              locationNameLocalized:
                type: object
                description: >-
                  Every language the source holds for this location caption,
                  keyed by locale, e.g. {"es_ES": "Barcelona, Cataluna,
                  Espana"}.
                additionalProperties:
                  type: string
        educations:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: School/University name
              description:
                type: string
                description: Degree and field combined
              dateRange:
                type: string
                description: Date range
              current:
                type: boolean
                description: >-
                  Whether this is the person's current (ongoing) education. At
                  most one education is true.
              educationUrn:
                type: string
                description: >-
                  URN of this education entity; join key for
                  currentSchool.educationUrn
              degreeName:
                type: string
                description: Degree name (e.g., MBA, MSEE)
              fieldOfStudy:
                type: string
                description: Field of study
              grade:
                type: string
                description: Grade or honors, as free text (e.g. "First Class Honours")
              details:
                type: string
                description: >-
                  The member's own free-text description of this education
                  entry. Distinct from `description`, which stays the
                  synthesized degree + field string.
              schoolLogo:
                type: string
                description: School logo URL
              schoolUrl:
                type: string
                description: School profile URL
              timePeriod:
                type: object
                properties:
                  startDate:
                    type: object
                    properties:
                      year:
                        type: integer
                        description: The year.
                    description: When it started.
                  endDate:
                    type: object
                    properties:
                      year:
                        type: integer
                        description: The year.
                    description: When it ended; `null` while it lasts.
                description: When it started and ended.
              ongoing:
                type: boolean
                description: >-
                  Whether the studies are still running: a start year and no end
                  year. Note an ongoing education dateRange reads "2022", not
                  "2022 - Present".
              activities:
                type: string
                description: >-
                  The "activities and societies" line the member entered for
                  this entry, e.g. "Nature Club, LTS, Elocution". Omitted when
                  blank.
          description: The schools, newest first.
        volunteerCauses:
          type: array
          items:
            type: string
          description: Volunteer causes listed on the profile
        skills:
          type: array
          description: >-
            Professional skills listed on the profile. Complete list, returned
            in the same single call as the rest of the profile.
          items:
            type: object
            properties:
              name:
                type: string
                description: Skill name
        languages:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Language name
              proficiency:
                type: string
                description: Proficiency level
          description: The languages the member lists.
        certifications:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: Certification name
              organizationName:
                type: string
                description: Issuing organization's name
              organizationUrl:
                type: string
                description: Issuing organization's professional page URL, when available
              issuedDate:
                type: string
                description: >-
                  When the certification was issued (e.g. Jun 2018). When the
                  credential also expires, this string carries both dates (Jun
                  2018 - Jun 2026) for backward compatibility - read
                  expirationDate for the expiry on its own.
              authority:
                type: string
                deprecated: true
                description: >-
                  Legacy alias of organizationName, kept for backward
                  compatibility
              dateRange:
                type: string
                deprecated: true
                description: Legacy alias of issuedDate, kept for backward compatibility
              expirationDate:
                type: string
                description: >-
                  When the credential expires (e.g. Jun 2026). Omitted when it
                  does not expire.
              credentialId:
                type: string
                description: >-
                  The credential ID the member entered, as free text. Omitted
                  when blank.
              credentialUrl:
                type: string
                description: >-
                  The "show credential" link the member entered. Omitted when
                  blank.
              organizationLogo:
                type: string
                description: >-
                  Issuing organization logo image URL, when a professional page
                  is linked.
          description: Licenses and certifications.
        coverImageUrl:
          type: string
          description: Profile banner/background image URL
        coverImageUrls:
          type: array
          description: >-
            Every size of the banner image, smallest first. Banners are not
            square, so use both `width` and `height`. Absent when the member has
            no banner, in which case `coverImageUrl` is absent too.
          items:
            type: object
            description: >-
              One size of an image. Read the size from `width` and `height`,
              never from the URL: the size written in the URL path is the size
              that was requested and can differ from the file served. Image URLs
              are signed and stop working after an expiry date the source sets
              (their `e=` query parameter), which we do not control; download an
              image to keep it rather than storing its URL.
            required:
              - url
            properties:
              url:
                type: string
                description: Image URL
              width:
                type: integer
                description: >-
                  Width in pixels, as declared by the source. Omitted when it
                  declares none.
              height:
                type: integer
                description: >-
                  Height in pixels, as declared by the source. Omitted when it
                  declares none.
        publicIdentifier:
          type: string
          description: Public identifier (slug)
        profileId:
          type: string
          description: Member identifier
        countryCode:
          type: string
          description: ISO country code
        geoLocationName:
          type: string
          description: Full geographic location string
        geoCountryName:
          type: string
          description: Country name
        geoUrn:
          type: string
          description: Geo URN
        connectionType:
          type: string
          description: Relationship to the authenticated account
        creatorInfo:
          type: object
          description: Creator mode information
          properties:
            hashTags:
              type: array
              items:
                type: string
              description: Creator hashtags
            website:
              type:
                - string
                - 'null'
              description: Creator website URL
        jobTitle:
          type: string
          description: >-
            Title of the member DESIGNATED PRIMARY role (the same entry flagged
            current in experiences). A designation, not a date test: if the
            member has not updated their profile since that role ended, jobTitle
            still reflects it while the matching experience shows ongoing:false.
        companyName:
          type: string
          description: >-
            Employer of that same designated role. Same caveat as jobTitle.
            Derived from the position itself, whereas currentPosition reflects
            the block the member chooses to DISPLAY at the top of their profile
            - so currentPosition can be null while jobTitle/companyName are set.
        companyPublicId:
          type: string
          description: Current company public identifier slug
        companyLinkedinUrl:
          type: string
          description: Current company profile URL
        currentPosition:
          type:
            - object
            - 'null'
          description: >-
            Explicit "current company" block from the top of the profile page.
            Object when the member displays it, null when they don't (an ongoing
            primary position may still exist in experiences).
          properties:
            positionUrn:
              type: string
              description: >-
                URN of the designated position; matches
                experiences[].positionUrn
            title:
              type: string
              description: Role title of the designated position
            name:
              type: string
              description: Company name
            companyId:
              type: string
              description: Numeric company id, usable with the company endpoints
            companyUrn:
              type: string
              description: Full company URN
            publicIdentifier:
              type: string
              description: Company page slug
            url:
              type: string
              description: Company page URL
        currentSchool:
          type:
            - object
            - 'null'
          description: >-
            Explicit "education" block from the top of the profile page. Object
            when the member displays it, null when they don't.
          properties:
            educationUrn:
              type: string
              description: >-
                URN of the designated education entry; matches
                educations[].educationUrn
            name:
              type: string
              description: School name
            schoolId:
              type: string
              description: >-
                Legacy school id from urn:li:fsd_school:<id>; distinct from
                companyId
            schoolUrn:
              type: string
              description: Full school URN
            companyId:
              type: string
              description: >-
                Numeric organization id of the school's page, usable with the
                company endpoints
            publicIdentifier:
              type: string
              description: School page slug
            url:
              type: string
              description: School page URL
        followerCount:
          type: number
          description: Number of followers
        connectionsCount:
          type: number
          description: Number of connections
        creator:
          type: boolean
          description: Whether Creator mode is enabled
        influencer:
          type: boolean
          description: >-
            Whether the profile carries the platform's long-standing editorial
            recognition. Distinct from topVoice: a profile can have one without
            the other.
        topVoice:
          type: boolean
          description: >-
            Present and true when the profile carries a recognised-voice badge.
            ABSENT (not false) when it does not, which is the case for most
            profiles — treat an absent key as falsy. The badge's display label
            is not returned because the source translates it per reading
            session.
        premium:
          type: boolean
          description: Whether the profile has Premium
        isVerified:
          type: boolean
          description: Whether the profile has a verification badge
        memberId:
          type: string
          description: >-
            Numeric internal member id (e.g. "251749025"). Distinct from
            `id`/`profileId`, which carry the `urn:li:fsd_profile:…` form.
        openToWork:
          type: boolean
          description: >-
            Whether the profile shows the public #OPEN_TO_WORK photo frame.
            Reflects the publicly visible badge only; recruiter-only 'open to
            work' is not exposed.
        hiring:
          type: boolean
          description: >-
            Whether the profile shows the public #HIRING photo frame. A profile
            picture carries one frame at most, so hiring and openToWork are
            never both true.
        inRemembrance:
          type: boolean
          description: >-
            Whether the account has been officially memorialized ('In
            Remembrance'). Only a memorialized account returns true: a regular
            profile whose headline mentions the member has passed away returns
            false.
        openProfile:
          type: boolean
          description: >-
            Whether the member runs an open profile: anyone can message them
            directly without being one of their connections, and without
            spending a paid message credit. Unrelated to `openToWork`, and not
            the same as `premium` (some non-premium members are reachable this
            way). An ABSENT openProfile means unknown, never false: on a small
            share of calls it cannot be determined, the key is omitted and
            partial.sections includes openProfile; requesting the profile again
            normally returns it. A memorialized account (inRemembrance true)
            always returns false, since nobody can message it. It is the only
            status boolean that can be absent on a person profile.
        joinDate:
          type: object
          description: Approximate account creation date (month + year).
          properties:
            month:
              type: integer
              description: The month, 1 to 12.
            year:
              type: integer
              description: The year.
        birthDate:
          type: object
          description: >-
            The member's birthday, only when their privacy settings make it
            visible to us; absent when they hide it or never entered it. Members
            choose who can see it, so one who limits it to a narrower audience
            may appear on some calls and not on others. Included in every call
            at no extra cost. Always a month and a day; the year only when the
            member shares it, which is rare.
          properties:
            month:
              type: integer
              description: 1-12
            day:
              type: integer
              description: 1-31
            year:
              type: integer
              description: Only when the member shows it
          required:
            - month
            - day
        websites:
          type: array
          description: >-
            The websites listed in the member's contact info, only when their
            privacy settings make them visible to us, in the order the member
            listed them. Absent (never an empty array) when there are none to
            show. Included in every call at no extra cost. Not the same as
            creatorInfo.website, the single link a creator pins to their
            profile.
          items:
            type: object
            properties:
              url:
                type: string
                description: The website's URL.
              category:
                type: string
                description: >-
                  The type the member picked for it, e.g. PERSONAL, COMPANY,
                  BLOG, PORTFOLIO or OTHER
            required:
              - url
        url:
          type: string
          description: Canonical public URL of the professional profile page
        pronoun:
          type: string
          description: >-
            Publicly displayed pronouns (e.g. "she/her"). Omitted when the
            member doesn't display pronouns.
        recommendations:
          type: array
          description: >-
            Recommendations received by the member. Best-effort: omitted when
            this section could not be fetched, empty array when the member has
            none.
          items:
            type: object
            properties:
              caption:
                type: string
                description: >-
                  The recommender's headline at the time of the fetch (the
                  context line shown under the author's name)
              description:
                type: string
                description: The recommendation text
              authorFullname:
                type: string
                description: The recommender's full name
              authorUrl:
                type: string
                description: The recommender's public profile page URL
              createdAt:
                type: string
                format: date-time
                description: >-
                  When the recommendation was written, ISO 8601. Omitted when
                  the source carries no timestamp.
              lastModifiedAt:
                type: string
                format: date-time
                description: >-
                  When it was last edited, ISO 8601. Equal to createdAt when it
                  was never edited.
        testScores:
          type: array
          description: Test scores listed on the profile
          items:
            type: object
            properties:
              name:
                type: string
                description: Test name (e.g. "TOEIC")
              score:
                type: string
                description: Score, as free text (e.g. "990")
              date:
                type: string
                description: When the test was taken (e.g. Jun 2018)
        industry:
          type: string
          description: >-
            The member self-declared industry, e.g. "Information Technology &
            Services". Uses the industry vocabulary the profile page itself
            displays, which is NOT the same list as the industry field on the
            company endpoint - do not join the two. Omitted when the member
            lists none.
        industryUrn:
          type: string
          description: Stable identifier for industry, e.g. "urn:li:fsd_industry:96".
        primaryLocale:
          type: string
          description: >-
            The language the member AUTHORED their profile in, e.g. "es_ES". It
            does not by itself say which language the free text beside it is in
            - see title and description. For language-independent values use
            geoUrn, industryUrn or companyId.
        supportedLocales:
          type: array
          items:
            type: string
          description: >-
            Every language the member published their profile in, e.g.
            ["fr_FR","en_US"]. A member who wrote their profile once gets a
            single-entry array, so more than one entry is the signal that
            titleLocalized / descriptionLocalized have something to choose from.
        entityType:
          type: string
          enum:
            - Person
            - Company
          description: >-
            "Person" for a member profile. "Company" when an organization
            identifier was supplied: a company, school or showcase URL is
            accepted here for backward compatibility and returns a REDUCED
            record (organization name in firstName, tagline in title, empty
            experiences/educations). Prefer GET /api/v1/company for
            organizations.
        publications:
          type: array
          description: Publications listed on the profile, in display order.
          items:
            type: object
            properties:
              name:
                type: string
                description: Publication title.
              publisher:
                type: string
                description: Publisher or journal.
              description:
                type: string
                description: The member own description. Omitted when blank.
              url:
                type: string
                description: Link to the publication.
              publishedDate:
                type: string
                description: Publication date, e.g. Sep 2021.
              publishedOn:
                type: object
                description: The same date structured, when finer than month is available.
                properties:
                  year:
                    type: integer
                    description: The year.
                  month:
                    type: integer
                    description: The month, 1 to 12.
                  day:
                    type: integer
                    description: The day of the month.
              authors:
                type: array
                description: Credited co-authors.
                items:
                  type: object
                  properties:
                    fullName:
                      type: string
                      description: >-
                        The contributor name. Omitted when a credited member
                        profile could not be resolved - never an empty string.
                    publicIdentifier:
                      type: string
                      description: >-
                        Public identifier (slug), when the contributor is a
                        member.
                    profileUrn:
                      type: string
                      description: >-
                        Profile URN, usable directly as profileUrlOrUrn on this
                        endpoint.
                    url:
                      type: string
                      description: Public profile URL.
                    headline:
                      type: string
                      description: Headline at the time of the fetch.
              publicationUrn:
                type: string
                description: URN of this publication entry.
        projects:
          type: array
          description: Projects listed on the profile, in display order.
          items:
            type: object
            properties:
              title:
                type: string
                description: Project title.
              description:
                type: string
                description: The member own description. Omitted when blank.
              url:
                type: string
                description: Project link.
              dateRange:
                type: string
                description: >-
                  Formatted range, e.g. "Apr 2018 - Mar 2019". Empty string when
                  the member gave no dates.
              timePeriod:
                type: object
                description: Structured start/end dates.
                properties:
                  startDate:
                    type: object
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it started.
                  endDate:
                    type: object
                    properties:
                      year:
                        type: integer
                        description: The year.
                      month:
                        type: integer
                        description: The month, 1 to 12.
                    description: When it ended; `null` while it lasts.
              contributors:
                type: array
                description: Credited collaborators.
                items:
                  type: object
                  properties:
                    fullName:
                      type: string
                      description: >-
                        The contributor name. Omitted when a credited member
                        profile could not be resolved - never an empty string.
                    publicIdentifier:
                      type: string
                      description: >-
                        Public identifier (slug), when the contributor is a
                        member.
                    profileUrn:
                      type: string
                      description: >-
                        Profile URN, usable directly as profileUrlOrUrn on this
                        endpoint.
                    url:
                      type: string
                      description: Public profile URL.
                    headline:
                      type: string
                      description: Headline at the time of the fetch.
              positionUrn:
                type: string
                description: >-
                  Set when the project is attached to a role. Joins to
                  experiences[].positionUrn.
              educationUrn:
                type: string
                description: >-
                  Set when the project is attached to a school. Joins to
                  educations[].educationUrn.
              projectUrn:
                type: string
                description: URN of this project entry.
        patents:
          type: array
          description: Patents listed on the profile, in display order.
          items:
            type: object
            properties:
              title:
                type: string
                description: Patent title.
              description:
                type: string
                description: The member own description. Omitted when blank.
              url:
                type: string
                description: Link to the patent record.
              issuer:
                type: string
                description: >-
                  Patent office, as the member typed it (e.g. "us"). Free text,
                  not a controlled vocabulary.
              patentNumber:
                type: string
                description: Patent number as entered.
              applicationNumber:
                type: string
                description: Application number as entered.
              pending:
                type: boolean
                description: >-
                  Whether the patent is still an application rather than
                  granted. Always present.
              issuedDate:
                type: string
                description: When granted, e.g. Jan 2017. Omitted while pending.
              filedDate:
                type: string
                description: When filed, e.g. Dec 2024.
              issuedOn:
                type: object
                description: issuedDate structured.
                properties:
                  year:
                    type: integer
                    description: The year.
                  month:
                    type: integer
                    description: The month, 1 to 12.
                  day:
                    type: integer
                    description: The day of the month.
              filedOn:
                type: object
                description: filedDate structured.
                properties:
                  year:
                    type: integer
                    description: The year.
                  month:
                    type: integer
                    description: The month, 1 to 12.
                  day:
                    type: integer
                    description: The day of the month.
              inventors:
                type: array
                description: Credited inventors.
                items:
                  type: object
                  properties:
                    fullName:
                      type: string
                      description: >-
                        The contributor name. Omitted when a credited member
                        profile could not be resolved - never an empty string.
                    publicIdentifier:
                      type: string
                      description: >-
                        Public identifier (slug), when the contributor is a
                        member.
                    profileUrn:
                      type: string
                      description: >-
                        Profile URN, usable directly as profileUrlOrUrn on this
                        endpoint.
                    url:
                      type: string
                      description: Public profile URL.
                    headline:
                      type: string
                      description: Headline at the time of the fetch.
              patentUrn:
                type: string
                description: URN of this patent entry.
        honors:
          type: array
          description: Honors and awards listed on the profile, in display order.
          items:
            type: object
            properties:
              title:
                type: string
                description: Award title.
              issuer:
                type: string
                description: Who granted it, as free text.
              description:
                type: string
                description: The member own description. Omitted when blank.
              issuedDate:
                type: string
                description: >-
                  When it was awarded, e.g. Oct 2018. A single date - an award
                  has no end.
              positionUrn:
                type: string
                description: Joins to experiences[].positionUrn when attached to a role.
              educationUrn:
                type: string
                description: Joins to educations[].educationUrn when attached to a school.
              honorUrn:
                type: string
                description: URN of this award entry.
        organizations:
          type: array
          description: Organizations the member belongs to, in display order.
          items:
            type: object
            properties:
              name:
                type: string
                description: Organization name.
              positionHeld:
                type: string
                description: The role the member held there, e.g. "Membership Chairperson".
              description:
                type: string
                description: The member own description. Omitted when blank.
              dateRange:
                type: string
                description: >-
                  Formatted range, e.g. "2015 - Jun 2016". Empty string when no
                  dates were given.
              timePeriod:
                type: object
                description: Structured start/end dates.
                properties:
                  startDate:
                    type: object
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it started.
                  endDate:
                    type:
                      - object
                      - 'null'
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it ended; `null` while it lasts.
              positionUrn:
                type: string
                description: Joins to experiences[].positionUrn when attached to a role.
              educationUrn:
                type: string
                description: Joins to educations[].educationUrn when attached to a school.
              organizationUrn:
                type: string
                description: URN of this entry.
        courses:
          type: array
          description: Courses listed on the profile, in display order.
          items:
            type: object
            properties:
              name:
                type: string
                description: Course name.
              number:
                type: string
                description: Course code as entered, e.g. "Fin335". Omitted when blank.
              positionUrn:
                type: string
                description: Joins to experiences[].positionUrn when attached to a role.
              educationUrn:
                type: string
                description: Joins to educations[].educationUrn when attached to a school.
              courseUrn:
                type: string
                description: URN of this entry.
        volunteerExperiences:
          type: array
          description: >-
            Volunteering ROLES: what the member did and for whom, in display
            order. Distinct from volunteerCauses, which is only the list of
            causes they say they care about.
          items:
            type: object
            properties:
              role:
                type: string
                description: What the member did, e.g. "Pianist", "Instructor".
              name:
                type: string
                description: >-
                  Organization name, following the same convention as
                  experiences[].name.
              cause:
                type: string
                description: >-
                  The cause this role served, as a stable identifier, e.g.
                  "EDUCATION". Omitted when not set.
              description:
                type: string
                description: The member own description. Omitted when blank.
              dateRange:
                type: string
                description: >-
                  Formatted range, e.g. "Mar 2014 - Present". Empty string when
                  no dates were given.
              timePeriod:
                type: object
                description: Structured start/end dates.
                properties:
                  startDate:
                    type: object
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it started.
                  endDate:
                    type:
                      - object
                      - 'null'
                    properties:
                      month:
                        type: integer
                        description: The month, 1 to 12.
                      year:
                        type: integer
                        description: The year.
                    description: When it ended; `null` while it lasts.
              company:
                type: object
                description: >-
                  The organization page, when it has one - same shape as
                  experiences[].company, so companyId can be passed straight to
                  the company endpoint.
                properties:
                  url:
                    type: string
                    description: Organization page URL.
                  name:
                    type: string
                    description: Organization name.
                  logo:
                    type: string
                    description: Logo image URL.
                  companyId:
                    type: string
                    description: Numeric company id.
                  urn:
                    type: string
                    description: Full company URN.
              volunteerExperienceUrn:
                type: string
                description: URN of this entry.
        partial:
          type: object
          description: >-
            Present ONLY when part of the response is knowingly incomplete; its
            absence means nothing was dropped. A profile is assembled from
            several upstream reads, and when one cannot be completed the
            affected array is shorter than the member real data - previously
            indistinguishable from a genuinely short list.
          properties:
            sections:
              type: array
              items:
                type: string
              description: >-
                Names of the response fields that may be short or missing, e.g.
                ["experiences"]. Possible values: an array that came back
                shorter than the member real list (experiences, educations,
                skills, certifications, languages, testScores, publications,
                projects, patents, honors, organizations, courses,
                volunteerExperiences); a best-effort field that could not be
                fetched, or only in part, on this call (recommendations and
                recommendationsGiven: absent or shorter than the member real
                list; joinDate, birthDate, websites and openProfile: absent;
                joinDate, birthDate and websites come from the same read and are
                listed together; when birthDate is listed it could not be read
                on this call, otherwise the member's birthday was not visible to
                us); and with fullProfile=true only, relatedProfiles (the extra
                page could not be read) and workplaceType (some or all roles
                could not be checked for one; it is a field of each experience,
                not a top-level one), and verifications (the profile-details
                panel could not be read).
            totals:
              type: object
              description: >-
                How large the source says each affected section really is, when
                it reports a size. Keyed by the same names, except
                experienceGroups - which counts STINTS, because that is the unit
                the source reports. A stint is one continuous period at one
                employer, so this is neither a count of roles nor a count of
                distinct employers: a member who left an employer and came back
                counts it twice (see experiences[].positionGroupUrn).
              additionalProperties:
                type: integer
          additionalProperties: false
        recommendationsGiven:
          type: array
          description: >-
            Recommendations the member WROTE for other people. Best-effort,
            exactly like `recommendations`: an empty array means they wrote
            none, while an ABSENT key means the fetch failed and `partial` will
            say so. Note the named person here is the RECIPIENT, whereas in
            `recommendations` it is the author.
          items:
            type: object
            properties:
              description:
                type: string
                description: The recommendation text.
              caption:
                type: string
                description: The recipient's headline at the time of the fetch.
              recipientFullname:
                type: string
                description: Full name of the person who was recommended.
              recipientUrl:
                type: string
                description: The recipient's public profile page URL.
              createdAt:
                type: string
                format: date-time
                description: >-
                  When the recommendation was written, ISO 8601. Omitted when
                  the source carries no timestamp.
              lastModifiedAt:
                type: string
                format: date-time
                description: >-
                  When it was last edited, ISO 8601. Equal to createdAt when it
                  was never edited.
        datacircle_meta:
          $ref: '#/components/schemas/DatacircleMeta'
      description: >-
        Fetchin's answer: the profile object as Fetchin sends it, plus
        `datacircle_meta`.
      required:
        - datacircle_meta
    FetchinError:
      type: object
      required:
        - error
        - code
        - datacircle_meta
      properties:
        error:
          type: string
          description: >-
            Human-readable description of what went wrong. For display/logging;
            do not branch on this string.
        code:
          type: string
          enum:
            - MISSING_PARAMETER
            - INVALID_PARAMETER
            - INVALID_URN
            - UNAUTHENTICATED
            - INVALID_API_KEY
            - FORBIDDEN
            - NOT_FOUND
            - PROFILE_NOT_FOUND
            - POST_NOT_FOUND
            - COMPANY_NOT_FOUND
            - ENDPOINT_REMOVED
            - RATE_LIMITED
            - QUOTA_EXHAUSTED
            - INTERNAL_ERROR
            - UPSTREAM_ERROR
            - SERVICE_UNAVAILABLE
            - UPSTREAM_TIMEOUT
          description: >-
            Stable, machine-readable error code. Branch your integration on this
            value, not on the HTTP status alone or the message text.
        datacircle_meta:
          $ref: '#/components/schemas/DatacircleMeta'
      additionalProperties: false
      description: >-
        Fetchin's own error, passed on with its status, plus `datacircle_meta`;
        `PROFILE_NOT_FOUND` (`404`) is billed, as Fetchin bills it, every other
        code is free.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: What went wrong, in plain words.
    DatacircleMeta:
      type: object
      description: Datacircle's only addition to the provider's answer
      required:
        - provider
        - cost_usd
        - balance_usd
      properties:
        provider:
          type: string
          enum:
            - up2data
            - harvestapi
            - fetchin
          description: which provider answered
        cost_usd:
          type: number
          description: 'what this call cost, in dollars: the provider''s price, no markup'
        balance_usd:
          type: number
          description: >-
            your balance after this call, in dollars (`balance_usd` in `GET
            /balance/`)
      additionalProperties: false
  securitySchemes:
    token:
      type: http
      scheme: bearer
      description: >-
        Your API key: `Authorization: Bearer <your API key>`. `Authorization:
        Token <your API key>` works too.

````

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