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

# Create filter

> Creates a filter. It starts active when the plan has a free active slot, otherwise inactive. Visibility defaults to shared_admins. Criteria keys left out take their defaults



## OpenAPI

````yaml post /filters
openapi: 3.0.4
info:
  title: Vollna API
  description: API for managing Upwork profiles, proposals, results, and filters
  version: 1.0.0
servers:
  - url: https://api.vollna.com/v1
security: []
tags:
  - name: Profiles
    description: Manage Upwork profiles
  - name: Proposals
    description: Access and manage Upwork proposals
  - name: Results
    description: View monitoring results and projects
  - name: Filters
    description: Manage monitoring filters
  - name: Auto Bidding
    description: Manage auto bidding jobs and setups
  - name: Account
    description: The token team's account, plan and meters
  - name: Invitations
    description: Upwork invitations
  - name: Projects
    description: Upwork jobs and their competition
  - name: AI Qualifier
    description: A filter's AI qualifier and its verdicts
  - name: Market Insights
    description: Upwork market analytics and saved searches
  - name: Proposal Templates
    description: Proposal templates and their results
paths:
  /filters:
    post:
      tags:
        - Filters
      summary: Create filter
      description: >-
        Creates a filter. It starts active when the plan has a free active slot,
        otherwise inactive. Visibility defaults to shared_admins. Criteria keys
        left out take their defaults
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                criteria:
                  $ref: '#/components/schemas/FilterCriteria'
                visibility:
                  type: string
                  description: Who on the team sees the filter
                  enum:
                    - shared_edit
                    - shared_view
                    - shared_admins
                    - private
                  default: shared_admins
              required:
                - name
      responses:
        '201':
          description: Filter created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    allOf:
                      - $ref: '#/components/schemas/FilterDetail'
                      - type: object
                        properties:
                          quota:
                            $ref: '#/components/schemas/FilterQuota'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          description: >-
            The plan's filter limit is reached, or the team's subscription is
            not active
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '403':
          description: The team has no active plan, or the visibility is not allowed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - apiToken: []
