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

> ## Agent Instructions
> Base URL: https://api.social-api.ai/v1. Send your API key in the Authorization header: Authorization: Bearer <your API key>.
> Every error response from /v1 is JSON: { "error": { "code", "message", "meta" (optional) }, "request_id" }. Branch on error.code; use error.message only for logs.
> A 429 response carries a Retry-After header, in seconds, when the limit has a known wait. Authenticated responses can carry X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset for the per-minute request budget your SocialAPI account shares across every API key (see /guides/rate-limits).
> Paginated list endpoints return next_cursor, at the top level or inside pagination (see /guides/pagination). Pass it as the cursor query parameter to get the next page. An absent or empty next_cursor means you have the last page.
> Treat every ID as an opaque string: do not parse it or assume a format.
> Support differs by platform and by operation. Check /platforms/overview before assuming an operation works on a platform. An unsupported operation returns 501 with error.code resource.not_supported.

# Get an Instagram messaging participant's profile

> Returns the profile Instagram exposes for a messaging participant, including the follow relationship in both directions (is_user_follow_business, is_business_follow_user). Works for an Instagram account connected either directly or through a linked Facebook Page. The follow relationship is current as of the call; do not cache it, since it changes the moment someone unfollows. Instagram only returns this data for users who have consented by messaging your account or tapping an icebreaker or the persistent menu; for anyone else this returns 403 platform.instagram.230, which means Instagram will not disclose the relationship and is NOT the same as "does not follow". Branch on that error rather than treating it as a negative. Fields name and profile_pic are absent for users who have set neither; the follow fields are still returned. profile_pic URLs expire after a few days, so do not store them.



## OpenAPI

````yaml /api-reference/openapi.json get /platforms/instagram/accounts/{id}/participants/{participantId}/profile
openapi: 3.0.0
info:
  description: >-
    Unified social media inbox API. Read and respond to comments, DMs, reviews,
    and mentions across Instagram, Facebook, Threads, Google Business Profile,
    TikTok, LinkedIn, and YouTube through a single REST API. X/Twitter and
    Trustpilot coming soon.
  title: SocialAPI.AI
  contact:
    name: SocialAPI.AI Support
    email: support@social-api.ai
  license:
    name: MIT
  version: '1.0'
servers:
  - url: https://api.social-api.ai/v1
security: []
paths:
  /platforms/instagram/accounts/{id}/participants/{participantId}/profile:
    get:
      tags:
        - Instagram
      summary: Get an Instagram messaging participant's profile
      description: >-
        Returns the profile Instagram exposes for a messaging participant,
        including the follow relationship in both directions
        (is_user_follow_business, is_business_follow_user). Works for an
        Instagram account connected either directly or through a linked Facebook
        Page. The follow relationship is current as of the call; do not cache
        it, since it changes the moment someone unfollows. Instagram only
        returns this data for users who have consented by messaging your account
        or tapping an icebreaker or the persistent menu; for anyone else this
        returns 403 platform.instagram.230, which means Instagram will not
        disclose the relationship and is NOT the same as "does not follow".
        Branch on that error rather than treating it as a negative. Fields name
        and profile_pic are absent for users who have set neither; the follow
        fields are still returned. profile_pic URLs expire after a few days, so
        do not store them.
      parameters:
        - example: acc_01HZ9X3Q4R5M6N7P8V2K0W1J
          description: Connected account ID
          name: id
          in: path
          required: true
          schema:
            type: string
        - example: '2287522528728101'
          description: >-
            Instagram-scoped user ID (IGSID) of the participant, as returned in
            conversation payloads
          name: participantId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Participant profile
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/api_endpoints.InstagramParticipantProfileResponse
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '403':
          description: >-
            User consent required (platform.instagram.230), or platform access
            not permitted for your plan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '404':
          description: Account or participant not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '501':
          description: Platform does not support participant profiles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
        '502':
          description: Upstream Instagram API error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_endpoints.ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    api_endpoints.InstagramParticipantProfileResponse:
      type: object
      properties:
        follower_count:
          type: integer
        id:
          type: string
        is_business_follow_user:
          type: boolean
        is_user_follow_business:
          type: boolean
        is_verified_user:
          type: boolean
        name:
          type: string
        profile_pic:
          description: >-
            ProfilePic URLs expire after a few days; never persist one as
            durable.
          type: string
        username:
          type: string
    api_endpoints.ErrorResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/api_endpoints.ErrorBody'
        request_id:
          description: >-
            RequestID matches the X-Request-ID response header. Include it when
            contacting support.
          type: string
          example: 01HZ9X3Q4R5M6N7P8V2K0W1J
    api_endpoints.ErrorBody:
      type: object
      properties:
        code:
          type: string
          example: resource.not_found
        message:
          type: string
          example: Account not found
        meta:
          type: object
          additionalProperties: {}
  securitySchemes:
    BearerAuth:
      description: >-
        Prefix your API key with "Bearer ". Example: `Authorization: Bearer
        sapi_key_...`
      type: apiKey
      name: Authorization
      in: header

````

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