openapi: 3.0.0
paths:
  /health:
    get:
      operationId: AppController_getHealth
      summary: Health check
      description: >-
        The health endpoint provides a real-time status of the API, indicating
        whether the system is Healthy, Degraded, or Unhealthy based on the
        performance of recent requests.</br><b>Note:</b> The service health
        calculation includes all Discovery endpoints but excludes Raw Data
        endpoints.
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
      tags:
        - System
  /instagram/search:
    post:
      operationId: InstagramController_search
      summary: Search Influencers
      description: "<p>Get a list of influencers that match your filters.\n\t\t\t</br>A successful request costs <b>0.01 credits per search result</b>, with a typical request totaling <b>0.15 credits</b> for up to <b>15 results per page</b></p>\n\t\t\t<u>Filtering and adding match data:</u><details><summary>Expand to see additional information<br></summary></br>\n\t\t\tWhen filtering by one or more fields, it is advisable to include these same fields in the sorting process. This ensures that you can retrieve the match information associated with each result.\n\t\t\tBy adding the filtering fields to the sorting criteria, you gain access to detailed match info for every result obtained.\n\t\t\t</br></br><strong>Example:</strong> If you want to filter by age you would also sort the results by age:\n\t\t\t</br><code>\n\t\t\t{\n\t\t\t\t</br>&nbsp; \"sort\": { \"direction\": \"desc\", \"field\": \"audience_age\", \"sortedValue\": \"18-24\", \"value\": \"18-24\" },\n\t\t\t\t</br>&nbsp; \"page\": 0,\n\t\t\t\t</br>&nbsp; \"filter\": { \"audience\": { \"age\": [{\"id\": \"18-24\", \"weight\": 0.3}] } }\n\t\t\t</br>}\n\t\t\t</code>\n\t\t\t</br></br>You will retrieve match info that will provide details on how well each result matches the filtering criteria. The match info should include two fields: </br>\n\t\t\t&nbsp;-<code>code</code>: represents the filtering field that corresponds to the result </br>\n\t\t\t&nbsp;-<code>percentage</code>: quantifies the degree of similarity or relevance </details>\n\t\t\t</br><u>Audience filters support weights:</u><details><summary>Expand to see additional information<br></summary></br>Weights allow you to set a threshold for the chosen filter. If you remove the weight - we will apply the default weight per filter.\n\t\t\t</br>Using multiple filters simultaneously results in a logical <code>AND</code>, while applying multiple objects into an array (works with interests, location and age) are applied as a logical <code>OR</code>\n\t\t\t</br></br><strong>Example:</strong> If you want at least <code>30%</code> of the audience to be at the age of <code>18-24</code>, you can use the weight property of <code>0.3</code>. We recommend starting with low weight and gradually increasing the percentage. You can find the default thresholds in the notes of each filter.</details>\n\t\t\t</br></br><b>Expand the filter object below to see all available options.</b>\n\t\t\t"
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InstagramSearchBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/profile/{userId}/report:
    get:
      operationId: InstagramController_report
      summary: Get Influencer Report
      description: "<strong>To protect our enterprise customers, influencer contact details are not enabled by default.</strong> [Contact us](mailto:hello@modash.io) to unlock them for free. </br> \t\t\tEvery successful request costs <b>1 credit</b>."
      parameters:
        - name: userId
          required: true
          in: path
          description: User's Instagram handle or user ID from Instagram
          schema:
            type: string
        - name: calculationMethod
          required: false
          in: query
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          schema:
            default: median
            enum:
              - median
              - average
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstagramReport'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/collaborations/influencer:
    get:
      operationId: InstagramController_brandTimelineInfluencer
      summary: Get Influencer Collaborations
      description: "<p>Get Brand collaborations for Influencer. This will provide posts for any platform.\n\t\t\t</br>A successful request costs <b>1 credit</b>, for up to <b>30 results per page</b></p>\n\t\t\t<div class=\"box warning\">\n\tWe're currently rebuilding the Collaborations functionality based on user feedback. An improved version is already in development and will soon replace the current implementation. If you're considering using the collaboration endpoints, please <a href=\"https://calendly.com/modash/modash-api-introduction-martynas\" target=\"_blank\" rel=\"nofollow noindex\">contact us</a> for more information.\n</div>"
      deprecated: true
      parameters:
        - name: influencerId
          required: true
          in: path
          description: Influencer's Instagram user ID from Instagram
          schema:
            type: string
        - name: after
          required: false
          in: path
          description: Cursor for pagination
          schema:
            type: string
        - name: groupedBrands
          required: false
          in: path
          description: Group brands by domain
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationsInfluencerResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/collaborations/brand:
    get:
      operationId: InstagramController_brandTimelineBrand
      summary: Get Brand Collaborations
      description: "<p>Get Brand collaborations for Brand. This will provide posts for any platform.\n\t\t\t</br>A successful request costs <b>1 credit</b>, for up to <b>30 results per page</b></p>\n\t\t\t<div class=\"box warning\">\n\tWe're currently rebuilding the Collaborations functionality based on user feedback. An improved version is already in development and will soon replace the current implementation. If you're considering using the collaboration endpoints, please <a href=\"https://calendly.com/modash/modash-api-introduction-martynas\" target=\"_blank\" rel=\"nofollow noindex\">contact us</a> for more information.\n</div>"
      deprecated: true
      parameters:
        - name: brandId
          required: true
          in: path
          description: Brand's Instagram user ID from Instagram
          schema:
            type: string
        - name: after
          required: false
          in: path
          description: Cursor for pagination
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationsInfluencerResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/reports/audience/overlap:
    post:
      operationId: InstagramController_influencersAudienceOverlap
      summary: Audience overlap reports
      description: "Check audience (followers) overlap for several influencers.\n\t\t</br>A successful request costs <b>1 credit</b>."
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudiencerOverlapBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudienceOverlapResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/brands:
    get:
      operationId: InstagramController_brands
      summary: List Partnerships (brands)
      description: >-
        Search the list of Partnerships (brands) that have worked with the
        influencer.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListBrandsResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/interests:
    get:
      operationId: InstagramController_interests
      summary: List Interests
      description: Search the list of interests
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListInterestsResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/topics:
    get:
      operationId: InstagramController_topics
      summary: List Topics
      description: Search for topics
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/languages:
    get:
      operationId: InstagramController_languages
      summary: List Languages
      description: Search the list of languages for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLanguagesResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/locations:
    get:
      operationId: InstagramController_locations
      summary: List Locations
      description: Search the list of locations for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLocationsResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/users:
    get:
      operationId: InstagramController_users
      summary: List Users
      description: Search the list of influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUsersResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/hashtags:
    get:
      operationId: InstagramController_hashtags
      summary: List Hashtags
      description: Search for hashtags
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - Instagram
      security:
        - accessToken: []
  /instagram/performance-data:
    get:
      operationId: InstagramController_performanceData
      summary: Get Performance Data
      description: "Returns the performance data of an Instagram account for the last 6, 12 and 30 posts & reels. </br> \t\t\tThe data is computed on demand, so if it is not available from the first request, a second call should be performed after ~5 minute. </br>\t\t\tEvery successful request costs <b>0.25 credits</b>. If the response code is `retry_later` or there is an error on our side you will not be charged."
      parameters:
        - name: url
          required: true
          in: query
          description: Username (@handle) or user id
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  posts:
                    type: object
                    properties:
                      total:
                        type: number
                      posts_with_hidden_likes:
                        type: number
                      likes:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      comments:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      views:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      engagement_rate:
                        type: array
                        items:
                          type: object
                          properties:
                            numberOfItems:
                              type: number
                            value:
                              type: number
                          required:
                            - numberOfItems
                            - value
                      posting_statistics:
                        type: object
                        properties:
                          weekDayHour:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                          daily:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                        required:
                          - weekDayHour
                          - daily
                    required:
                      - total
                      - posts_with_hidden_likes
                      - likes
                      - comments
                      - views
                      - engagement_rate
                      - posting_statistics
                  reels:
                    type: object
                    properties:
                      total:
                        type: number
                      reels_with_hidden_likes:
                        type: number
                      likes:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      comments:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      views:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      engagement_rate:
                        type: array
                        items:
                          type: object
                          properties:
                            numberOfItems:
                              type: number
                            value:
                              type: number
                          required:
                            - numberOfItems
                            - value
                      posting_statistics:
                        type: object
                        properties:
                          weekDayHour:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                          daily:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                        required:
                          - weekDayHour
                          - daily
                    required:
                      - total
                      - reels_with_hidden_likes
                      - likes
                      - comments
                      - views
                      - engagement_rate
                      - posting_statistics
                required:
                  - posts
                  - reels
      tags:
        - Instagram
      security:
        - accessToken: []
  /tiktok/search:
    post:
      operationId: TikTokController_search
      summary: Search Influencers
      description: "<p>Get a list of influencers that match your filters.\n\t\t\t</br>A successful request costs <b>0.01 credits per search result</b>, with a typical request totaling <b>0.15 credits</b> for up to <b>15 results per page</b></p>\n\t\t\t<u>Filtering and adding match data:</u><details><summary>Expand to see additional information<br></summary></br>\n\t\t\tWhen filtering by one or more fields, it is advisable to include these same fields in the sorting process. This ensures that you can retrieve the match information associated with each result.\n\t\t\tBy adding the filtering fields to the sorting criteria, you gain access to detailed match info for every result obtained.\n\t\t\t</br></br><strong>Example:</strong> If you want to filter by age you would also sort the results by age:\n\t\t\t</br><code>\n\t\t\t{\n\t\t\t\t</br>&nbsp; \"sort\": { \"direction\": \"desc\", \"field\": \"audience_age\", \"sortedValue\": \"18-24\", \"value\": \"18-24\" },\n\t\t\t\t</br>&nbsp; \"page\": 0,\n\t\t\t\t</br>&nbsp; \"filter\": { \"audience\": { \"age\": [{\"id\": \"18-24\", \"weight\": 0.3}] } }\n\t\t\t</br>}\n\t\t\t</code>\n\t\t\t</br></br>You will retrieve match info that will provide details on how well each result matches the filtering criteria. The match info should include two fields: </br>\n\t\t\t&nbsp;-<code>code</code>: represents the filtering field that corresponds to the result </br>\n\t\t\t&nbsp;-<code>percentage</code>: quantifies the degree of similarity or relevance </details>\n\t\t\t</br><u>Audience filters support weights:</u><details><summary>Expand to see additional information<br></summary></br>Weights allow you to set a threshold for the chosen filter. If you remove the weight - we will apply the default weight per filter.\n\t\t\t</br>Using multiple filters simultaneously results in a logical <code>AND</code>, while applying multiple objects into an array (works with location and age) are applied as a logical <code>OR</code>\n\t\t\t</br></br><strong>Example:</strong> If you want at least <code>30%</code> of the audience to be at the age of <code>18-24</code>, you can use the weight property of <code>0.3</code>. We recommend starting with low weight and gradually increasing the percentage. You can find the default thresholds in the notes of each filter.</details>\n\t\t\t</br></br><b>Expand the filter object below to see all available options.</b>\n\t\t\t"
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TikTokSearchBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/profile/{userId}/report:
    get:
      operationId: TikTokController_report
      summary: Get Influencer report
      description: "<strong>Influencer contact details are not enabled by default.</strong> [Contact us](mailto:hello@modash.io) to unlock this data for free. </br> \t\t\t\tEvery successful request costs <b>1 credit</b>."
      parameters:
        - name: userId
          required: true
          in: path
          description: User's TikTok handle or user ID from TikTok
          schema:
            type: string
        - name: calculationMethod
          required: false
          in: query
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          schema:
            default: median
            enum:
              - median
              - average
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TikTokReport'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/collaborations/influencer:
    get:
      operationId: TikTokController_brandTimelineInfluencer
      summary: Get Influencer Collaborations
      description: "<p>Get Brand collaborations for Influencer. This will provide posts for any platform.\n\t\t\t</br>A successful request costs <b>1 credit</b>, for up to <b>30 results per page</b></p>\n\t\t\t<div class=\"box warning\">\n\tWe're currently rebuilding the Collaborations functionality based on user feedback. An improved version is already in development and will soon replace the current implementation. If you're considering using the collaboration endpoints, please <a href=\"https://calendly.com/modash/modash-api-introduction-martynas\" target=\"_blank\" rel=\"nofollow noindex\">contact us</a> for more information.\n</div>"
      deprecated: true
      parameters:
        - name: influencerId
          required: true
          in: path
          description: Influencer's Tiktok secUid from Tiktok
          schema:
            type: string
        - name: after
          required: false
          in: path
          description: Cursor for pagination
          schema:
            type: string
        - name: groupedBrands
          required: false
          in: path
          description: Group brands by domain
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationsInfluencerResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/collaborations/brand:
    get:
      operationId: TikTokController_brandTimelineBrand
      summary: Get Brand Collaborations
      description: "<p>Get Brand collaborations for Brand. This will provide posts for any platform.\n\t\t\t</br>A successful request costs <b>1 credit</b>, for up to <b>30 results per page</b></p>\n\t\t\t<div class=\"box warning\">\n\tWe're currently rebuilding the Collaborations functionality based on user feedback. An improved version is already in development and will soon replace the current implementation. If you're considering using the collaboration endpoints, please <a href=\"https://calendly.com/modash/modash-api-introduction-martynas\" target=\"_blank\" rel=\"nofollow noindex\">contact us</a> for more information.\n</div>"
      deprecated: true
      parameters:
        - name: brandId
          required: true
          in: path
          description: Brand's Tiktok secUid from Tiktok
          schema:
            type: string
        - name: after
          required: false
          in: path
          description: Cursor for pagination
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationsInfluencerResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/languages:
    get:
      operationId: TikTokController_languages
      summary: List Languages
      description: Search the list of languages for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLanguagesResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/locations:
    get:
      operationId: TikTokController_locations
      summary: List Locations
      description: Search the list of locations for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLocationsResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/users:
    get:
      operationId: TikTokController_users
      summary: List Users
      description: Search the list of influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListUsersResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/topics:
    get:
      operationId: TikTokController_topics
      summary: List Topics
      description: Search for topics
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/hashtags:
    get:
      operationId: TikTokController_hashtags
      summary: List Hashtags
      description: Search for hashtags
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - TikTok
      security:
        - accessToken: []
  /tiktok/performance-data:
    get:
      operationId: TikTokController_performanceData
      summary: Get Performance Data
      description: "Returns the performance data of a TikTok account for the last 6, 12 and 30 posts. </br> \t\t\tThe data is computed on demand, so if it is not available from the first request, a second call should be performed after ~1 minute. </br>\t\t\tEvery successful request costs <b>0.25 credits</b>. If the response code is `retry_later` or there is an error on our side you will not be charged."
      parameters:
        - name: url
          required: true
          in: query
          description: Username (@handle) or user id
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  posts:
                    type: object
                    properties:
                      posts_with_hidden_comments:
                        type: number
                      total:
                        type: number
                      likes:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      comments:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      views:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      engagement_rate:
                        type: array
                        items:
                          type: object
                          properties:
                            numberOfItems:
                              type: number
                            value:
                              type: number
                          required:
                            - numberOfItems
                            - value
                      posting_statistics:
                        type: object
                        properties:
                          weekDayHour:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                          daily:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                        required:
                          - weekDayHour
                          - daily
                    required:
                      - posts_with_hidden_comments
                      - total
                      - likes
                      - comments
                      - views
                      - engagement_rate
                      - posting_statistics
                required:
                  - posts
      tags:
        - TikTok
      security:
        - accessToken: []
  /youtube/search:
    post:
      operationId: YouTubeController_search
      summary: Search Influencers
      description: "<p>Get a list of influencers that match your filters.\n\t\t\t</br>A successful request costs <b>0.01 credits per search result</b>, with a typical request totaling <b>0.15 credits</b> for up to <b>15 results per page</b></p>\n\t\t\t<u>Filtering and adding match data:</u><details><summary>Expand to see additional information<br></summary></br>\n\t\t\tWhen filtering by one or more fields, it is advisable to include these same fields in the sorting process. This ensures that you can retrieve the match information associated with each result.\n\t\t\tBy adding the filtering fields to the sorting criteria, you gain access to detailed match info for every result obtained.\n\t\t\t</br></br><strong>Example:</strong> If you want to filter by age you would also sort the results by age:\n\t\t\t</br><code>\n\t\t\t{\n\t\t\t\t</br>&nbsp; \"sort\": { \"direction\": \"desc\", \"field\": \"audience_age\", \"sortedValue\": \"18-24\", \"value\": \"18-24\" },\n\t\t\t\t</br>&nbsp; \"page\": 0,\n\t\t\t\t</br>&nbsp; \"filter\": { \"audience\": { \"age\": [{\"id\": \"18-24\", \"weight\": 0.3}] } }\n\t\t\t</br>}\n\t\t\t</code>\n\t\t\t</br></br>You will retrieve match info that will provide details on how well each result matches the filtering criteria. The match info should include two fields: </br>\n\t\t\t&nbsp;-<code>code</code>: represents the filtering field that corresponds to the result </br>\n\t\t\t&nbsp;-<code>percentage</code>: quantifies the degree of similarity or relevance </details>\n\t\t\t</br><u>Audience filters support weights:</u><details><summary>Expand to see additional information<br></summary></br>Weights allow you to set a threshold for the chosen filter. If you remove the weight - we will apply the default weight per filter.\n\t\t\t</br>Using multiple filters simultaneously results in a logical <code>AND</code>, while applying multiple objects into an array (works with location and age) are applied as a logical <code>OR</code>\n\t\t\t</br></br><strong>Example:</strong> If you want at least <code>30%</code> of the audience to be at the age of <code>18-24</code>, you can use the weight property of <code>0.3</code>. We recommend starting with low weight and gradually increasing the percentage. You can find the default thresholds in the notes of each filter.</details>\n\t\t\t</br></br><b>Expand the filter object below to see all available options.</b>\n\t\t\t"
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YouTubeSearchBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YoutubeSearchResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/profile/{userId}/report:
    get:
      operationId: YouTubeController_report
      summary: Get Influencer report
      description: "<strong>Influencer contact details are not enabled by default.</strong> [Contact us](mailto:hello@modash.io) to unlock this data for free. </br>\t\t\t\tEvery successful request costs <b>1 credit</b>."
      parameters:
        - name: userId
          required: true
          in: path
          description: User's YouTube handle or user ID from YouTube
          schema:
            type: string
        - name: calculationMethod
          required: false
          in: query
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          schema:
            default: median
            enum:
              - median
              - average
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YouTubeReport'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/collaborations/influencer:
    get:
      operationId: YouTubeController_brandTimelineInfluencer
      summary: Get Influencer Collaborations
      description: "<p>Get Brand collaborations for Influencer. This will provide posts for any platform.\n\t\t\t</br>A successful request costs <b>1 credit</b>, for up to <b>30 results per page</b></p>\n\t\t\t<div class=\"box warning\">\n\tWe're currently rebuilding the Collaborations functionality based on user feedback. An improved version is already in development and will soon replace the current implementation. If you're considering using the collaboration endpoints, please <a href=\"https://calendly.com/modash/modash-api-introduction-martynas\" target=\"_blank\" rel=\"nofollow noindex\">contact us</a> for more information.\n</div>"
      deprecated: true
      parameters:
        - name: influencerId
          required: true
          in: path
          description: Influencer's Youtube channelId from Youtube
          schema:
            type: string
        - name: after
          required: false
          in: path
          description: Cursor for pagination
          schema:
            type: string
        - name: groupedBrands
          required: false
          in: path
          description: Group brands by domain
          schema:
            type: boolean
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationsInfluencerResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/languages:
    get:
      operationId: YouTubeController_languages
      summary: List Languages
      description: Search the list of languages for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLanguagesResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/locations:
    get:
      operationId: YouTubeController_locations
      summary: List Locations
      description: Search the list of locations for Influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListLocationsResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/reports/audience/overlap:
    post:
      operationId: YouTubeController_influencersAudienceOverlap
      summary: Audience overlap reports
      description: "Check audience (followers) overlap for several influencers.\n\t\t</br>A successful request costs <b>1 credit</b>."
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AudiencerOverlapBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AudienceOverlapResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/users:
    get:
      operationId: YouTubeController_users
      summary: List Users
      description: Search the list of influencers.
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YoutubeListUsersResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/topics:
    get:
      operationId: YouTubeController_topics
      summary: List Topics
      description: Search for topics
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/hashtags:
    get:
      operationId: YouTubeController_hashtags
      summary: List Hashtags
      description: Search for hashtags
      parameters:
        - name: limit
          required: false
          in: query
          description: Max items to get
          schema:
            type: number
        - name: query
          required: false
          in: query
          description: String to search by
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HashtagsResponse'
      tags:
        - YouTube
      security:
        - accessToken: []
  /youtube/performance-data:
    get:
      operationId: YouTubeController_performanceData
      summary: Get Performance Data
      description: "Returns the performance data of a YouTube channel for the last 6, 12 and 30 videos & shorts. </br> \t\t\t\tThe data is computed on demand, so if it is not available from the first request, a second call should be performed after ~1 minute. </br>\t\t\t\tEvery successful request costs <b>0.25 credits</b>. If the response code is `retry_later` or there is an error on our side you will not be charged."
      parameters:
        - name: url
          required: true
          in: query
          description: >-
            YouTube url to channel's page, i.e.
            https://www.youtube.com/@{channelName}
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  videos:
                    type: object
                    properties:
                      total:
                        type: number
                      videos_with_turned_off_comments:
                        type: number
                      likes:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      views:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      comments:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      engagement_rate:
                        type: array
                        items:
                          type: object
                          properties:
                            numberOfItems:
                              type: number
                            value:
                              type: number
                          required:
                            - numberOfItems
                            - value
                      posting_statistics:
                        type: object
                        properties:
                          weekDay:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: object
                                    properties:
                                      mon:
                                        type: number
                                      tue:
                                        type: number
                                      wed:
                                        type: number
                                      thu:
                                        type: number
                                      fri:
                                        type: number
                                      sat:
                                        type: number
                                      sun:
                                        type: number
                                    required:
                                      - mon
                                      - tue
                                      - wed
                                      - thu
                                      - fri
                                      - sat
                                      - sun
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                          daily:
                            type: object
                            properties:
                              mean:
                                type: object
                                properties:
                                  numberOfItems:
                                    type: number
                                  value:
                                    type: number
                                required:
                                  - numberOfItems
                                  - value
                            required:
                              - mean
                        required:
                          - weekDay
                          - daily
                    required:
                      - total
                      - videos_with_turned_off_comments
                      - likes
                      - views
                      - comments
                      - engagement_rate
                      - posting_statistics
                  shorts:
                    type: object
                    properties:
                      total:
                        type: number
                      shorts_with_turned_off_comments:
                        type: number
                      likes:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      views:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      comments:
                        type: object
                        properties:
                          mean:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          min:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          max:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                          median:
                            type: array
                            items:
                              type: object
                              properties:
                                numberOfItems:
                                  type: number
                                value:
                                  type: number
                              required:
                                - numberOfItems
                                - value
                        required:
                          - mean
                          - min
                          - max
                          - median
                      engagement_rate:
                        type: array
                        items:
                          type: object
                          properties:
                            numberOfItems:
                              type: number
                            value:
                              type: number
                          required:
                            - numberOfItems
                            - value
                    required:
                      - total
                      - shorts_with_turned_off_comments
                      - likes
                      - views
                      - comments
                      - engagement_rate
                required:
                  - videos
                  - shorts
      tags:
        - YouTube
      security:
        - accessToken: []
  /user/info:
    get:
      operationId: UserController_info
      summary: Get User Account Info
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    description: If there is an error
                    type: boolean
                  user:
                    type: object
                    properties:
                      name:
                        examples: Jane Doe
                        type: string
                      email:
                        examples: janedoe@example.com
                        type: string
                    required:
                      - name
                      - email
                  billing:
                    type: object
                    properties:
                      credits:
                        examples: 500.5
                        type: number
                      rawRequests:
                        example: 4500
                        type: number
                    required:
                      - rawRequests
                  rateLimits:
                    type: object
                    properties:
                      discoveryRatelimit:
                        example: 500
                        type: number
                      rawRatelimit:
                        example: 500
                        type: number
                      rawHourlyRatelimit:
                        type: object
                        properties:
                          instagram:
                            example: 100
                            type: number
                          tiktok:
                            example: 100
                            type: number
                          youtube:
                            example: 100
                            type: number
                        required:
                          - instagram
                          - tiktok
                          - youtube
                    required:
                      - discoveryRatelimit
                      - rawRatelimit
                required:
                  - error
                  - user
                  - billing
                  - rateLimits
      tags:
        - User Account
      security:
        - accessToken: []
  /email-search:
    post:
      operationId: MultiPlatformController_emailSearch
      summary: Search by Email
      description: "For each email provided, identify one or more social media accounts on Instagram, YouTube, or TikTok that have listed this email in their bio or as their contact information.\n\t\t</br>A successful request costs <b>0.02 credits per matched email</b>. To execute this request, the account must have a minimum of 0.02 credits multiplied by the number of provided emails, otherwise a <i>not_enough_credits</i> error will be returned.\n\t\t</br><b>We do not store the email addresses that you send us.</b>"
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmailsSearchBody'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailsSearchResponse'
      tags:
        - ''
      security:
        - accessToken: []