components:
  schemas:
    FilterCriteria:
      type: object
      description: >-
        Everything a filter matches on. A key left out takes its default.
        Unknown keys and wrong values are refused together, one message per
        field path
      properties:
        keywords:
          type: object
          properties:
            mode:
              type: string
              enum:
                - list
                - query
              default: list
            include:
              type: array
              description: Keywords in list mode
              items:
                type: string
            exclude:
              type: array
              description: Negative keywords. They count only while useNegative is on
              items:
                type: string
            query:
              type: string
              description: Boolean search query in query mode
              nullable: true
            useNegative:
              type: boolean
              default: false
            searchIn:
              type: object
              properties:
                title:
                  type: boolean
                  default: true
                description:
                  type: boolean
                  default: true
                skills:
                  type: boolean
                  default: true
            excludeIn:
              type: object
              properties:
                title:
                  type: boolean
                  default: true
                description:
                  type: boolean
                  default: true
                skills:
                  type: boolean
                  default: true
        budget:
          type: object
          properties:
            fixedMin:
              type: number
              nullable: true
            fixedMax:
              type: number
              description: Ignored unless above fixedMin
              nullable: true
            hourlyMin:
              type: number
              nullable: true
            hourlyMax:
              type: number
              description: Ignored unless above hourlyMin
              nullable: true
            includeHourly:
              type: boolean
              default: true
            includeFixed:
              type: boolean
              default: true
            hideWithoutBudget:
              type: boolean
              default: false
            filterByLowerRange:
              type: boolean
              default: false
        connects:
          type: object
          properties:
            min:
              type: integer
              nullable: true
            max:
              type: integer
              nullable: true
        descriptionChars:
          type: object
          properties:
            min:
              type: integer
              nullable: true
            max:
              type: integer
              nullable: true
        sites:
          type: object
          properties:
            include:
              type: array
              description: Site ids from GET /filters/reference-data
              items:
                type: integer
            exclude:
              type: array
              items:
                type: integer
            categories:
              type: object
              description: Site id => category ids. The site must be in include
              additionalProperties:
                type: array
                items:
                  type: integer
            categoriesExclude:
              type: object
              description: Site id => category ids. The site must be in exclude
              additionalProperties:
                type: array
                items:
                  type: integer
        client:
          type: object
          properties:
            paymentVerified:
              type: boolean
              default: false
            enterprise:
              type: boolean
              default: false
            totalSpentMin:
              type: number
              default: 0
            hiresMin:
              type: integer
              default: 0
            ratingMin:
              type: number
              default: 0
              minimum: 0
              maximum: 5
            reviewsMin:
              type: integer
              default: 0
            avgHourlyPaidMin:
              type: integer
              default: 0
            hireRateMin:
              type: integer
              default: 0
              minimum: 0
              maximum: 100
            rankMin:
              type: integer
              description: One of the clientRankMin values from GET /filters/reference-data
              enum:
                - 0
                - 1
                - 3
                - 4
                - 5
              default: 0
            registration:
              type: object
              properties:
                mode:
                  type: string
                  enum:
                    - specific
                    - floating
                  default: specific
                after:
                  type: string
                  description: YYYY-MM-DD, specific mode
                  format: date
                  nullable: true
                before:
                  type: string
                  description: YYYY-MM-DD, specific mode
                  format: date
                  nullable: true
                operator:
                  type: string
                  enum:
                    - more
                    - less
                  default: more
                value:
                  type: integer
                  description: 'Floating mode: how long ago'
                  nullable: true
                unit:
                  type: string
                  enum:
                    - days
                    - months
                  default: months
            locations:
              $ref: '#/components/schemas/FilterLocations'
        project:
          type: object
          properties:
            locations:
              $ref: '#/components/schemas/FilterLocations'
            languages:
              type: object
              properties:
                mode:
                  type: string
                  enum:
                    - include
                    - exclude
                  default: include
                codes:
                  type: array
                  description: ISO 639-1 codes
                  items:
                    type: string
            languageQualifications:
              type: object
              properties:
                include:
                  type: array
                  items:
                    type: string
                exclude:
                  type: array
                  items:
                    type: string
            usJobsMode:
              type: string
              enum:
                - include
                - exclude
                - only
              default: include
            ukJobsMode:
              type: string
              enum:
                - include
                - exclude
                - only
              default: include
        advancedPreferences:
          type: object
          description: >-
            talent_type, english_level, experience_level, duration and
            engagement take {value: 0 or 1}; has_screening_questions,
            has_attachments, is_featured_project, min_job_success_score and
            include_budget_placeholders take an integer
          additionalProperties: true
    FilterDetail:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        status:
          type: string
          enum:
            - active
            - paused
            - inactive
        visibility:
          type: string
          enum:
            - shared_edit
            - shared_view
            - shared_admins
            - private
        qualifier:
          type: object
          properties:
            enabled:
              type: boolean
            mode:
              type: string
              enum:
                - manual
                - automatic
            showOnlyQualified:
              type: boolean
            qualifierId:
              type: integer
              nullable: true
            name:
              type: string
              nullable: true
            prompt:
              type: string
              description: >-
                Cut at 4,000 characters; GET /filters/{id}/qualifier returns all
                of it
              nullable: true
            model:
              type: string
              nullable: true
        notificationsOn:
          type: boolean
        summary:
          type: object
          description: >-
            The criteria in readable form, with names for ids. Empty sections
            are left out
        criteria:
          $ref: '#/components/schemas/FilterCriteria'
    FilterQuota:
      type: object
      description: The team's filter limits
      properties:
        used:
          type: integer
          description: Filters the team has saved, in any status
        active:
          type: integer
          description: Active filters
        createLimit:
          type: integer
          description: Filters the plan allows
        activeLimit:
          type: integer
          description: Active filters the plan allows
        onTrial:
          type: boolean
    ServiceError:
      type: object
      properties:
        error:
          type: string
          description: Short error title
          example: Validation failed
        message:
          type: string
          description: What went wrong and what to send instead, written for the user
        fields:
          type: object
          description: >-
            Per-field messages keyed by dot path, when several fields fail at
            once
          additionalProperties:
            type: string
    FilterLocations:
      type: object
      properties:
        include:
          type: array
          items:
            $ref: '#/components/schemas/FilterLocation'
        exclude:
          type: array
          items:
            $ref: '#/components/schemas/FilterLocation'
        includeUnknown:
          type: boolean
          description: >-
            Keep jobs without a known country. Defaults to true for the client
            and false for the project
    Error:
      type: object
      properties:
        error:
          type: string
    FilterLocation:
      type: object
      properties:
        type:
          type: string
          enum:
            - country
            - region
            - subregion
        id:
          type: integer
          description: Id from GET /filters/reference-data
      required:
        - type
        - id
  responses:
    BadRequest:
      description: >-
        Invalid request. message says what to send instead; fields names each
        invalid field
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServiceError'
    Unauthorized:
      description: Missing or unknown API token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    TooManyRequests:
      description: More than 30 requests a minute. See Rate Limiting
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiToken:
      type: apiKey
      name: X-API-TOKEN
      in: header
      description: API token for authentication

````

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