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

# AI Search

> Find creators from a natural-language brief on Instagram, TikTok, or YouTube.

Finds creators from a natural-language brief instead of a seed account. `platform` and `query` are required; add `limit` (1–100, default 40) and the same optional `filters` as [Similar Creators](/docs/api-reference/waveinflu/post_waveinflu-similar) — regions, languages, follower and play-count ranges, gender, ethnicity, creator type, face visibility, and workspace deduplication.

Describe the creators you want in plain language (for example, `"beauty creators in the US"`) and the response returns matching creators in the same rich shape as Similar Creators: `id`, `username`, `fullName`, `biography`, `email`, `followerCount`, `averagePlayCount` / `medianPlayCount`, `averageEngagementRate` / `medianEngagementRate`, `region`, `language`, AI-inferred `gender`, `ageRange`, `ethnicity`, `faceVisibility`, `accountPositioning` tags, an `aiDescription`, `profileUrl`, and a relevance `score`. Results are sorted by `score` descending.

Have a specific seed account instead of a brief? Use [`post_waveinflu_similar_creators`](/docs/api-reference/waveinflu/post_waveinflu-similar). Most matches already include an `email`; use [`post_waveinflu_email_lookup`](/docs/api-reference/waveinflu/post_waveinflu-email-lookup) for the ones that come back null.

Billing is per delivered creator (`data.count`).

## Example

<CodeGroup>
  ```bash REST theme={null}
  curl -X POST "https://api.aisa.one/apis/v1/waveinflu/ai-search" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
          "platform": "instagram",
          "query": "beauty creators in the US",
          "limit": 10
        }'
  ```

  ```jsonc MCP theme={null}
  // Copy this whole block into Claude Code, Codex, Cursor or any coding agent.
  // It carries everything needed to connect, authorize and run this example —
  // no key to paste, one click of Allow in the browser.
  {
    "operation_id": "post_waveinflu_ai_search",
    "arguments": {
      "platform": "instagram",
      "query": "beauty creators in the US",
      "limit": 10
    },
    "max_price_usd": 0.5
  }
  // ── for the agent ─────────────────────────────────────────────────────────
  // Register the AIsa MCP server, then call its `use` tool with the JSON above.
  //   name       aisa
  //   endpoint   https://mcp.aisa.one/mcp
  //   transport  streamable-http
  //   auth       OAuth. The server publishes RFC 9728 metadata, so open a
  //              browser and the user clicks Allow once — nothing to paste.
  //              If AISA_API_KEY is set, send it as a bearer header instead.
  // Use your own MCP mechanism, not a hand-edited config file:
  //   Codex        codex mcp add aisa --url https://mcp.aisa.one/mcp
  //   Claude Code  claude mcp add --transport http -s user aisa https://mcp.aisa.one/mcp
  //   Cursor / VS Code   a "url" entry for https://mcp.aisa.one/mcp in the MCP config
  // The server lists five tools over https://mcp.aisa.one/servers worth of APIs:
  // search, get_details, use, batch_use, list_categories. search and
  // get_details are free; use is billed per call and max_price_usd refuses
  // anything above the cap before spending. This operation's full contract —
  // every argument, the response shape, the price and the pitfalls — is at
  //   https://aisa.one/docs/api-reference/waveinflu/post_waveinflu-ai-search.md
  // Then run the call and show me the result.
  ```
</CodeGroup>