info:
  title: Overview
  description: "Discovery API provides powerful products for different use cases. Let us provide a brief overview:\n\nSearch allows you to build comprehensive search experience to find creators. Use filters, lookalikes and our dictionaries and lists to create stunning user interfaces.\n\nReports provide in depth analytics that include audience demographics, performance metrics, sponsored posts and much more.\n\nOur collaborations products enable you to create overviews of past brand partnerships between creators and brands.\n\nThere is more: Search by Email allows you to lookup which creator accounts are associated with an emails and audience overlap identifies the uniqueness of an audience with ease.\n\n# Testing the API\n\n## Search\n\nYou can test out the [Instagram Search API](#tag/Instagram/paths/~1instagram~1search/post) for free by leaving the filter object empty. Your request body should look similar to this.\n\n```\n> POST https://api.modash.io/v1/instagram/search\n{\n\t\"sort\": {\n\t\t\"field\": \"followers\",\n\t\t\"direction\": \"desc\"\n\t},\n\t\"filter\": {\n\t}\n}\n```\n\n## Reports\n\nTo test out the [Instagram Reports API](#tag/Instagram/paths/~1instagram~1profile~1{userId}~1report/get) for free you can set the `userId` as `instagram`.\nYour request should look like this.\n\n```\n> GET https://api.modash.io/v1/instagram/profile/instagram/report\n```\n\nWe recommend always using the report route and caching the result if necessary. Everything that is included in the overview is also in a report.\n\n# Pagination\n\nWhen using the Search API, each response has in total 15 influencers. If you wish to query more influencers for the same query you need to increment the `page` parameter in the request body.\n\nBy default the `page` parameter is set to `0`.\n\n# Dictionaries\n\n## Interests, Locations and brands\n\nWhen finding influencers by interests, locations or brands you need to search by their respective ID. To list all interests, locations or brands you need to call the `https://api.modash.io/v1/instagram/interests`, `https://api.modash.io/v1/instagram/locations`, `https://api.modash.io/v1/instagram/brands` route.\n\nYou can specify the list of interests, locations or brands returned by using the `query` parameter and limit the amount of list items returned by using the `limit` parameter.\n\nBy default the `limit` parameter is set to `20`. You can query all list items by setting the `limit` parameter to `1000000`.\n\n## Languages\n\nSimilar to interests, locations and brands, you first need to find the correct language code to search by. This can be done by calling the `https://api.modash.io/v1/instagram/languages` route.\n"
  version: null
  contact:
    name: API Support
    url: https://www.modash.io
    email: hello@modash.io
  termsOfService: https://www.modash.io/legal/terms-of-service
