> ## 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 auto-bidding setup

> Creates a setup. It starts paused; switch it on with POST /auto-bidding/setups/{id}/activate. setup.activationProblems lists what still stops it from bidding



## OpenAPI

````yaml post /auto-bidding/setups
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:
  /auto-bidding/setups:
    post:
      tags:
        - Auto Bidding
      summary: Create auto-bidding setup
      description: >-
        Creates a setup. It starts paused; switch it on with POST
        /auto-bidding/setups/{id}/activate. setup.activationProblems lists what
        still stops it from bidding
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutoBiddingSetupInput'
      responses:
        '201':
          description: Setup created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutoBiddingSetupSaved'
        '400':
          description: A field is not valid. fields names it
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: >-
            Only team owners and admins can change auto-bidding, or auto-bidding
            is not approved for the team yet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - apiToken: []
components:
  schemas:
    AutoBiddingSetupInput:
      type: object
      description: >-
        Setup fields in camelCase. A field left out keeps its value; on a new
        setup it takes the default. Unknown fields, id and status are ignored
      properties:
        name:
          type: string
        enableManualTrigger:
          type: boolean
          description: Bid only on jobs sent by hand; then filterId is optional
        filterId:
          type: integer
          description: An active filter, from GET /auto-bidding/options
        templateId:
          type: integer
          description: One proposal template. Use biddingTemplates for an A/B test
        biddingTemplates:
          type: array
          description: Up to 5 templates. Two or more start an A/B test
          items:
            type: object
            properties:
              templateId:
                type: integer
              weight:
                type: integer
            required:
              - templateId
          maxItems: 5
        abAutoPromote:
          type: boolean
        abWinnerMetric:
          type: string
          enum:
            - reply_rate
            - view_rate
          default: reply_rate
        abStopCondition:
          type: string
          enum:
            - proposals
            - time
          default: proposals
        abStopProposals:
          type: integer
          minimum: 10
          maximum: 500
        abStopDays:
          type: integer
          minimum: 3
          maximum: 60
        schedule:
          type: string
          enum:
            - 24/7
            - custom_schedule
        customSchedule:
          type: array
          description: At least one slot on a custom schedule
          items:
            type: object
            properties:
              day:
                type: string
                enum:
                  - Mon
                  - Tue
                  - Wed
                  - Thu
                  - Fri
                  - Sat
                  - Sun
              hour:
                type: integer
                minimum: 0
                maximum: 23
        timezone:
          type: string
          description: IANA name, for example Europe/Kyiv
        enableBiddingDelay:
          type: boolean
        biddingDelay:
          type: integer
          description: Minutes
          minimum: 1
          maximum: 60
        enableDailyLimit:
          type: boolean
        dailyProposalsLimit:
          type: integer
          minimum: 1
          maximum: 50
        enableBoosting:
          type: boolean
        boostMode:
          type: string
          enum:
            - fixed
            - smart
        boostMaxBidAmount:
          type: integer
          description: Fixed mode, connects
          minimum: 1
          maximum: 999
        boostDailyConnectsLimit:
          type: integer
          minimum: 1
          maximum: 500
        boostCases:
          type: array
          description: 'Smart mode: 1 to 5 cases'
          items:
            type: object
            properties:
              condition:
                type: string
                maxLength: 500
              amount:
                type: integer
                minimum: 1
                maximum: 999
          maxItems: 5
        enableAiJobQualifier:
          type: boolean
        aiQualifierSource:
          type: string
          enum:
            - filter
            - custom
        aiJobQualifierPrompt:
          type: string
          description: >-
            With source custom. Source filter runs on the filter's prompt, which
            changes only on the filter
        aiJobQualifierModel:
          type: string
        enableCatchUpBidding:
          type: boolean
        maxJobAgeHours:
          type: integer
          description: null is no limit
          minimum: 1
          maximum: 72
          nullable: true
        enableNotifications:
          type: boolean
        preScreeningTelegramChatId:
          type: string
          nullable: true
        enablePreScreening:
          type: boolean
          description: Jobs wait for review before they are sent
        preScreeningTimeoutMinutes:
          type: integer
          minimum: 15
          maximum: 480
        preScreeningTimeoutAction:
          type: string
          enum:
            - approve
            - skip
        applyIfAlreadyAppliedByAnotherBidder:
          type: boolean
        notifyDisqualifiedJobs:
          type: boolean
        roomInviteSettings:
          type: object
          properties:
            mode:
              type: string
              enum:
                - disabled
                - custom
            members:
              type: array
              items:
                type: object
                properties:
                  personUid:
                    type: string
                  role:
                    type: string
                    enum:
                      - admin
                      - participant
          nullable: true
          description: null uses the team-wide settings
    AutoBiddingSetupSaved:
      type: object
      properties:
        status:
          type: string
          example: saved
        setup:
          $ref: '#/components/schemas/AutoBiddingSetupView'
        abTestRestarted:
          type: boolean
          description: A new template set started a fresh A/B test
    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
    AutoBiddingSetupView:
      type: object
      description: >-
        An auto-bidding setup in full, as the setup write endpoints return it.
        Dates are UTC
      properties:
        id:
          type: integer
        name:
          type: string
        status:
          type: string
          enum:
            - active
            - paused
            - inactive
            - draft
        archived:
          type: boolean
        priority:
          type: integer
          description: Lower bids first when two setups match the same job
        manualTriggerOnly:
          type: boolean
        filter:
          type: object
          properties:
            id:
              type: integer
            name:
              type: string
          nullable: true
        templates:
          type: array
          description: Proposal templates with their A/B weights
          items:
            type: object
            properties:
              id:
                type: integer
              name:
                type: string
                nullable: true
              weight:
                type: integer
        abTest:
          type: object
          properties:
            status:
              type: string
              enum:
                - running
                - completed
            metric:
              type: string
              enum:
                - reply_rate
                - view_rate
            winnerTemplateId:
              type: integer
              nullable: true
            startedAt:
              type: string
              format: date-time
              nullable: true
            stopAt:
              type: string
              format: date-time
              nullable: true
          nullable: true
        schedule:
          type: string
          enum:
            - 24/7
            - custom
        timezone:
          type: string
        biddingDelayMinutes:
          type: integer
        dailyProposalsLimit:
          type: integer
          nullable: true
        proposalsToday:
          type: integer
        boosting:
          type: object
          properties:
            enabled:
              type: boolean
            mode:
              type: string
              enum:
                - fixed
                - smart
            cases:
              type: array
              items:
                type: object
                properties:
                  condition:
                    type: string
                  amount:
                    type: integer
            maxBid:
              type: integer
              nullable: true
            dailyConnectsLimit:
              type: integer
              nullable: true
        qualifier:
          type: object
          properties:
            enabled:
              type: boolean
            source:
              type: string
              enum:
                - filter
                - qualifier
                - custom
              nullable: true
            id:
              type: integer
              nullable: true
            name:
              type: string
              nullable: true
        preScreening:
          type: object
          properties:
            enabled:
              type: boolean
            timeoutMinutes:
              type: integer
              nullable: true
            timeoutAction:
              type: string
              enum:
                - approve
                - skip
              nullable: true
        activationProblems:
          type: array
          description: >-
            What stops the setup from bidding if it were switched on now. Empty
            means it would bid
          items:
            type: string
        customSchedule:
          type: array
          items:
            type: object
            properties:
              day:
                type: string
              hour:
                type: integer
          nullable: true
          description: Only on a custom schedule
        catchUpBidding:
          type: boolean
        maxJobAgeHours:
          type: integer
          nullable: true
        qualifierPrompt:
          type: string
          description: Cut at 4,000 characters
          nullable: true
        qualifierModel:
          type: string
          nullable: true
        notifications:
          type: object
          properties:
            enabled:
              type: boolean
            telegramConnected:
              type: boolean
            slackChannel:
              type: string
              nullable: true
            notifyDisqualifiedJobs:
              type: boolean
        applyIfAlreadyAppliedByAnotherBidder:
          type: boolean
        roomInviteSettings:
          type: object
          description: null uses the team-wide room invite settings
          nullable: true
        totalProposalsSent:
          type: integer
        abHistory:
          type: array
          items:
            type: object
            description: >-
              A finished A/B test: status, metric, endReason, winnerTemplateId,
              startedAt, endedAt, templates and results
    Error:
      type: object
      properties:
        error:
          type: string
  responses:
    Unauthorized:
      description: Missing or unknown API token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    PaymentRequired:
      description: The team's subscription is not active
      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.