<Note>
  **First time?** Point any MCP client at `https://mcp.aisa.one/mcp` — Claude
  Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
  opens a browser, you click Allow once, and there is no key to paste. The
  commands per client, and what each call costs, are on
  [aisa.one/mcp](https://aisa.one/mcp#connect).
</Note>

[Set this endpoint up in your agent →](https://aisa.one/mcp?from=/api-reference/waveinflu/post_waveinflu-ai-search)


## OpenAPI

````yaml openapi/waveinflu.json POST /waveinflu/ai-search
openapi: 3.0.0
info:
  title: WaveInflu API
  version: 2.0.0
  description: >-
    WaveInflu creator-discovery APIs for Instagram, TikTok, and YouTube: Similar
    Creators (from a seed account), AI Search (from a natural-language brief),
    and Email Lookup (contact email for one creator).
servers:
  - url: https://api.aisa.one/apis/v1
security:
  - bearerAuth: []
paths:
  /waveinflu/ai-search:
    post:
      summary: AI Search
      description: >-
        Finds creators from a natural-language brief instead of a seed account.
        `platform` and `query` are required; add `limit` (1–100, default 40) and
        the same optional `filters` as Similar Creators. Describe the creators
        you want in plain language (for example, "beauty creators in the US")
        and the response returns matching creators in the same rich shape as
        Similar Creators — full profile metrics plus AI-inferred `gender`,
        `ageRange`, `ethnicity`, `faceVisibility`, `accountPositioning`,
        `aiDescription`, and a relevance `score`. Billing is per delivered
        creator (`data.count`).
      operationId: post_waveinflu_ai_search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - platform
                - query
              properties:
                platform:
                  type: string
                  enum:
                    - instagram
                    - tiktok
                    - youtube
                  description: Target platform.
                  example: instagram
                query:
                  type: string
                  description: >-
                    Natural-language description of the creators you are looking
                    for.
                  example: beauty creators in the US
                limit:
                  type: number
                  minimum: 1
                  maximum: 100
                  default: 40
                  description: >-
                    Maximum number of creators to return. Default 40, range
                    1–100. Caps the billed count.
                  example: 10
                filters:
                  $ref: '#/components/schemas/CreatorFilters'
      responses:
        '200':
          description: Creators returned
          content:
            application/json:
              schema:
                type: object
                properties:
                  requestId:
                    type: string
                    description: Request ID for support and monitoring.
                    example: req-b6l
                  billingRequestId:
                    type: string
                    description: Billing reference for this call, linked to your usage log.
                    example: 3f522b56-2bb4-426c-9b76-5c04c91a9cb3
                  data:
                    $ref: '#/components/schemas/CreatorSearchData'
components:
  schemas:
    CreatorFilters:
      type: object
      description: Optional filters applied before matching. All fields are optional.
      properties:
        regions:
          type: array
          items:
            type: string
          description: Creator regions (ISO country codes), e.g. ["US", "GB", "JP"].
        languages:
          type: array
          items:
            type: string
          description: Creator languages, e.g. ["en", "ja", "zh-cn"].
        minFollowers:
          type: number
          description: Minimum follower / subscriber count.
        maxFollowers:
          type: number
          description: Maximum follower / subscriber count.
        minPlayCount:
          type: number
          description: Minimum play / view count, measured by `playCountMetric`.
        maxPlayCount:
          type: number
          description: Maximum play / view count, measured by `playCountMetric`.
        playCountMetric:
          type: string
          enum:
            - median
            - average
          description: >-
            Whether `minPlayCount` / `maxPlayCount` are compared against the
            median or the average play count.
        genders:
          type: array
          items:
            type: string
          description: Inferred creator genders, e.g. ["female", "male"].
        ethnicities:
          type: array
          items:
            type: string
          description: Inferred creator ethnicities.
        creatorTypes:
          type: array
          items:
            type: string
          description: Creator account types, e.g. ["individual", "brand"].
        faceVisibilities:
          type: array
          items:
            type: string
          description: >-
            Face-visibility classifications, e.g. ["clear_face", "mixed",
            "no_face"].
        workspaceDeduplicationEnabled:
          type: boolean
          description: >-
            When true, creators already saved in your workspace are excluded
            from the results.
    CreatorSearchData:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/Creator'
          description: Matched creators, sorted by `score` descending.
        count:
          type: number
          description: >-
            Number of creators delivered. Billing is based on this delivered
            count.
          example: 2
    Creator:
      type: object
      description: >-
        A matched creator. Fields are consistent across Similar Creators and AI
        Search.
      properties:
        id:
          type: string
          description: Platform-side creator ID.
        username:
          type: string
          description: Creator handle (without the leading @).
        fullName:
          type: string
          description: Creator display name.
        biography:
          type: string
          description: Profile bio text.
        email:
          type: string
          nullable: true
          description: Contact email extracted from the profile, when available.
        followerCount:
          type: number
          description: Follower / subscriber count.
        region:
          type: string
          description: Creator region (ISO country code).
        language:
          type: string
          description: Primary content language.
        averagePlayCount:
          type: number
          description: Average play / view count across recent posts.
        medianPlayCount:
          type: number
          description: Median play / view count across recent posts.
        averageEngagementRate:
          type: number
          description: Average engagement rate (0–1).
        medianEngagementRate:
          type: number
          description: Median engagement rate (0–1).
        gender:
          type: string
          description: Inferred gender, or `unknown`.
        ageRange:
          type: string
          description: Inferred age range (e.g. `25_34`), or `unknown`.
        ethnicity:
          type: string
          description: Inferred ethnicity, or `unknown`.
        faceVisibility:
          type: string
          description: >-
            Face-visibility classification, e.g. `clear_face`, `mixed`,
            `no_face`.
        accountPositioning:
          type: array
          items:
            type: string
          description: >-
            Short AI-generated tags summarizing the creator's niche /
            positioning.
        aiDescription:
          type: string
          description: >-
            AI-generated summary of the creator's content, style, and typical
            visuals.
        platform:
          type: string
          description: 'Platform this creator belongs to: instagram, tiktok, or youtube.'
        profileUrl:
          type: string
          description: Creator profile URL.
        score:
          type: number
          description: Match relevance score (0–1), sorted descending.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````