tags:
  - name: ''
    description: null
  - name: YouTube
    description: API for receiving data about YouTube influencers
  - name: TikTok
    description: API for receiving data about TikTok influencers
  - name: Instagram
    description: API for receiving data about Instagram influencers
  - name: User Account
    description: API for Modash user account management
  - name: System
    description: System endpoints for service health and monitoring
servers:
  - url: https://api.modash.io/v1
components:
  securitySchemes:
    accessToken:
      scheme: bearer
      bearerFormat: token
      description: 'Please enter token in following format: Bearer \<APIToken\>'
      name: Authorization
      type: http
      in: header
  schemas:
    HealthDetail:
      type: object
      properties:
        endpoint:
          type: string
          description: Endpoint path
        status:
          type: string
          description: Endpoint status
      required:
        - endpoint
        - status
    Health:
      type: object
      properties:
        status:
          type: string
          description: >-
            API health status:<br/><ul><li>`healthy` indicates that the system
            is operating normally.</li><li>`degraded` indicates a moderate level
            of failures or slow responses in one or more
            endpoints.</li><li>`unhealthy` indicates a high level of failures or
            significant performance issues in one or more endpoints.</li></ul>
          example: healthy
          enum:
            - healthy
            - degraded
            - unhealthy
        details:
          description: Health details by endpoint
          example:
            - endpoint: email-search
              status: healthy
          type: array
          items:
            $ref: '#/components/schemas/HealthDetail'
      required:
        - status
        - details
    InstagramSort:
      type: object
      properties:
        field:
          type: string
          example: followers
          default: followers
          description: "Note: The following sort options are available only when the corresponding filter is applied: `keywords` `audienceGeo` `audienceLang` `audienceGender` `audienceAge` `audienceInterest` `followersGrowth`. <br />\n\t\tSorting field in which order you want to get the results."
          enum:
            - engagements
            - followers
            - engagementRate
            - keywords
            - audienceGeo
            - audienceLang
            - audienceGender
            - audienceAge
            - relevance
            - followersGrowth
            - audienceInterest
            - reelsPlays
        value:
          type: number
          example: 123
          description: >-
            Only required for ```audienceGeo``` and ```audienceInterest```
            sorting.
        direction:
          type: string
          example: desc
          default: desc
          description: Sorting direction
          enum:
            - asc
            - desc
      required:
        - field
    FollowersCount:
      type: object
      properties:
        min:
          type: number
          example: 20000
          description: Minimum follower count.
        max:
          type: number
          example: 70000
          description: Maximum follower count.
    InfluencerAgeRange:
      type: object
      properties:
        min:
          type: number
          example: 18
          description: Minimum influencer age.
          enum:
            - 18
            - 25
            - 35
            - 45
            - 65
        max:
          type: number
          example: 25
          description: Maximum influencer age.
          enum:
            - 18
            - 25
            - 35
            - 45
            - 65
    GrowthFilter:
      type: object
      properties:
        interval:
          type: string
          description: Specifies the interval of time in which growth occurred.
          enum:
            - i1month
            - i2months
            - i3months
            - i4months
            - i5months
            - i6months
          example: i1month
        value:
          type: number
          description: Weight of growth rate.
          example: 0.4
        operator:
          type: string
          description: Operator used for comparison.
          example: gt
          enum:
            - gte
            - gt
            - lt
            - lte
      required:
        - interval
        - operator
    ContactFilter:
      type: object
      properties:
        contactType:
          type: string
          example: email
          enum:
            - bbm
            - email
            - facebook
            - instagram
            - itunes
            - kakao
            - kik
            - lineid
            - linktree
            - pinterest
            - sarahah
            - sayat
            - skype
            - snapchat
            - tiktok
            - tumblr
            - twitchtv
            - twitter
            - vk
            - wechat
            - youtube
          description: Specifies the contact channels of an influencer.
        filterAction:
          type: string
          example: must
          enum:
            - must
            - should
            - not
          default: must
          description: >-
            Defines condition enforced by the filter - "must" include, "should"
            include, or must "not" include.
      required:
        - contactType
    TextTag:
      type: object
      properties:
        type:
          type: string
          enum:
            - hashtag
            - mention
          description: The type of the tag.
        value:
          type: string
          description: The hashtag or mention without `@` or `#` in front of it.
      required:
        - type
        - value
    ReelsPlaysCount:
      type: object
      properties:
        min:
          type: number
          example: 20000
          description: Minimum reels plays count.
        max:
          type: number
          example: 50000000
          description: Maximum reels plays count.
    EngagementsCount:
      type: object
      properties:
        min:
          type: number
          example: 5000
          description: Minimum engagements count (this value will be rounded).
        max:
          type: number
          example: 10000
          description: Maximum engagements count (this value will be rounded).
    InstagramFilterOperations:
      type: object
      properties:
        operator:
          type: string
          description: >-
            Logical operations used to combine filters.<br><i>Note: To use the
            `or` operator, you must apply it to at least two filters.</i>
          enum:
            - and
            - or
            - not
        filter:
          type: string
          description: >-
            Filter to apply the operation on. If `keywords` or `relevance` are
            specified then you can not sort by these fields.
          enum:
            - followers
            - engagements
            - engagementRate
            - lastposted
            - bio
            - keywords
            - relevance
            - language
            - gender
            - age
            - location
            - isVerified
            - interests
            - brands
            - accountTypes
            - hasSponsoredPosts
            - textTags
      required:
        - operator
        - filter
    InstagramSearchInfluencerFilters:
      type: object
      properties:
        followers:
          example:
            min: 20000
            max: 70000
          description: >-
            We round followers value in the filter: whenever it's below 5k, we
            round it to the nearest thousand (4123 -> 4000; 4800-> 5000); when
            it's over 5k, we round it to the nearest 5,000 (27k -> 25k; 28k ->
            30k).
          allOf:
            - $ref: '#/components/schemas/FollowersCount'
        engagementRate:
          type: number
          description: Minimum engagement rate.
          maximum: 1
          minimum: 0
          example: 0.02
        location:
          example:
            - 148838
            - 62149
            - 80500
            - 1428125
            - 304716
          description: >-
            Filter by Influencer Location, You can get the locations with our
            locations api end point and send location ids in an array.
          maxItems: 20
          type: array
          items:
            type: number
        language:
          type: string
          example: en
          description: >-
            Filter by Influencer Language, You can get the languages code with
            our languages api end point.
          minLength: 1
          maxLength: 2
        lastposted:
          type: number
          example: 90
          description: >-
            Idenitfy influencers based on when they last posted. The number
            represents days and should be >= 30.
          minimum: 30
        relevance:
          example:
            - '#cars'
            - '@topgear'
          description: >-
            Filter by topic of influencers posts or by similarity of topic to
            other influencer. For example "#cars #audi @topgear" means "Writing
            about #cars and #audi, has similar topic as @topgear account."
            <strong>You can only enter 100 usernames.</strong>
          type: array
          items:
            type: string
        audienceRelevance:
          example:
            - '@topgear'
          description: >-
            Filter by similarity of influencer's audience to another
            influencer's audience. For example "@topgear" means "Has audience
            similar to @topgear account." Audience similarity means followers
            follow accounts with the same topics as those followed by @topgear's
            audience.
          type: array
          items:
            type: string
        gender:
          type: string
          example: MALE
          description: Filter by Influencer gender.
          enum:
            - MALE
            - FEMALE
            - KNOWN
            - UNKNOWN
        age:
          description: >-
            Filter by Influencer age, possible values are: 18, 25, 35, 45, 65.
            You have the option to utilize either the `min` field, the `max`
            field, or both concurrently. <strong>Any number that falls outside
            the accepted range will be disregarded.</strong>
          allOf:
            - $ref: '#/components/schemas/InfluencerAgeRange'
        followersGrowthRate:
          description: Growth rate by followers over a period of time.
          example:
            interval: i6months
            value: 0.01
            operator: gt
          allOf:
            - $ref: '#/components/schemas/GrowthFilter'
        bio:
          type: string
          example: photos videos
          description: Search influencer by their bio description and/or full name
        hasYouTube:
          type: boolean
          example: false
          description: If Influencer has a youtube channel.
        hasContactDetails:
          description: If Influencer has contact details.
          type: array
          items:
            $ref: '#/components/schemas/ContactFilter'
        accountTypes:
          example:
            - 2
          description: >-
            Identify influencers by their Instagram account type: Regular = 1,
            Business = 2, Creator = 3. E.g to find business accounts use: 2
          type: array
          items:
            type: number
        brands:
          example:
            - 1708
            - 13
          description: >-
            Filter by Influencer Brands, You can get the array of brands with
            our brands API endpoint and send brand ids in an array.
          type: array
          items:
            type: number
        interests:
          example:
            - 3
            - 21
            - 1
            - 13
            - 11
            - 1708
            - 7
            - 1826
          description: >-
            Filter by Influencer Interests, You can get the array of interests
            with our interests api end point and send interests ids in an array.
          type: array
          items:
            type: number
        keywords:
          type: string
          description: >-
            Identify influencers by a phrase they use within the caption of
            their post.
          example: supercars
        textTags:
          example:
            - type: hashtag
              value: carsofinstagram
            - type: mention
              value: topgear
          maxItems: 20
          description: >-
            Filter by influencers who have used the defined hashtags or mentions
            in their posts. 
          type: array
          items:
            $ref: '#/components/schemas/TextTag'
        reelsPlays:
          description: >-
            We round reels plays value in the filter to the nearest thousand
            (1400 -> 1k; 1500-> 2k)
          allOf:
            - $ref: '#/components/schemas/ReelsPlaysCount'
        isVerified:
          type: boolean
          description: Set to `true` to filter by verified influencers.
        hasSponsoredPosts:
          type: boolean
          description: >-
            Set to `true` to filter by influencers who have sponsored posts. We
            identify sponsored posts by looking for commercial hashtags or the
            official paid partnership tag.
        engagements:
          description: >-
            Filter by engagements count. <i>Pro tip: set `max` to 0 if you want
            to see results with hidden likes.</i>
          allOf:
            - $ref: '#/components/schemas/EngagementsCount'
        filterOperations:
          description: >-
            Modify filter operation to use `and`, `or`, or `not`. Example:
            Search for <i>influencer using the keyword *cars* AND `not` from the
            London</i> or <i>Female `or` interested in Beauty &
            Cosmetics</i>.<br><i>If no operator is specified, the default
            operator applied is the `and` operator.</i>
          type: array
          items:
            $ref: '#/components/schemas/InstagramFilterOperations'
    LocationWeightedFilter:
      type: object
      properties:
        weight:
          type: number
          description: Weight of filter.
          maximum: 1
          minimum: 0
          example: 0.4
        id:
          type: number
          description: Filter value id for location (e.g. 148838)
      required:
        - id
    LanguageWeightedFilter:
      type: object
      properties:
        weight:
          type: number
          description: Weight of filter.
          maximum: 1
          minimum: 0
          example: 0.4
        id:
          type: string
          description: Filter value id for language (e.g. "en")
          minLength: 1
          maxLength: 2
      required:
        - id
    GenderWeightedFilter:
      type: object
      properties:
        weight:
          type: number
          description: Weight of filter.
          maximum: 1
          minimum: 0
          example: 0.4
        id:
          type: string
          description: Filter value id for gender
          enum:
            - MALE
            - FEMALE
      required:
        - id
    AgeWeightedFilter:
      type: object
      properties:
        weight:
          type: number
          description: Weight of filter.
          maximum: 1
          minimum: 0
          example: 0.4
        id:
          type: string
          description: Filter value id for age
          enum:
            - 13-17
            - 18-24
            - 25-34
            - 35-44
            - 45-64
            - 65-
      required:
        - id
    AudienceAgeRange:
      type: object
      properties:
        min:
          type: string
          example: 18
          description: Minimum audience age.
          enum:
            - '13'
            - '18'
            - '25'
            - '35'
            - '45'
            - '65'
        max:
          type: string
          example: 24
          description: Maximum audience age.
          enum:
            - '17'
            - '24'
            - '34'
            - '44'
            - '64'
        weight:
          type: number
          description: Weight of audience age range.
          minimum: 0
          maximum: 1
          example: 0.3
    InterestsWeightedFilter:
      type: object
      properties:
        weight:
          type: number
          description: Weight of filter.
          maximum: 1
          minimum: 0
          example: 0.4
        id:
          type: number
          description: Filter value id for interests (e.g. 1708)
      required:
        - id
    InstagramSearchAudienceFilters:
      type: object
      properties:
        location:
          example:
            - id: 148838
              weight: 0.2
            - id: 62149
              weight: 0.2
            - id: 80500
              weight: 0.2
            - id: 1428125
              weight: 0.2
            - id: 304716
              weight: 0.2
          description: >-
            Filter by Audience Location, You can get the locations with our
            locations api end point and send location ids in an array together
            with their weight percentages. The default percentage is set to 20%
            (0.2)
          type: array
          items:
            $ref: '#/components/schemas/LocationWeightedFilter'
        language:
          example:
            id: en
            weight: 0.2
          description: >-
            Filter by Audience Language, You can get the languages code with our
            languages api end point and send the location id within an object,
            together with the weight percentage. The default percentage is set
            to 20% (0.2)
          allOf:
            - $ref: '#/components/schemas/LanguageWeightedFilter'
        gender:
          example:
            id: MALE
            weight: 0.5
          description: >-
            Filter by gender specific Audience, You can send the gender together
            with the weight percentage. The default percentage is set to 50%
            (0.5)
          allOf:
            - $ref: '#/components/schemas/GenderWeightedFilter'
        age:
          example:
            - id: 18-24
              weight: 0.3
            - id: 65-
              weight: 0.3
          description: >-
            Filter by Audience age. You can send the age together with the
            weight percentage. The default percentage is set to 30% (0.3)
          type: array
          items:
            $ref: '#/components/schemas/AgeWeightedFilter'
        ageRange:
          example:
            min: '18'
            max: '24'
            weight: 0.3
          description: >-
            Filter by audience age range. You can send the age range together
            with the weight percentage. The default percentage is set to 30%
            (0.3). You can't send both age and ageRange together.
          allOf:
            - $ref: '#/components/schemas/AudienceAgeRange'
        interests:
          example:
            - id: 1708
              weight: 0.2
            - id: 13
              weight: 0.2
            - id: 3
              weight: 0.2
            - id: 21
              weight: 0.2
            - id: 1
              weight: 0.2
            - id: 11
              weight: 0.2
            - id: 7
              weight: 0.2
            - id: 1826
              weight: 0.2
          description: >-
            Filter by Audience Interests, You can get the array of interests
            with our interests api end point and send interests ids in an array
            together with their weight percentages. The default percentage is
            set to 30% (0.3)
          type: array
          items:
            $ref: '#/components/schemas/InterestsWeightedFilter'
        credibility:
          type: number
          example: 0.75
          description: >-
            Filter by Audience Credibility. The value is the inverse of fake
            followers, meaning 25% fake followers would translate to 0.75 of
            audience credibility.
          minimum: 0
          maximum: 1
    InstagramSearchFilters:
      type: object
      properties:
        influencer:
          $ref: '#/components/schemas/InstagramSearchInfluencerFilters'
        audience:
          $ref: '#/components/schemas/InstagramSearchAudienceFilters'
    InstagramSearchBody:
      type: object
      properties:
        page:
          type: number
          description: Page number
          default: 0
          minimum: 0
          maximum: 665
        calculationMethod:
          type: string
          example: median
          default: median
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          enum:
            - median
            - average
        sort:
          description: Sorting
          allOf:
            - $ref: '#/components/schemas/InstagramSort'
        filter:
          $ref: '#/components/schemas/InstagramSearchFilters'
    ProfileResponse:
      type: object
      properties:
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        username:
          type: string
          description: Username of Influencer
          example: instagram
        url:
          type: string
          description: Profile URL
          example: https://www.instagram.com/instagram/
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/22159423_1794482210565499_9190891265074397184_n.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
        engagementRate:
          type: number
          description: Engagement rate
          example: 0.0027362938100525414
      required:
        - username
        - url
        - picture
        - followers
        - engagements
        - engagementRate
    Match:
      type: object
      properties:
        code:
          type: string
          description: >-
            Code of the sorting value that was used for matching e.g when
            sorting by audienceAge it could be 25-34
          example: 25-34
        weight:
          type: number
          description: Weight of the sorting value that was matched
          example: 0.32
      required:
        - code
        - weight
    InfluencerResponse:
      type: object
      properties:
        userId:
          type: string
          description: User Id
          example: '173560420'
        profile:
          description: Profile info of influencer
          allOf:
            - $ref: '#/components/schemas/ProfileResponse'
        match:
          description: Sorting match info
          allOf:
            - $ref: '#/components/schemas/Match'
      required:
        - userId
        - profile
    SearchResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        total:
          type: number
          description: Number of results
          example: 2
        lookalikes:
          description: Lookalikes
          type: array
          items:
            $ref: '#/components/schemas/InfluencerResponse'
        directs:
          description: Directs
          type: array
          items:
            $ref: '#/components/schemas/InfluencerResponse'
        isExactMatch:
          type: boolean
          description: >-
            Are the results exactly matching the filters you provided? If we
            don't find exact results then we try to show similar users by
            automatically removing some filters for you.
          example: true
      required:
        - total
        - lookalikes
        - directs
        - isExactMatch
    InstagramProfileResponse:
      type: object
      properties:
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        username:
          type: string
          description: Username of Influencer
          example: instagram
        url:
          type: string
          description: Profile URL
          example: https://www.instagram.com/instagram/
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/22159423_1794482210565499_9190891265074397184_n.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
        engagementRate:
          type: number
          description: Engagement rate
          example: 0.0027362938100525414
      required:
        - username
        - url
        - picture
        - followers
        - engagements
        - engagementRate
    Tag:
      type: object
      properties:
        tag:
          type: string
          example: ''
        weight:
          type: number
          example: 0.1
      required:
        - tag
        - weight
    ContentTypeStatsHistory:
      type: object
      properties:
        month:
          type: string
          example: 2025-01
        avgLikes:
          type: number
          example: 0
        avgEngagements:
          type: number
          example: 0
        avgViews:
          type: number
          example: 0
        avgComments:
          type: number
          example: 0
        avgShares:
          type: number
          example: 0
        avgSaves:
          type: number
          example: 0
    ContentTypeStatsInstagram:
      type: object
      properties:
        engagements:
          type: number
          example: 0
        engagementRate:
          type: number
          example: 0
        avgLikes:
          type: number
          example: 0
        avgComments:
          type: number
          example: 0
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/ContentTypeStatsHistory'
        avgReelsPlays:
          type: number
          example: 0
        avgShares:
          type: number
          example: 0
    StatsByContentTypeInstagram:
      type: object
      properties:
        all:
          example: {}
          description: All content type stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsInstagram'
        reels:
          example: {}
          description: Reels stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsInstagram'
    WeightWithCode:
      type: object
      properties:
        code:
          type: string
          example: ''
        weight:
          type: number
          example: 0.07
      required:
        - code
        - weight
    WeightWithCodeName:
      type: object
      properties:
        name:
          type: string
          example: ''
        weight:
          type: number
          example: 0.07
        code:
          type: string
          example: ''
      required:
        - name
        - weight
        - code
    GenderPerAge:
      type: object
      properties:
        code:
          type: string
          example: ''
        male:
          type: number
          example: 0.07
        female:
          type: number
          example: 0.07
      required:
        - code
        - male
        - female
    WeightWithName:
      type: object
      properties:
        name:
          type: string
          example: ''
        weight:
          type: number
          example: 0.07
      required:
        - name
        - weight
    AudienceLanguage:
      type: object
      properties:
        code:
          type: string
          example: it
        name:
          type: string
          example: Italian
        weight:
          type: number
          example: 0.1
      required:
        - code
        - name
        - weight
    User:
      type: object
      properties:
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        username:
          type: string
          description: Username of Influencer
          example: instagram
        url:
          type: string
          description: Profile URL
          example: https://www.instagram.com/instagram/
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/22159423_1794482210565499_9190891265074397184_n.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
      required:
        - username
        - url
        - picture
        - followers
        - engagements
    AudienceEthnicities:
      type: object
      properties:
        code:
          type: string
          example: white
          enum:
            - white
            - asian
            - african_american
            - hispanic
        name:
          type: string
          example: White / Caucasian
          enum:
            - White / Caucasian
            - Asian
            - African American
            - Hispanic
        weight:
          type: number
          example: 0.1
      required:
        - code
        - name
        - weight
    AudienceReachability:
      type: object
      properties:
        code:
          type: string
          example: 500-1000
          enum:
            - '-500'
            - 500-1000
            - 1000-1500
            - 1500-
          description: Range of the number of accounts followed
        weight:
          type: number
          example: 0.1
          description: Percentage of the audience
      required:
        - code
        - weight
    AudienceType:
      type: object
      properties:
        code:
          type: string
          example: real
          enum:
            - mass_followers
            - suspicious
            - influencers
            - real
          description: Type of the audience
        weight:
          type: number
          example: 0.9
          description: Percentage of the audience
      required:
        - code
        - weight
    InstagramReportAudience:
      type: object
      properties:
        notable:
          type: number
          example: 0.07
        genders:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        geoCountries:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCodeName'
        ages:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        gendersPerAge:
          type: array
          items:
            $ref: '#/components/schemas/GenderPerAge'
        geoCities:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithName'
        geoStates:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithName'
        credibility:
          type: number
          example: 0.75
        interests:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithName'
        brandAffinity:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithName'
        languages:
          type: array
          items:
            $ref: '#/components/schemas/AudienceLanguage'
        notableUsers:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceLookalikes:
          type: array
          items:
            $ref: '#/components/schemas/User'
        ethnicities:
          type: array
          items:
            $ref: '#/components/schemas/AudienceEthnicities'
        audienceReachability:
          description: >-
            Percentage of the audience based on the number of accounts they
            follow, categorized into specific ranges. For instance, percentage
            of followers following no more than 500 accounts, or following
            between 500 and 1000 accounts.
          example:
            - code: '-500'
              weight: 0.379536
            - code: 500-1000
              weight: 0.161691
            - code: 1000-1500
              weight: 0.097547
            - code: 1500-
              weight: 0.361225
          type: array
          items:
            $ref: '#/components/schemas/AudienceReachability'
        audienceTypes:
          description: Percentage of the audience based on the type of accounts they follow
          example:
            - code: mass_followers
              weight: 0.379536
            - code: suspicious
              weight: 0.161691
            - code: influencers
              weight: 0.097547
            - code: real
              weight: 0.361225
          type: array
          items:
            $ref: '#/components/schemas/AudienceType'
      required:
        - notable
        - genders
        - geoCountries
        - ages
        - gendersPerAge
        - geoCities
        - geoStates
        - credibility
        - interests
        - brandAffinity
        - languages
        - notableUsers
        - audienceLookalikes
        - ethnicities
    StatsData:
      type: object
      properties:
        value:
          type: number
          description: Value
          example: 859004
        compared:
          type: number
          description: Change in value compared to last month
          example: 0.007144320631801482
    Stats:
      type: object
      properties:
        avgLikes:
          description: Average Likes and historical comparison
          allOf:
            - $ref: '#/components/schemas/StatsData'
        followers:
          description: Followers and historical comparison
          allOf:
            - $ref: '#/components/schemas/StatsData'
        avgShares:
          description: Average Shares and historical comparison
          allOf:
            - $ref: '#/components/schemas/StatsData'
        avgComments:
          description: Average Comments and historical comparison
          allOf:
            - $ref: '#/components/schemas/StatsData'
    InstagramRecentPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        mentions:
          type: array
          items:
            type: string
        hashtags:
          type: array
          items:
            type: string
      required:
        - id
        - text
        - url
        - created
    InstagramPopularPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        thumbnail:
          type: string
        type:
          type: string
      required:
        - id
        - text
        - url
        - created
        - thumbnail
        - type
    Language:
      type: object
      properties:
        code:
          type: string
          example: en
          enum:
            - af
            - als
            - am
            - an
            - ar
            - arz
            - as
            - ast
            - av
            - az
            - azb
            - ba
            - bar
            - bcl
            - be
            - bg
            - bh
            - bn
            - bo
            - bpy
            - br
            - bs
            - bxr
            - ca
            - cbk
            - ce
            - ceb
            - ckb
            - co
            - cs
            - cv
            - cy
            - da
            - de
            - diq
            - dsb
            - dty
            - dv
            - dz
            - el
            - eml
            - en
            - eo
            - es
            - et
            - eu
            - fa
            - fi
            - fo
            - fr
            - frr
            - fy
            - ga
            - gd
            - gl
            - gn
            - gom
            - gu
            - gv
            - he
            - hi
            - hif
            - hr
            - hsb
            - ht
            - hu
            - hy
            - ia
            - id
            - ie
            - ilo
            - io
            - is
            - it
            - ja
            - jbo
            - jv
            - ka
            - kk
            - km
            - kn
            - ko
            - krc
            - ku
            - kv
            - kw
            - ky
            - la
            - lb
            - lez
            - li
            - lmo
            - lo
            - lrc
            - lt
            - lv
            - mai
            - mg
            - mhr
            - min
            - mk
            - ml
            - mn
            - mr
            - mrj
            - ms
            - mt
            - mwl
            - my
            - myv
            - mzn
            - nah
            - nap
            - nb
            - nds
            - ne
            - new
            - nl
            - nn
            - 'no'
            - oc
            - or
            - os
            - pa
            - pam
            - pfl
            - pl
            - pms
            - pnb
            - ps
            - pt
            - qu
            - rm
            - ro
            - ru
            - rue
            - rw
            - sa
            - sah
            - sc
            - scn
            - sco
            - sd
            - se
            - sh
            - si
            - sk
            - sl
            - so
            - sq
            - sr
            - su
            - sv
            - sw
            - ta
            - te
            - tg
            - th
            - tk
            - tl
            - tr
            - tt
            - tyv
            - ug
            - uk
            - ur
            - uz
            - vec
            - vep
            - vi
            - vls
            - vo
            - wa
            - war
            - wuu
            - xal
            - xh
            - xmf
            - yi
            - yo
            - yue
            - zh
            - zu
        name:
          type: string
          example: English
      required:
        - code
        - name
    Contacts:
      type: object
      properties:
        type:
          type: string
          example: email
          enum:
            - bbm
            - email
            - facebook
            - instagram
            - youtube
            - vk
            - tumblr
            - skype
            - snapchat
            - twitter
        value:
          type: string
          example: influenceremail@example.com
          minLength: 1
      required:
        - type
        - value
    Interest:
      type: object
      properties:
        id:
          type: number
          example: 1
        name:
          type: string
          example: ''
      required:
        - id
        - name
    Brand:
      type: object
      properties:
        id:
          type: number
          example: 1
        name:
          type: string
          example: ''
      required:
        - id
        - name
    PostSponsor:
      type: object
      properties:
        domain:
          type: string
        logo_url:
          type: string
        name:
          type: string
    InstagramSponsoredPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        mentions:
          type: array
          items:
            type: string
        hashtags:
          type: array
          items:
            type: string
        video:
          type: string
        image:
          type: string
        thumbnail:
          type: string
        sponsors:
          type: array
          items:
            $ref: '#/components/schemas/PostSponsor'
      required:
        - id
        - text
        - url
        - created
        - thumbnail
    MonthlyStat:
      type: object
      properties:
        month:
          type: string
          example: 2019-05
        followers:
          type: number
          example: 1000
        following:
          type: number
          example: 1000
        avgLikes:
          type: number
          example: 1000
        avgViews:
          type: number
          example: 1000
        avgComments:
          type: number
          example: 1000
        avgShares:
          type: number
          example: 1000
      required:
        - month
        - followers
        - following
        - avgLikes
        - avgViews
        - avgComments
    FollowersRange:
      type: object
      properties:
        leftNumber:
          type: number
          example: 100000
        rightNumber:
          type: number
          example: 500000
    HistogramBin:
      type: object
      properties:
        min:
          type: number
          description: The lower bound of the range
          example: 0.4546
        max:
          type: number
          description: The upper bound of the range
          example: 0.6482
        total:
          type: number
          description: The total count of data points within this range
          example: 5551
        median:
          type: boolean
          description: >-
            Indicates if this bin represents the median range of the data. Only
            one range has this value set to `true`
          example: true
      required:
        - total
    AudienceExtraInstagramReportData:
      type: object
      properties:
        followersRange:
          description: >-
            All histograms shown here are based on influencers whose number of
            followers fall within the range specified in this field
          allOf:
            - $ref: '#/components/schemas/FollowersRange'
        engagementRateDistribution:
          description: >-
            Distribution of influencers by their followers' engagement rate.
            This histogram displays how influencers from the same follower group
            are distributed based on the engagement rate of their followers.
            Ranges are automatically chosen for a clearer view of the entire
            histogram
          type: array
          items:
            $ref: '#/components/schemas/HistogramBin'
        credibilityDistribution:
          description: >-
            Distribution of influencers by their followers' credibility. This
            histogram displays how influencers from the same follower group are
            distributed based on the credibility of their followers. Ranges are
            automatically chosen for a clearer view of the entire histogram
          type: array
          items:
            $ref: '#/components/schemas/HistogramBin'
      required:
        - followersRange
        - engagementRateDistribution
    InstagramReportProfile:
      type: object
      properties:
        userId:
          type: string
          description: User Id
          example: '173560420'
        profile:
          description: Influencer Profile
          allOf:
            - $ref: '#/components/schemas/InstagramProfileResponse'
        hashtags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        mentions:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        statsByContentType:
          description: User stats separated by content type
          allOf:
            - $ref: '#/components/schemas/StatsByContentTypeInstagram'
        audience:
          description: Audience data
          allOf:
            - $ref: '#/components/schemas/InstagramReportAudience'
        stats:
          description: >-
            Influencer stats, likes and followers (deprecated in favor of
            statsByContentType)
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/Stats'
        recentPosts:
          description: Recent Posts
          example:
            - id: string
              text: string
              url: string
              created: string
              likes: 0
              comments: 0
              mentions:
                - string
              hashtags:
                - string
          type: array
          items:
            $ref: '#/components/schemas/InstagramRecentPost'
        popularPosts:
          description: Popular Posts
          type: array
          items:
            $ref: '#/components/schemas/InstagramPopularPost'
        city:
          type: string
          example: New york
        state:
          type: string
          example: California
        gender:
          type: string
          example: FEMALE
          enum:
            - MALE
            - FEMALE
        language:
          $ref: '#/components/schemas/Language'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contacts'
        country:
          type: string
          example: US
        ageGroup:
          type: string
          example: 18-24
          enum:
            - 13-17
            - 18-24
            - 25-34
            - 35-44
            - 45-64
            - 65-
        isPrivate:
          type: boolean
          example: true
        accountType:
          type: string
          example: Regular
          enum:
            - Regular
            - Business
            - Creator
        isVerified:
          type: boolean
          example: true
        postsCounts:
          type: number
          example: 37
        avgLikes:
          type: number
          example: 18211
        avgComments:
          type: number
          example: 12321
        bio:
          type: string
          example: 'CEO of #RockTok'
        interests:
          type: array
          items:
            $ref: '#/components/schemas/Interest'
        brandAffinity:
          type: array
          items:
            $ref: '#/components/schemas/Brand'
        sponsoredPosts:
          type: array
          items:
            $ref: '#/components/schemas/InstagramSponsoredPost'
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyStat'
        lookalikes:
          type: array
          items:
            $ref: '#/components/schemas/User'
        postsCount:
          type: number
          example: 37
        avgViews:
          type: number
          example: 48
        avgReelsPlays:
          type: number
          example: 5727
        audienceExtra:
          $ref: '#/components/schemas/AudienceExtraInstagramReportData'
        paidPostPerformance:
          type: number
          example: 0.5
        paidPostPerformanceViews:
          type: number
          example: 37
        sponsoredPostsMedianViews:
          type: number
          example: 3127
        sponsoredPostsMedianLikes:
          type: number
          example: 3743
        nonSponsoredPostsMedianViews:
          type: number
          example: 267
        nonSponsoredPostsMedianLikes:
          type: number
          example: 367
      required:
        - userId
        - hashtags
        - mentions
        - isPrivate
        - accountType
        - isVerified
        - postsCounts
        - avgLikes
        - avgComments
        - bio
        - interests
        - brandAffinity
        - sponsoredPosts
        - statHistory
        - lookalikes
        - postsCount
        - avgViews
        - avgReelsPlays
        - paidPostPerformanceViews
        - sponsoredPostsMedianViews
        - sponsoredPostsMedianLikes
        - nonSponsoredPostsMedianViews
        - nonSponsoredPostsMedianLikes
    InstagramReport:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        profile:
          $ref: '#/components/schemas/InstagramReportProfile'
      required:
        - profile
    CollaborationsPostStats:
      type: object
      properties:
        likes:
          type: number
          description: Likes
          example: 123
        comments:
          type: number
          description: Comments
          example: 12
        likes_and_views_counts_enabled:
          type: boolean
          description: Likes and views counts enabled
          example: true
        likes_count_enabled:
          type: boolean
          description: Likes count enabled
          example: true
        plays:
          type: number
          description: Plays
          example: 123
        views:
          type: number
          description: Views
          example: 123
        shares:
          type: number
          description: Shares
          example: 123
        views_count_enabled:
          type: boolean
          description: Views count enabled
          example: true
    CollaborationsSponsor:
      type: object
      properties:
        name:
          type: string
          description: Brand name
          example: Honda
        domain:
          type: string
          description: Brand domain
          example: honda.com
        logo_url:
          type: string
          description: Brand logo
          example: https://images.od.modash.io/739b39affeb633d30a8a4280668605b091af0083
    CollaborationsPostInfluencerPaginated:
      type: object
      properties:
        post_id:
          type: string
          description: Post id
          example: '4333460164'
        post_thumbnail:
          type: string
          description: Post thumbnail
          example: https://images.od.modash.io/c5175c827bcd7fb6e89a53729b1a2347f0c6210f
        post_timestamp:
          type: number
          description: Post timestamp
          example: 1729502216000
        title:
          type: string
          description: Title
          example: Title
        description:
          type: string
          description: Description
          example: Description
        stats:
          description: Stats
          allOf:
            - $ref: '#/components/schemas/CollaborationsPostStats'
        sponsors:
          description: Sponsors
          type: array
          items:
            $ref: '#/components/schemas/CollaborationsSponsor'
        user_id:
          type: string
          description: User id
          example: '173560420'
        username:
          type: string
          description: Username
          example: username
        user_picture:
          type: string
          description: User picture
          example: https://images.od.modash.io/c5175c827bcd7fb6e89a53729b1a2347f0c6210f
        platform:
          type: string
          description: Platform
          example: instagram
      required:
        - post_id
    CollaborationsInfluencerResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        collaborations:
          description: Collaborations
          type: array
          items:
            $ref: '#/components/schemas/CollaborationsPostInfluencerPaginated'
        more_available:
          type: boolean
        end_cursor:
          type: string
    AudiencerOverlapBody:
      type: object
      properties:
        influencers:
          description: List of usernames or user ids
          type: array
          items:
            type: string
    ReportInfo:
      type: object
      properties:
        totalFollowers:
          type: number
          description: Total followers
        totalUniqueFollowers:
          type: number
          description: Total unique followers
      required:
        - totalFollowers
        - totalUniqueFollowers
    OverlapReport:
      type: object
      properties:
        userId:
          type: string
          minLength: 1
        username:
          type: string
          minLength: 1
        followers:
          type: number
          description: Number of followers for this influencer
        uniquePercentage:
          type: number
          description: >-
            The percent of followers that are unique for this influencer (they
            do not follow any other influencer within this overlap request)
        overlappingPercentage:
          type: number
          description: >-
            The percent of followers that overlap with at least one other
            influencer (they follow at least one other influencer within this
            overlap request)
      required:
        - userId
        - followers
        - uniquePercentage
        - overlappingPercentage
    AudienceOverlapResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        reportInfo:
          $ref: '#/components/schemas/ReportInfo'
        data:
          type: array
          items:
            $ref: '#/components/schemas/OverlapReport'
      required:
        - reportInfo
        - data
    ListBrandsResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        brands:
          type: array
          items:
            $ref: '#/components/schemas/Brand'
        total:
          type: number
          example: 28
          description: Total number of brands
      required:
        - brands
        - total
    ListInterestsResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        interests:
          type: array
          items:
            $ref: '#/components/schemas/Interest'
        total:
          type: number
          example: 28
          description: Total number of interests
      required:
        - interests
        - total
    HashtagsResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        tags:
          type: array
          items:
            type: string
      required:
        - tags
    ListLanguagesResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        languages:
          type: array
          items:
            $ref: '#/components/schemas/Language'
        total:
          type: number
          example: 98
          description: Total number of languages
      required:
        - languages
        - total
    Location:
      type: object
      properties:
        id:
          type: number
          example: 51800
          description: Id of the location
        name:
          type: string
          example: London
          description: Name of the location
        title:
          type: string
          example: London, United Kingdom
          description: Full title of the location
      required:
        - id
        - name
        - title
    ListLocationsResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
        total:
          type: number
          example: 8477
          description: Total number of locations
      required:
        - locations
        - total
    UserInfluencer:
      type: object
      properties:
        userId:
          type: string
          example: '232192182'
          description: User Id
        username:
          type: string
          example: therock
          description: Username
        fullname:
          type: string
          example: therock
          description: User's full name
        picture:
          type: string
          example: >-
            https://imgigp.modash.io/v2?mb0KwpL92uYofJiSjDn1%2F6peL1lBwv3s%2BUvShHERlDbrEEwrWumIvR20xZeZXa0LDeIrcniqZeG9S%2F1a5s2Rx3FZdXrWpY%2BmSBJp1l%2FmBGon3rcHA4EfuatZqMhVBzAT
          description: User's profile image URL
        followers:
          type: number
          example: 313583625
          description: User's number of followers
        isVerified:
          type: boolean
          example: true
          description: User has verified badge
      required:
        - userId
        - username
        - fullname
        - picture
        - followers
        - isVerified
    ListUsersResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        users:
          type: array
          items:
            $ref: '#/components/schemas/UserInfluencer'
      required:
        - users
    TikTokSort:
      type: object
      properties:
        field:
          type: string
          example: followers
          default: followers
          description: "Note: The following sort options are available only when the corresponding filter is applied: `keywords` `audienceGeo` `audienceLang` `audienceGender` `audienceAge` `followersGrowth` `likesGrowth`. <br />\n\t\tSorting field in which order you want to get the results."
          enum:
            - engagements
            - followers
            - engagementRate
            - keywords
            - audienceGeo
            - audienceLang
            - audienceGender
            - audienceAge
            - relevance
            - followersGrowth
            - views
            - shares
            - saves
            - likesGrowth
        value:
          type: number
          example: 123
          description: Only required for ```audienceGeo``` sorting.
        direction:
          type: string
          example: desc
          default: desc
          description: Sorting direction
          enum:
            - asc
            - desc
      required:
        - field
    ViewsCount:
      type: object
      properties:
        min:
          type: number
          example: 5000
          description: Minimum views count.
        max:
          type: number
          example: 10000
          description: Maximum views count.
    SharesCount:
      type: object
      properties:
        min:
          type: number
          example: 5000
          description: Minimum shares count (this value will be rounded).
        max:
          type: number
          example: 10000
          description: Maximum shares count (this value will be rounded).
    SavesCount:
      type: object
      properties:
        min:
          type: number
          example: 5000
          description: Minimum saves count (this value will be rounded).
        max:
          type: number
          example: 10000
          description: Maximum saves count (this value will be rounded).
    TikTokFilterOperations:
      type: object
      properties:
        operator:
          type: string
          description: >-
            Logical operations used to combine filters.<br><i>Note: To use the
            `or` operator, you must apply it to at least two filters.</i>
          enum:
            - and
            - or
            - not
        filter:
          type: string
          description: >-
            Filter to apply the operation on. If `keywords` or `relevance` are
            specified then you can not sort by these fields.
          enum:
            - followers
            - engagements
            - engagementRate
            - lastposted
            - bio
            - keywords
            - relevance
            - language
            - gender
            - age
            - location
            - isVerified
            - views
            - textTags
      required:
        - operator
        - filter
    TikTokSearchInfluencerFilters:
      type: object
      properties:
        followers:
          example:
            min: 20000
            max: 70000
          description: >-
            We round followers value in the filter: whenever it's below 5k, we
            round it to the nearest thousand (4123 -> 4000; 4800-> 5000); when
            it's over 5k, we round it to the nearest 5,000 (27k -> 25k; 28k ->
            30k).
          allOf:
            - $ref: '#/components/schemas/FollowersCount'
        engagementRate:
          type: number
          description: Minimum engagement rate.
          maximum: 1
          minimum: 0
          example: 0.02
        location:
          example:
            - 148838
            - 62149
            - 80500
            - 1428125
            - 304716
          description: >-
            Filter by Influencer Location, You can get the locations with our
            locations api end point and send location ids in an array.
          maxItems: 20
          type: array
          items:
            type: number
        language:
          type: string
          example: en
          description: >-
            Filter by Influencer Language, You can get the languages code with
            our languages api end point.
          minLength: 1
          maxLength: 2
        lastposted:
          type: number
          example: 90
          description: >-
            Idenitfy influencers based on when they last posted. The number
            represents days and should be >= 30.
          minimum: 30
        relevance:
          example:
            - '#cars'
            - '@topgear'
          description: >-
            Filter by topic of influencers posts or by similarity of topic to
            other influencer. For example "#cars #audi @topgear" means "Writing
            about #cars and #audi, has similar topic as @topgear account."
            <strong>You can only enter 100 usernames.</strong>
          type: array
          items:
            type: string
        audienceRelevance:
          example:
            - '@topgear'
          description: >-
            Filter by similarity of influencer's audience to another
            influencer's audience. For example "@topgear" means "Has audience
            similar to @topgear account." Audience similarity means followers
            follow accounts with the same topics as those followed by @topgear's
            audience.
          type: array
          items:
            type: string
        gender:
          type: string
          example: MALE
          description: Filter by Influencer gender.
          enum:
            - MALE
            - FEMALE
            - KNOWN
            - UNKNOWN
        age:
          description: >-
            Filter by Influencer age, possible values are: 18, 25, 35, 45, 65.
            You have the option to utilize either the `min` field, the `max`
            field, or both concurrently. <strong>Any number that falls outside
            the accepted range will be disregarded.</strong>
          allOf:
            - $ref: '#/components/schemas/InfluencerAgeRange'
        followersGrowthRate:
          description: Growth rate by followers over a period of time.
          example:
            interval: i6months
            value: 0.01
            operator: gt
          allOf:
            - $ref: '#/components/schemas/GrowthFilter'
        bio:
          type: string
          example: photos videos
          description: Search influencer by their bio description and/or full name
        views:
          description: Filter by views count
          allOf:
            - $ref: '#/components/schemas/ViewsCount'
        hasContactDetails:
          description: If Influencer has contact details.
          type: array
          items:
            $ref: '#/components/schemas/ContactFilter'
        textTags:
          example:
            - type: hashtag
              value: carsofinstagram
            - type: mention
              value: topgear
          maxItems: 20
          description: >-
            Filter by influencers who have used the defined hashtags or mentions
            in their posts. 
          type: array
          items:
            $ref: '#/components/schemas/TextTag'
        keywords:
          type: string
          description: >-
            Identify influencers by a phrase they use within the caption of
            their post.
          example: cars
        isVerified:
          type: boolean
          description: Set to `true` to filter by verified influencers.
        likesGrowthRate:
          description: Growth rate by total likes over a period of time.
          example:
            interval: i1month
            value: 0.2
            operator: gt
          allOf:
            - $ref: '#/components/schemas/GrowthFilter'
        shares:
          description: Filter by shares count
          allOf:
            - $ref: '#/components/schemas/SharesCount'
        saves:
          description: Filter by saves count
          allOf:
            - $ref: '#/components/schemas/SavesCount'
        engagements:
          description: Filter by engagements count
          allOf:
            - $ref: '#/components/schemas/EngagementsCount'
        filterOperations:
          description: >-
            Modify filter operation to use `and`, `or`, or `not`. Example:
            Search for <i>influencer using the keyword *cars* AND `not` from the
            London</i> or <i>Female `or` interested in Beauty &
            Cosmetics</i>.<br><i>If no operator is specified, the default
            operator applied is the `and` operator.</i>
          type: array
          items:
            $ref: '#/components/schemas/TikTokFilterOperations'
    TikTokSearchAudienceFilters:
      type: object
      properties:
        location:
          example:
            - id: 148838
              weight: 0.2
            - id: 62149
              weight: 0.2
            - id: 80500
              weight: 0.2
            - id: 1428125
              weight: 0.2
            - id: 304716
              weight: 0.2
          description: >-
            Filter by Audience Location, You can get the locations with our
            locations api end point and send location ids in an array together
            with their weight percentages. The default percentage is set to 20%
            (0.2)
          type: array
          items:
            $ref: '#/components/schemas/LocationWeightedFilter'
        language:
          example:
            id: en
            weight: 0.2
          description: >-
            Filter by Audience Language, You can get the languages code with our
            languages api end point and send the location id within an object,
            together with the weight percentage. The default percentage is set
            to 20% (0.2)
          allOf:
            - $ref: '#/components/schemas/LanguageWeightedFilter'
        gender:
          example:
            id: MALE
            weight: 0.5
          description: >-
            Filter by gender specific Audience, You can send the gender together
            with the weight percentage. The default percentage is set to 50%
            (0.5)
          allOf:
            - $ref: '#/components/schemas/GenderWeightedFilter'
        age:
          example:
            - id: 18-24
              weight: 0.3
            - id: 65-
              weight: 0.3
          description: >-
            Filter by Audience age. You can send the age together with the
            weight percentage. The default percentage is set to 30% (0.3)
          type: array
          items:
            $ref: '#/components/schemas/AgeWeightedFilter'
        ageRange:
          example:
            min: '18'
            max: '24'
            weight: 0.3
          description: >-
            Filter by audience age range. You can send the age range together
            with the weight percentage. The default percentage is set to 30%
            (0.3). You can't send both age and ageRange together.
          allOf:
            - $ref: '#/components/schemas/AudienceAgeRange'
    TikTokSearchFilters:
      type: object
      properties:
        influencer:
          $ref: '#/components/schemas/TikTokSearchInfluencerFilters'
        audience:
          $ref: '#/components/schemas/TikTokSearchAudienceFilters'
    TikTokSearchBody:
      type: object
      properties:
        page:
          type: number
          description: Page number
          default: 0
          minimum: 0
          maximum: 665
        calculationMethod:
          type: string
          example: median
          default: median
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          enum:
            - median
            - average
        sort:
          description: Sorting
          allOf:
            - $ref: '#/components/schemas/TikTokSort'
        filter:
          $ref: '#/components/schemas/TikTokSearchFilters'
    TiktokProfileResponse:
      type: object
      properties:
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        username:
          type: string
          description: Username of Influencer
          example: instagram
        url:
          type: string
          description: Profile URL
          example: https://www.instagram.com/instagram/
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/22159423_1794482210565499_9190891265074397184_n.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
        engagementRate:
          type: number
          description: Engagement rate
          example: 0.0027362938100525414
        averageViews:
          type: number
          example: 98124
      required:
        - username
        - url
        - picture
        - followers
        - engagements
        - engagementRate
        - averageViews
    TikTokReportAudience:
      type: object
      properties:
        notable:
          type: number
          example: 0.07
        genders:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        geoCountries:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCodeName'
        ages:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        gendersPerAge:
          type: array
          items:
            $ref: '#/components/schemas/GenderPerAge'
        languages:
          type: array
          items:
            $ref: '#/components/schemas/AudienceLanguage'
        notableUsers:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceLookalikes:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceReachability:
          description: >-
            Percentage of the audience based on the number of accounts they
            follow, categorized into specific ranges. For instance, percentage
            of followers following no more than 500 accounts, or following
            between 500 and 1000 accounts.
          example:
            - code: '-500'
              weight: 0.379536
            - code: 500-1000
              weight: 0.161691
            - code: 1000-1500
              weight: 0.097547
            - code: 1500-
              weight: 0.361225
          type: array
          items:
            $ref: '#/components/schemas/AudienceReachability'
      required:
        - notable
        - genders
        - geoCountries
        - ages
        - gendersPerAge
        - languages
        - notableUsers
        - audienceLookalikes
    ContentTypeStatsTiktok:
      type: object
      properties:
        engagements:
          type: number
          example: 0
        engagementRate:
          type: number
          example: 0
        avgLikes:
          type: number
          example: 0
        avgComments:
          type: number
          example: 0
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/ContentTypeStatsHistory'
        avgViews:
          type: number
          example: 0
        avgShares:
          type: number
          example: 0
        avgPosts4weeks:
          type: number
          example: 0
    StatsByContentTypeTiktok:
      type: object
      properties:
        all:
          example: {}
          description: All content type stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsTiktok'
    TikTokRecentPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        video:
          type: string
        thumbnail:
          type: string
          deprecated: true
          example: >-
            https://p16-amd-va.tiktokcdn.com/obj/tos-useast5-p-0068-tx/ogyxG5KtISdEAzSCEzZL4BA7BIij8pf5dwwBli
          description: >-
            Thumbnail images are sent as TikTok URLs that expire in a few hours
            and are not accessible in most cases. This field will be removed
            with the next API version.
      required:
        - id
        - text
        - url
        - created
        - thumbnail
    AudienceExtraReportData:
      type: object
      properties:
        followersRange:
          description: >-
            All histograms shown here are based on influencers whose number of
            followers fall within the range specified in this field
          allOf:
            - $ref: '#/components/schemas/FollowersRange'
        engagementRateDistribution:
          description: >-
            Distribution of influencers by their followers' engagement rate.
            This histogram displays how influencers from the same follower group
            are distributed based on the engagement rate of their followers.
            Ranges are automatically chosen for a clearer view of the entire
            histogram
          type: array
          items:
            $ref: '#/components/schemas/HistogramBin'
      required:
        - followersRange
        - engagementRateDistribution
    TiktokSponsoredPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        video:
          type: string
        thumbnail:
          type: string
        type:
          type: string
        title:
          type: string
        sponsors:
          type: array
          items:
            $ref: '#/components/schemas/PostSponsor'
      required:
        - id
        - text
        - url
        - created
        - thumbnail
        - type
        - title
    TikTokReportProfile:
      type: object
      properties:
        userId:
          type: string
          description: User Id
          example: '173560420'
        profile:
          description: Influencer Profile
          allOf:
            - $ref: '#/components/schemas/TiktokProfileResponse'
        audience:
          description: Audience data
          allOf:
            - $ref: '#/components/schemas/TikTokReportAudience'
        secUid:
          type: string
        statsByContentType:
          description: User stats separated by content type
          allOf:
            - $ref: '#/components/schemas/StatsByContentTypeTiktok'
        recentPosts:
          description: Recent Posts
          type: array
          items:
            $ref: '#/components/schemas/TikTokRecentPost'
        popularPosts:
          description: Popular Posts
          type: array
          items:
            $ref: '#/components/schemas/TikTokRecentPost'
        city:
          type: string
          example: New york
        state:
          type: string
          example: California
        gender:
          type: string
          example: FEMALE
          enum:
            - MALE
            - FEMALE
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyStat'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contacts'
        country:
          type: string
          example: US
        ageGroup:
          type: string
          example: 18-24
          enum:
            - 18-24
            - 25-34
            - 35-44
            - 45-64
            - 65-
        isPrivate:
          type: boolean
          example: true
        isVerified:
          type: boolean
          example: true
        postsCount:
          type: number
          example: 37
        avgLikes:
          type: number
          example: 18211
        totalLikes:
          type: number
          example: 182211
        avgComments:
          type: number
          example: 12321
        bio:
          type: string
          example: 'CEO of #RockTok'
        interests:
          type: array
          items:
            $ref: '#/components/schemas/Interest'
        lookalikes:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceExtra:
          $ref: '#/components/schemas/AudienceExtraReportData'
        sponsoredPosts:
          type: array
          items:
            $ref: '#/components/schemas/TiktokSponsoredPost'
        paidPostPerformance:
          type: number
          example: 0.5
        paidPostPerformanceViews:
          type: number
          example: 37
        sponsoredPostsMedianViews:
          type: number
          example: 3127
        sponsoredPostsMedianLikes:
          type: number
          example: 3743
        nonSponsoredPostsMedianViews:
          type: number
          example: 267
        nonSponsoredPostsMedianLikes:
          type: number
          example: 367
      required:
        - userId
        - secUid
        - statHistory
        - isPrivate
        - isVerified
        - postsCount
        - avgLikes
        - totalLikes
        - avgComments
        - bio
        - interests
        - lookalikes
        - sponsoredPosts
        - paidPostPerformanceViews
        - sponsoredPostsMedianViews
        - sponsoredPostsMedianLikes
        - nonSponsoredPostsMedianViews
        - nonSponsoredPostsMedianLikes
    TikTokReport:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        profile:
          $ref: '#/components/schemas/TikTokReportProfile'
      required:
        - profile
    YoutubeSort:
      type: object
      properties:
        field:
          type: string
          example: followers
          default: followers
          description: "Note: The following sort options are available only when the corresponding filter is applied: `keywords` `audienceGeo` `audienceLang` `audienceGender` `audienceAge` `followersGrowth` `viewsGrowth`. <br />\n\t\tSorting field in which order you want to get the results."
          enum:
            - engagements
            - followers
            - engagementRate
            - keywords
            - audienceGeo
            - audienceLang
            - audienceGender
            - audienceAge
            - relevance
            - followersGrowth
            - views
            - viewsGrowth
        value:
          type: number
          example: 123
          description: Only required for ```audienceGeo``` sorting.
        direction:
          type: string
          example: desc
          default: desc
          description: Sorting direction
          enum:
            - asc
            - desc
      required:
        - field
    YoutubeFilterOperations:
      type: object
      properties:
        operator:
          type: string
          description: >-
            Logical operations used to combine filters.<br><i>Note: To use the
            `or` operator, you must apply it to at least two filters.</i>
          enum:
            - and
            - or
            - not
        filter:
          type: string
          description: >-
            Filter to apply the operation on. If `keywords` or `relevance` are
            specified then you can not sort by these fields.
          enum:
            - followers
            - engagements
            - engagementRate
            - lastposted
            - bio
            - keywords
            - relevance
            - language
            - gender
            - age
            - location
            - isVerified
            - isOfficialArtist
            - views
      required:
        - operator
        - filter
    YouTubeSearchInfluencerFilters:
      type: object
      properties:
        followers:
          example:
            min: 20000
            max: 70000
          description: >-
            We round followers value in the filter: whenever it's below 5k, we
            round it to the nearest thousand (4123 -> 4000; 4800-> 5000); when
            it's over 5k, we round it to the nearest 5,000 (27k -> 25k; 28k ->
            30k).
          allOf:
            - $ref: '#/components/schemas/FollowersCount'
        engagementRate:
          type: number
          description: Minimum engagement rate.
          maximum: 1
          minimum: 0
          example: 0.02
        location:
          example:
            - 148838
            - 62149
            - 80500
            - 1428125
            - 304716
          description: >-
            Filter by Influencer Location, You can get the locations with our
            locations api end point and send location ids in an array.
          maxItems: 20
          type: array
          items:
            type: number
        language:
          type: string
          example: en
          description: >-
            Filter by Influencer Language, You can get the languages code with
            our languages api end point.
          minLength: 1
          maxLength: 2
        lastposted:
          type: number
          example: 90
          description: >-
            Idenitfy influencers based on when they last posted. The number
            represents days and should be >= 30.
          minimum: 30
        relevance:
          example:
            - '#cars'
            - '@topgear'
          description: >-
            Filter by topic of influencers posts or by similarity of topic to
            other influencer. For example "#cars #audi @topgear" means "Writing
            about #cars and #audi, has similar topic as @topgear account."
            <strong>You can only enter 100 usernames.</strong>
          type: array
          items:
            type: string
        audienceRelevance:
          example:
            - '@topgear'
          description: >-
            Filter by similarity of influencer's audience to another
            influencer's audience. For example "@topgear" means "Has audience
            similar to @topgear account." Audience similarity means followers
            follow accounts with the same topics as those followed by @topgear's
            audience.
          type: array
          items:
            type: string
        gender:
          type: string
          example: MALE
          description: Filter by Influencer gender.
          enum:
            - MALE
            - FEMALE
            - KNOWN
            - UNKNOWN
        age:
          description: >-
            Filter by Influencer age, possible values are: 18, 25, 35, 45, 65.
            You have the option to utilize either the `min` field, the `max`
            field, or both concurrently. <strong>Any number that falls outside
            the accepted range will be disregarded.</strong>
          allOf:
            - $ref: '#/components/schemas/InfluencerAgeRange'
        followersGrowthRate:
          description: Growth rate by followers over a period of time.
          example:
            interval: i6months
            value: 0.01
            operator: gt
          allOf:
            - $ref: '#/components/schemas/GrowthFilter'
        bio:
          type: string
          example: photos videos
          description: Search influencer by their bio description and/or full name
        views:
          description: Filter by average views.
          allOf:
            - $ref: '#/components/schemas/ViewsCount'
        hasContactDetails:
          description: If Influencer has contact details.
          type: array
          items:
            $ref: '#/components/schemas/ContactFilter'
        keywords:
          type: string
          description: >-
            Identify influencers by a phrase they use when speaking in their
            videos.
          example: cats
        isVerified:
          type: boolean
          description: Set to `true` to filter by verified influencers.
        isOfficialArtist:
          type: boolean
          description: Filter by isOfficialArtist.
        viewsGrowthRate:
          description: Growth rate by total views over a period of time.
          example:
            interval: i1month
            value: 0.2
            operator: gt
          allOf:
            - $ref: '#/components/schemas/GrowthFilter'
        engagements:
          description: >-
            Filter by engagements count. <i>Pro tip: set `max` to 0 if you want
            to see results with hidden likes.</i>
          allOf:
            - $ref: '#/components/schemas/EngagementsCount'
        filterOperations:
          description: >-
            Modify filter operation to use `and`, `or`, or `not`. Example:
            Search for <i>influencer using the keyword *cars* AND `not` from the
            London</i> or <i>Female `or` interested in Beauty &
            Cosmetics</i>.<br><i>If no operator is specified, the default
            operator applied is the `and` operator.</i>
          type: array
          items:
            $ref: '#/components/schemas/YoutubeFilterOperations'
    YouTubeSearchAudienceFilters:
      type: object
      properties:
        location:
          example:
            - id: 148838
              weight: 0.2
            - id: 62149
              weight: 0.2
            - id: 80500
              weight: 0.2
            - id: 1428125
              weight: 0.2
            - id: 304716
              weight: 0.2
          description: >-
            Filter by Audience Location, You can get the locations with our
            locations api end point and send location ids in an array together
            with their weight percentages. The default percentage is set to 20%
            (0.2)
          type: array
          items:
            $ref: '#/components/schemas/LocationWeightedFilter'
        language:
          example:
            id: en
            weight: 0.2
          description: >-
            Filter by Audience Language, You can get the languages code with our
            languages api end point and send the location id within an object,
            together with the weight percentage. The default percentage is set
            to 20% (0.2)
          allOf:
            - $ref: '#/components/schemas/LanguageWeightedFilter'
        gender:
          example:
            id: MALE
            weight: 0.5
          description: >-
            Filter by gender specific Audience, You can send the gender together
            with the weight percentage. The default percentage is set to 50%
            (0.5)
          allOf:
            - $ref: '#/components/schemas/GenderWeightedFilter'
        age:
          example:
            - id: 18-24
              weight: 0.3
            - id: 65-
              weight: 0.3
          description: >-
            Filter by Audience age. You can send the age together with the
            weight percentage. The default percentage is set to 30% (0.3)
          type: array
          items:
            $ref: '#/components/schemas/AgeWeightedFilter'
        ageRange:
          example:
            min: '18'
            max: '24'
            weight: 0.3
          description: >-
            Filter by audience age range. You can send the age range together
            with the weight percentage. The default percentage is set to 30%
            (0.3). You can't send both age and ageRange together.
          allOf:
            - $ref: '#/components/schemas/AudienceAgeRange'
    YouTubeSearchFilters:
      type: object
      properties:
        influencer:
          $ref: '#/components/schemas/YouTubeSearchInfluencerFilters'
        audience:
          $ref: '#/components/schemas/YouTubeSearchAudienceFilters'
    YouTubeSearchBody:
      type: object
      properties:
        page:
          type: number
          description: Page number
          default: 0
          minimum: 0
          maximum: 665
        calculationMethod:
          type: string
          example: median
          default: median
          description: >-
            If specified, this indicates the method used to compute
            average-based metrics, such as average number of likes, comments,
            shares, etc.
          enum:
            - median
            - average
        sort:
          description: Sorting
          allOf:
            - $ref: '#/components/schemas/YoutubeSort'
        filter:
          $ref: '#/components/schemas/YouTubeSearchFilters'
    YoutubeProfileResponse:
      type: object
      properties:
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        username:
          type: string
          description: Username of Influencer
          example: instagram
        url:
          type: string
          description: Profile URL
          example: https://www.instagram.com/instagram/
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/22159423_1794482210565499_9190891265074397184_n.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
        engagementRate:
          type: number
          description: Engagement rate
          example: 0.0027362938100525414
        averageViews:
          type: number
          example: 98124
        handle:
          type: string
          example: tseries
          description: Unique and short YouTube channel identifier
      required:
        - username
        - url
        - picture
        - followers
        - engagements
        - engagementRate
        - averageViews
    YoutubeInfluencerResponse:
      type: object
      properties:
        userId:
          type: string
          description: User Id
          example: '173560420'
        profile:
          description: Profile info of influencer
          allOf:
            - $ref: '#/components/schemas/YoutubeProfileResponse'
        match:
          description: Sorting match info
          allOf:
            - $ref: '#/components/schemas/Match'
      required:
        - userId
        - profile
    YoutubeSearchResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        total:
          type: number
          description: Number of results
          example: 2
        lookalikes:
          description: Lookalikes
          type: array
          items:
            $ref: '#/components/schemas/YoutubeInfluencerResponse'
        directs:
          description: Directs
          type: array
          items:
            $ref: '#/components/schemas/YoutubeInfluencerResponse'
        isExactMatch:
          type: boolean
          description: >-
            Are the results exactly matching the filters you provided? If we
            don't find exact results then we try to show similar users by
            automatically removing some filters for you.
          example: true
      required:
        - total
        - lookalikes
        - directs
        - isExactMatch
    YoutubeReportAudience:
      type: object
      properties:
        notable:
          type: number
          example: 0.07
        genders:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        geoCountries:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCodeName'
        ages:
          type: array
          items:
            $ref: '#/components/schemas/WeightWithCode'
        gendersPerAge:
          type: array
          items:
            $ref: '#/components/schemas/GenderPerAge'
        languages:
          type: array
          items:
            $ref: '#/components/schemas/AudienceLanguage'
        notableUsers:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceLookalikes:
          type: array
          items:
            $ref: '#/components/schemas/User'
      required:
        - notable
        - genders
        - geoCountries
        - ages
        - gendersPerAge
        - languages
        - notableUsers
        - audienceLookalikes
    ContentTypeStatsYoutube:
      type: object
      properties:
        engagements:
          type: number
          example: 0
        engagementRate:
          type: number
          example: 0
        avgLikes:
          type: number
          example: 0
        avgComments:
          type: number
          example: 0
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/ContentTypeStatsHistory'
        avgViews:
          type: number
          example: 0
        avgPosts4weeks:
          type: number
          example: 0
    StatsByContentTypeYoutube:
      type: object
      properties:
        all:
          example: {}
          description: All content type stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsYoutube'
        videos:
          example: {}
          description: Videos stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsYoutube'
        shorts:
          example: {}
          description: Shorts stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsYoutube'
        streams:
          example: {}
          description: Streams stats
          allOf:
            - $ref: '#/components/schemas/ContentTypeStatsYoutube'
    YoutubeRecentPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        video:
          type: string
        thumbnail:
          type: string
        type:
          type: string
        title:
          type: string
      required:
        - id
        - text
        - url
        - created
        - thumbnail
        - type
        - title
    YoutubeSponsoredPost:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        url:
          type: string
        created:
          type: string
        likes:
          type: number
        comments:
          type: number
        views:
          type: number
        video:
          type: string
        thumbnail:
          type: string
        type:
          type: string
        title:
          type: string
        sponsors:
          type: array
          items:
            $ref: '#/components/schemas/PostSponsor'
      required:
        - id
        - text
        - url
        - created
        - thumbnail
        - type
        - title
    YouTubeReportProfile:
      type: object
      properties:
        userId:
          type: string
          description: User Id
          example: '173560420'
        profile:
          description: Influencer Profile
          allOf:
            - $ref: '#/components/schemas/YoutubeProfileResponse'
        audience:
          description: Audience data
          allOf:
            - $ref: '#/components/schemas/YoutubeReportAudience'
        statsByContentType:
          description: User stats separated by content type
          allOf:
            - $ref: '#/components/schemas/StatsByContentTypeYoutube'
        recentPosts:
          description: Recent Posts
          type: array
          items:
            $ref: '#/components/schemas/YoutubeRecentPost'
        popularPosts:
          description: Popular Posts
          type: array
          items:
            $ref: '#/components/schemas/YoutubeRecentPost'
        city:
          type: string
          example: New york
        state:
          type: string
          example: California
        gender:
          type: string
          example: FEMALE
          enum:
            - MALE
            - FEMALE
        statHistory:
          type: array
          items:
            $ref: '#/components/schemas/MonthlyStat'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contacts'
        country:
          type: string
          example: US
        ageGroup:
          type: string
          example: 18-24
          enum:
            - 18-24
            - 25-34
            - 35-44
            - 45-64
            - 65-
        isVerified:
          type: boolean
          example: true
        postsCount:
          type: number
          example: 37
        avgLikes:
          type: number
          example: 18211
        totalViews:
          type: number
          example: 1821211
        avgComments:
          type: number
          example: 12321
        description:
          type: string
          example: 'CEO of #RockTok'
        interests:
          type: array
          items:
            $ref: '#/components/schemas/Interest'
        audienceCommenters:
          $ref: '#/components/schemas/YoutubeReportAudience'
        lookalikesByTopics:
          type: array
          items:
            $ref: '#/components/schemas/User'
        audienceExtra:
          $ref: '#/components/schemas/AudienceExtraReportData'
        sponsoredPosts:
          type: array
          items:
            $ref: '#/components/schemas/YoutubeSponsoredPost'
        paidPostPerformance:
          type: number
          example: 0.5
        paidPostPerformanceViews:
          type: number
          example: 37
        sponsoredPostsMedianViews:
          type: number
          example: 3127
        sponsoredPostsMedianLikes:
          type: number
          example: 3743
        nonSponsoredPostsMedianViews:
          type: number
          example: 267
        nonSponsoredPostsMedianLikes:
          type: number
          example: 367
      required:
        - userId
        - statHistory
        - postsCount
        - avgLikes
        - totalViews
        - avgComments
        - description
        - interests
        - audienceCommenters
        - lookalikesByTopics
        - sponsoredPosts
        - paidPostPerformanceViews
        - sponsoredPostsMedianViews
        - sponsoredPostsMedianLikes
        - nonSponsoredPostsMedianViews
        - nonSponsoredPostsMedianLikes
    YouTubeReport:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        profile:
          $ref: '#/components/schemas/YouTubeReportProfile'
      required:
        - profile
    YoutubeUserInfluencer:
      type: object
      properties:
        userId:
          type: string
          example: '232192182'
          description: User Id
        username:
          type: string
          example: therock
          description: Username
        fullname:
          type: string
          example: therock
          description: User's full name
        picture:
          type: string
          example: >-
            https://imgigp.modash.io/v2?mb0KwpL92uYofJiSjDn1%2F6peL1lBwv3s%2BUvShHERlDbrEEwrWumIvR20xZeZXa0LDeIrcniqZeG9S%2F1a5s2Rx3FZdXrWpY%2BmSBJp1l%2FmBGon3rcHA4EfuatZqMhVBzAT
          description: User's profile image URL
        followers:
          type: number
          example: 313583625
          description: User's number of followers
        isVerified:
          type: boolean
          example: true
          description: User has verified badge
        handle:
          type: string
          example: tseries
          description: Unique and short YouTube channel identifier
      required:
        - userId
        - username
        - fullname
        - picture
        - followers
        - isVerified
    YoutubeListUsersResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        users:
          type: array
          items:
            $ref: '#/components/schemas/YoutubeUserInfluencer'
      required:
        - users
    EmailsSearchBody:
      type: object
      properties:
        emails:
          description: List of emails to search
          minItems: 1
          maxItems: 1000
          type: array
          items:
            type: string
      required:
        - emails
    MatchedEmailUser:
      type: object
      properties:
        platform:
          type: string
          description: Platform
          example: instagram
        userId:
          type: string
          description: User id of the influencer
          example: '173560420'
        url:
          type: string
          description: URL of Influencer
          example: https://www.instagram.com/instagram/
        username:
          type: string
          description: Username of Influencer
          example: instagram
        fullname:
          type: string
          description: Full name of Influencer
          example: Instagram
        picture:
          type: string
          description: Profile Picture
          example: >-
            https://imgigp.modash.io/?https://scontent-arn2-1.cdninstagram.com/t51.2885-19/s320x320/3232323.jpg
        followers:
          type: number
          description: Follower count
          example: 313560626
        engagements:
          type: number
          description: Engagements
          example: 857994
        engagementRate:
          type: number
          description: Engagement rate
          example: 0.0027362938100525414
        isVerified:
          type: boolean
          description: Is verified
          example: true
      required:
        - platform
        - url
        - username
        - picture
        - followers
        - engagements
        - engagementRate
        - isVerified
    MatchedEmail:
      type: object
      properties:
        email:
          type: string
          description: Email address
          example: example@modash.io
        users:
          description: User details
          type: array
          items:
            $ref: '#/components/schemas/MatchedEmailUser'
      required:
        - email
        - users
    EmailsSearchResponse:
      type: object
      properties:
        error:
          type: boolean
          description: If there is an error
          example: false
        matchedEmails:
          description: Matches by email
          type: array
          items:
            $ref: '#/components/schemas/MatchedEmail'
        notMatchedEmails:
          description: Emails that were not matched
          type: array
          items:
            type: string
        totalMatches:
          type: number
          description: Number of matched emails
          example: 1
      required:
        - totalMatches
security:
  - accessToken: []
