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

# Filter projects

> Filter and screen crypto projects with a JSON body. Supports API key auth or x402 fallback.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/projects/filter
openapi: 3.1.0
info:
  title: Kanarie API
  description: >-
    Crypto content search, project intelligence, mindshare, fundamentals, and
    wallet data APIs.
  version: 1.0.0
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
servers:
  - url: https://api.kanarie.xyz
    description: Production
security:
  - bearerAuth: []
  - kanarieApiKey: []
tags:
  - name: Health
    description: Service health endpoints.
  - name: Content
    description: Search content and rank project or handle mentions.
  - name: Projects
    description: Search, filter, map, and analyze crypto projects.
  - name: Data
    description: Virality and fundamentals datasets.
  - name: Wallets
    description: Smart money and wallet PnL datasets.
paths:
  /api/v1/projects/filter:
    post:
      tags:
        - Projects
      summary: Filter projects
      description: >-
        Filter and screen crypto projects with a JSON body. Supports API key
        auth or x402 fallback.
      operationId: postProjectsFilter
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectFilterRequest'
            examples:
              direct:
                value:
                  filter_mode: direct
                  sort_by: trending
                  sort_direction: desc
                  timeframe: 4h
                  tradable_chains:
                    - solana
                  max_market_cap: 10
                  min_trader_change: 50
                  min_liquidity: 50000
                  limit: 20
              natural_language:
                value:
                  filter_mode: natural_language
                  instructions: >-
                    Find trending micro-cap Solana tokens with high trader
                    growth
                  limit: 20
      responses:
        '200':
          $ref: '#/components/responses/ProjectFilterSuccess'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    ProjectFilterRequest:
      type: object
      required:
        - filter_mode
      properties:
        filter_mode:
          $ref: '#/components/schemas/ProjectFilterMode'
        instructions:
          type: string
          minLength: 10
          description: Required when filter_mode is natural_language.
        sort_by:
          $ref: '#/components/schemas/ProjectFilterSort'
        sort_direction:
          $ref: '#/components/schemas/SortDirection'
        timeframe:
          $ref: '#/components/schemas/ProjectFilterTimeframe'
        tradable_chains:
          type: array
          items:
            $ref: '#/components/schemas/TradableChain'
        min_market_cap:
          type: number
          minimum: 0
          description: Minimum market cap in millions.
        max_market_cap:
          type: number
          minimum: 0
          description: Maximum market cap in millions.
        min_price_change:
          type: number
        max_price_change:
          type: number
        min_liquidity:
          type: number
          minimum: 0
        min_volume:
          type: number
          minimum: 0
        min_trader_count:
          type: number
          minimum: 0
        min_trader_change:
          type: number
        min_technical_score:
          type: number
          minimum: -100
          maximum: 100
        max_technical_score:
          type: number
          minimum: -100
          maximum: 100
        min_rsi:
          type: number
          minimum: 0
          maximum: 100
        max_rsi:
          type: number
          minimum: 0
          maximum: 100
        limit:
          type: integer
          minimum: 1
          maximum: 50
          default: 20
        page:
          type: integer
          minimum: 0
          default: 0
        include_attributes:
          type: array
          items:
            $ref: '#/components/schemas/ProjectAttribute'
          default:
            - developments
            - mindshare
            - market_data
        developments_limit:
          type: integer
          minimum: 1
          maximum: 10
          default: 3
        recent_content_limit:
          type: integer
          minimum: 1
          maximum: 25
          default: 10
        recent_content_days_back:
          type: integer
          minimum: 1
          maximum: 30
          default: 7
        ecosystems:
          type: array
          maxItems: 5
          items:
            type: string
        categories:
          type: array
          maxItems: 5
          items:
            type: string
    ProjectFilterMode:
      type: string
      enum:
        - natural_language
        - direct
    ProjectFilterSort:
      type: string
      enum:
        - trending
        - market_cap
        - price_change
        - traders
        - traders_change
        - volume
        - volume_change
        - buy_volume_ratio
        - quant_score
        - quant_score_change
        - mentions_24h
        - mentions_7d
        - mentions_change_24h
        - mentions_change_7d
    SortDirection:
      type: string
      enum:
        - asc
        - desc
    ProjectFilterTimeframe:
      type: string
      enum:
        - 4h
        - 24h
    TradableChain:
      type: string
      enum:
        - solana
        - ethereum
        - base
        - arbitrum
    ProjectAttribute:
      type: string
      enum:
        - developments
        - recent_content
        - technical_analysis
        - market_data
        - mindshare
        - detailed_description
        - metadata
    ProjectListResponse:
      type: object
      required:
        - success
        - projects
      properties:
        success:
          type: boolean
        error:
          type:
            - string
            - 'null'
        projects:
          type: array
          items:
            $ref: '#/components/schemas/ObjectAny'
        metadata:
          $ref: '#/components/schemas/ObjectAny'
      additionalProperties: true
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: string
        reason:
          type: string
      additionalProperties: true
    PaymentRequiredResponse:
      type: object
      required:
        - x402Version
        - error
        - accepts
      properties:
        x402Version:
          type: integer
          example: 2
        error:
          type: string
          example: Payment required
        accepts:
          type: array
          items:
            type: object
            additionalProperties: true
      additionalProperties: true
    RateLimitResponse:
      type: object
      required:
        - error
        - limit
        - plan
        - window
        - retryAfter
      properties:
        error:
          type: string
          example: Rate limit exceeded
        limit:
          type: integer
        plan:
          type: string
          enum:
            - free
            - casual
            - pro
            - enterprise
          example: casual
        window:
          type: string
          example: 15 minutes
        retryAfter:
          type: integer
          example: 900
    ObjectAny:
      type: object
      additionalProperties: true
  responses:
    ProjectFilterSuccess:
      description: Filtered project results.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProjectListResponse'
          examples:
            success:
              value:
                success: true
                error: null
                projects:
                  - project_id: 1
                    project_name: Jupiter
                    symbol: JUP
                    market_cap: 1200000000
                metadata:
                  filter_mode: direct
                  total_results: 1
                  limit: 20
    BadRequest:
      description: The request body or query parameters failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            validation:
              value:
                error: Validation failed
                details:
                  - limit must be a number between 1 and 100
    Unauthorized:
      description: The API key header is missing.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            missing:
              value:
                error: >-
                  Missing API key. Expected Authorization: Bearer <api-key> or
                  x-kanarie-api-key: <api-key>.
    PaymentRequired:
      description: >-
        x402 payment is required when no API key is present, API-key auth fails
        client-side checks, or an API key exceeds plan limits on an x402-enabled
        endpoint.
      headers:
        X-Payment-Required:
          description: Encoded x402 payment requirements.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaymentRequiredResponse'
    Forbidden:
      description: >-
        The API key is invalid, inactive, expired, or unauthorized for the
        request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            invalid:
              value:
                error: Invalid API key
    RateLimited:
      description: >-
        The API key exceeded a route limit on an API-key-only path. x402-enabled
        endpoints normally return payment requirements for over-limit requests.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitResponse'
    InternalError:
      description: The API encountered an internal error while processing the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            internal:
              value:
                error: Internal server error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Kanarie API key
      description: >-
        Preferred Kanarie API key authentication using Authorization: Bearer
        <api-key>.
      x-default: YOUR_KANARIE_API_KEY
    kanarieApiKey:
      type: apiKey
      in: header
      name: x-kanarie-api-key
      description: Kanarie API key header for current clients.
      x-default: YOUR_KANARIE_API_KEY

````