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

# Create a placement

> Creates a new placement. Provide an application ID and placement details. Supports contingent, interim and retained placements. Retained placements require a fee and an unplaced retained search on the application’s job with a matching fee basis.



## OpenAPI

````yaml /api-reference/openapi.json post /placements
openapi: 3.1.0
info:
  title: Spott API Reference
  version: '0.1'
servers:
  - url: https://api.gospott.com
security: []
tags: []
paths:
  /placements:
    post:
      tags:
        - Placements
      summary: Create a placement
      description: >-
        Creates a new placement. Provide an application ID and placement
        details. Supports contingent, interim and retained placements. Retained
        placements require a fee and an unplaced retained search on the
        application’s job with a matching fee basis.
      operationId: createPlacement
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePlacementDto'
      responses:
        '201':
          description: Placement created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRecordResponseDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
        '400':
          description: >-
            Invalid placement dates, fee or related configuration. Retained
            placements require a fee, an unplaced retained search on the
            application’s job, and a matching fee basis.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
        '401':
          description: Unauthorized - invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
        '404':
          description: Application or related record not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlobalConflictApiErrorDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
        '429':
          description: >-
            Too Many Requests. The published limit for this endpoint is 600
            requests per minute per workspace. The limit in force for your
            workspace can differ from it in either direction — a workspace on a
            free trial can be capped lower, and a higher limit can be arranged
            through support — so the headers, not this number, are
            authoritative. Read the RateLimit-Policy response header for the
            quota actually in force and RateLimit for what is left of the
            current window; on a 429, Retry-After gives the seconds to wait.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionBaseDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            Retry-After:
              $ref: '#/components/headers/Retry-After'
        '500':
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerErrorDto'
          headers:
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
      security:
        - x-api-key: []
components:
  schemas:
    CreatePlacementDto:
      type: object
      properties:
        applicationId:
          type: string
          minLength: 1
        placedByUserId:
          type: string
          minLength: 1
        placedAtDate:
          $ref: '#/components/schemas/DateISO'
        extensionOfId:
          type: string
          minLength: 1
        templateId:
          type: string
          minLength: 1
        teamId:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        billingContactIds:
          maxItems: 50
          type: array
          items:
            type: string
            minLength: 1
        attributeValues:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementAttributeValueDto'
        details:
          $ref: '#/components/schemas/CreatePlacementDetailsDto'
      required:
        - applicationId
        - placedByUserId
        - placedAtDate
        - details
    CreateRecordResponseDto:
      type: object
      properties:
        id:
          type: string
          minLength: 1
      required:
        - id
    ExceptionBaseDto:
      type: object
      properties:
        status:
          type: integer
          minimum: -9007199254740991
          maximum: 9007199254740991
        category:
          $ref: '#/components/schemas/ApiErrorCategoryDto'
        message:
          type: string
        requestId:
          type: string
      required:
        - status
        - message
        - requestId
    GlobalConflictApiErrorDto:
      anyOf:
        - $ref: '#/components/schemas/ResourceAlreadyExistsApiErrorDto'
        - $ref: '#/components/schemas/ResourceLockTimeoutApiErrorDto'
    InternalServerErrorDto:
      type: object
      properties:
        status:
          type: number
          const: 500
        category:
          type: string
          enum:
            - INTERNAL_ERROR
        message:
          type: string
          enum:
            - Internal server error
        requestId:
          type: string
      required:
        - status
        - category
        - message
        - requestId
    DateISO:
      format: date-time
      anyOf:
        - type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
        - type: string
          format: date
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
    CreatePlacementAttributeValueDto:
      type: object
      properties:
        attributeDefinitionId:
          type: string
          minLength: 1
        value:
          $ref: '#/components/schemas/SharedCustomAttributeTypeRequestDto'
      required:
        - attributeDefinitionId
        - value
    CreatePlacementDetailsDto:
      oneOf:
        - $ref: '#/components/schemas/CreateContingentPlacementDetailsDto'
        - $ref: '#/components/schemas/CreateInterimPlacementDetailsDto'
        - $ref: '#/components/schemas/CreateRetainedPlacementDetailsDto'
    ApiErrorCategoryDto:
      type: string
      enum:
        - MALFORMED_REQUEST
        - SCHEMA_VALIDATION_FAILED
        - DOMAIN_VALIDATION_FAILED
        - OPERATION_LIMIT_EXCEEDED
        - AUTHENTICATION_REQUIRED
        - AUTHENTICATION_FAILED
        - SECURITY_CHALLENGE_REQUIRED
        - SECURITY_CHALLENGE_FAILED
        - PERMISSION_DENIED
        - ENTITLEMENT_REQUIRED
        - PROVIDER_AUTHENTICATION_REQUIRED
        - PROVIDER_AUTHENTICATION_FAILED
        - CONFIGURATION_REQUIRED
        - RESOURCE_NOT_FOUND
        - RESOURCE_ALREADY_EXISTS
        - RESOURCE_EXPIRED
        - RESOURCE_BUSY
        - RESOURCE_STATE_CONFLICT
        - QUOTA_EXCEEDED
        - RATE_LIMITED
        - UNSUPPORTED_OPERATION
        - UPSTREAM_REJECTED
        - TIMEOUT
        - TEMPORARILY_UNAVAILABLE
        - INTERNAL_ERROR
    ResourceAlreadyExistsApiErrorDto:
      type: object
      properties:
        status:
          type: number
          const: 409
        category:
          type: string
          enum:
            - RESOURCE_ALREADY_EXISTS
        message:
          type: string
          enum:
            - Resource already exists
        requestId:
          type: string
      required:
        - status
        - category
        - message
        - requestId
    ResourceLockTimeoutApiErrorDto:
      type: object
      properties:
        status:
          type: number
          const: 409
        category:
          type: string
          enum:
            - RESOURCE_BUSY
        message:
          type: string
          enum:
            - >-
              Lock could not be acquired for this resource, please try again
              later.
        requestId:
          type: string
      required:
        - status
        - category
        - message
        - requestId
    SharedCustomAttributeTypeRequestDto:
      oneOf:
        - $ref: '#/components/schemas/CustomTextTypeDto'
        - $ref: '#/components/schemas/CustomNumberTypeDto'
        - $ref: '#/components/schemas/CustomCheckboxTypeDto'
        - $ref: '#/components/schemas/CustomDateTypeDto'
        - $ref: '#/components/schemas/CustomTimestampTypeDto'
        - $ref: '#/components/schemas/CustomRatingTypeDto'
        - $ref: '#/components/schemas/CustomSelectTypeDto'
        - $ref: '#/components/schemas/CustomMultiSelectTypeRequestDto'
        - $ref: '#/components/schemas/CustomCurrencyTypeDto'
        - $ref: '#/components/schemas/CustomDateRangeTypeDto'
        - $ref: '#/components/schemas/CustomDurationTypeDto'
        - $ref: '#/components/schemas/CustomUrlTypeDto'
        - $ref: '#/components/schemas/CustomEntityTypeDto'
        - $ref: '#/components/schemas/CustomMultiEntityTypeRequestDto'
    CreateContingentPlacementDetailsDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - CONTINGENT
        startDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        fee:
          $ref: '#/components/schemas/CreateContingentPlacementFeeDto'
      required:
        - type
        - startDate
        - endDate
    CreateInterimPlacementDetailsDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - INTERIM
        startDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        fee:
          $ref: '#/components/schemas/CreateInterimPlacementFeeDto'
      required:
        - type
        - startDate
        - endDate
    CreateRetainedPlacementDetailsDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - RETAINED
        startDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
        fee:
          $ref: '#/components/schemas/CreateRetainedPlacementFeeDto'
      required:
        - type
        - startDate
        - endDate
        - fee
    CustomTextTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customText
        text:
          type:
            - string
            - 'null'
      required:
        - viewType
        - text
    CustomNumberTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customNumber
        number:
          type:
            - number
            - 'null'
      required:
        - viewType
        - number
    CustomCheckboxTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customCheckbox
        checked:
          type:
            - boolean
            - 'null'
      required:
        - viewType
        - checked
    CustomDateTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDate
        date:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - viewType
        - date
    CustomTimestampTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customTimestamp
        timestamp:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - viewType
        - timestamp
    CustomRatingTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customRating
        rating:
          type:
            - number
            - 'null'
      required:
        - viewType
        - rating
    CustomSelectTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customSelect
        select:
          type:
            - string
            - 'null'
      required:
        - viewType
        - select
    CustomMultiSelectTypeRequestDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customMultiSelect
        multiSelect:
          maxItems: 100
          type: array
          items:
            type: string
      required:
        - viewType
        - multiSelect
    CustomCurrencyTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customCurrency
        monetaryAmount:
          anyOf:
            - $ref: '#/components/schemas/MonetaryAmountDto'
            - type: 'null'
      required:
        - viewType
        - monetaryAmount
    CustomDateRangeTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDateRange
        dateRange:
          anyOf:
            - $ref: '#/components/schemas/DateRangeDto'
            - type: 'null'
      required:
        - viewType
        - dateRange
    CustomDurationTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customDuration
        duration:
          type:
            - number
            - 'null'
      required:
        - viewType
        - duration
    CustomUrlTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customUrl
        url:
          type:
            - string
            - 'null'
      required:
        - viewType
        - url
    CustomEntityTypeDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customEntity
        type:
          type: string
          enum:
            - user
        id:
          type:
            - string
            - 'null'
        entity:
          anyOf:
            - $ref: '#/components/schemas/UserBadgeDto'
            - type: 'null'
      required:
        - viewType
        - type
        - id
    CustomMultiEntityTypeRequestDto:
      type: object
      properties:
        viewType:
          type: string
          enum:
            - customMultiEntity
        type:
          type: string
          enum:
            - user
        ids:
          maxItems: 100
          type: array
          items:
            type: string
        entities:
          maxItems: 100
          type: array
          items:
            $ref: '#/components/schemas/UserBadgeDto'
      required:
        - viewType
        - type
        - ids
    CreateContingentPlacementFeeDto:
      oneOf:
        - $ref: '#/components/schemas/CreateContingentFlatPlacementFeeDto'
        - $ref: '#/components/schemas/CreateContingentPercentagePlacementFeeDto'
    CreateInterimPlacementFeeDto:
      type: object
      properties:
        splits:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementFeeSplitDto'
        unitType:
          type: string
          enum:
            - HOURLY
            - DAILY
            - WEEKLY
            - MONTHLY
        unitsOverride:
          type: number
          exclusiveMinimum: 0
          maximum: 100000
        schedule:
          $ref: '#/components/schemas/CreateInterimFeeScheduleDto'
        chargeRate:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
        payRate:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
      required:
        - splits
        - unitType
        - schedule
        - chargeRate
        - payRate
    CreateRetainedPlacementFeeDto:
      oneOf:
        - $ref: '#/components/schemas/CreateRetainedFlatPlacementFeeDto'
        - $ref: '#/components/schemas/CreateRetainedPercentagePlacementFeeDto'
    MonetaryAmountDto:
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/DmCurrency'
        amount:
          type: number
      required:
        - currency
        - amount
    DateRangeDto:
      type: object
      properties:
        startDate:
          $ref: '#/components/schemas/DateISO'
        endDate:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - startDate
        - endDate
    UserBadgeDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        avatarUrl:
          type:
            - string
            - 'null'
        deactivatedAt:
          anyOf:
            - $ref: '#/components/schemas/DateISO'
            - type: 'null'
      required:
        - id
        - name
        - avatarUrl
        - deactivatedAt
    CreateContingentFlatPlacementFeeDto:
      type: object
      properties:
        basis:
          type: string
          enum:
            - FLAT
        splits:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementFeeSplitDto'
        recognizedAt:
          $ref: '#/components/schemas/DateISO'
        amount:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
      required:
        - basis
        - splits
        - recognizedAt
        - amount
    CreateContingentPercentagePlacementFeeDto:
      type: object
      properties:
        basis:
          type: string
          enum:
            - PERCENTAGE
        splits:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementFeeSplitDto'
        recognizedAt:
          $ref: '#/components/schemas/DateISO'
        percentage:
          type: number
          minimum: 0
          maximum: 100
          description: Percentage from 0 to 100; 25 means 25%.
        baseSalary:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
      required:
        - basis
        - splits
        - recognizedAt
        - percentage
        - baseSalary
    CreatePlacementFeeSplitDto:
      type: object
      properties:
        userId:
          type: string
          minLength: 1
        percentage:
          type: number
          minimum: 0
          maximum: 1
          description: Fraction from 0 to 1; 0.25 means 25%. Splits must total 1.
      required:
        - userId
        - percentage
    CreateInterimFeeScheduleDto:
      oneOf:
        - $ref: '#/components/schemas/CreateInterimFeeDaysPerWeekScheduleDto'
        - $ref: '#/components/schemas/CreateInterimFeeWorkdaysScheduleDto'
    SupportedMonetaryAmountDto:
      type: object
      properties:
        amount:
          type: number
        currency:
          $ref: '#/components/schemas/DmSupportedCurrency'
      required:
        - amount
        - currency
    CreateRetainedFlatPlacementFeeDto:
      type: object
      properties:
        basis:
          type: string
          enum:
            - FLAT
        splits:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementFeeSplitDto'
        recognizedAt:
          $ref: '#/components/schemas/DateISO'
        amount:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
      required:
        - basis
        - splits
        - recognizedAt
        - amount
    CreateRetainedPercentagePlacementFeeDto:
      type: object
      properties:
        basis:
          type: string
          enum:
            - PERCENTAGE
        splits:
          minItems: 1
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/CreatePlacementFeeSplitDto'
        recognizedAt:
          $ref: '#/components/schemas/DateISO'
        actualBaseSalary:
          $ref: '#/components/schemas/SupportedMonetaryAmountDto'
        feePercentage:
          type: number
          minimum: 0
          maximum: 100
          description: Percentage from 0 to 100; 25 means 25%.
      required:
        - basis
        - splits
        - recognizedAt
        - actualBaseSalary
        - feePercentage
    DmCurrency:
      type: string
      enum:
        - AED
        - AFN
        - ALL
        - AMD
        - ANG
        - AOA
        - ARS
        - AUD
        - AWG
        - AZN
        - BAM
        - BBD
        - BDT
        - BGN
        - BHD
        - BIF
        - BMD
        - BND
        - BOB
        - BRL
        - BSD
        - BTC
        - BTN
        - BWP
        - BYN
        - BZD
        - CAD
        - CDF
        - CHF
        - CLF
        - CLP
        - CNH
        - CNY
        - COP
        - CRC
        - CUC
        - CUP
        - CVE
        - CZK
        - DJF
        - DKK
        - DOP
        - DZD
        - EGP
        - ERN
        - ETB
        - EUR
        - FJD
        - FKP
        - GBP
        - GEL
        - GGP
        - GHS
        - GIP
        - GMD
        - GNF
        - GTQ
        - GYD
        - HKD
        - HNL
        - HRK
        - HTG
        - HUF
        - IDR
        - ILS
        - IMP
        - INR
        - IQD
        - IRR
        - ISK
        - JEP
        - JMD
        - JOD
        - JPY
        - KES
        - KGS
        - KHR
        - KMF
        - KPW
        - KRW
        - KWD
        - KYD
        - KZT
        - LAK
        - LBP
        - LKR
        - LRD
        - LSL
        - LYD
        - MAD
        - MDL
        - MGA
        - MKD
        - MMK
        - MNT
        - MOP
        - MRU
        - MUR
        - MVR
        - MWK
        - MXN
        - MYR
        - MZN
        - NAD
        - NGN
        - NIO
        - NOK
        - NPR
        - NZD
        - OMR
        - PAB
        - PEN
        - PGK
        - PHP
        - PKR
        - PLN
        - PYG
        - QAR
        - RON
        - RSD
        - RUB
        - RWF
        - SAR
        - SBD
        - SCR
        - SDG
        - SEK
        - SGD
        - SHP
        - SLE
        - SLL
        - SOS
        - SRD
        - SSP
        - STD
        - STN
        - SVC
        - SYP
        - SZL
        - THB
        - TJS
        - TMT
        - TND
        - TOP
        - TRY
        - TTD
        - TWD
        - TZS
        - UAH
        - UGX
        - USD
        - UYU
        - UZS
        - VEF
        - VES
        - VND
        - VUV
        - WST
        - XAF
        - XAG
        - XAU
        - XCD
        - XCG
        - XDR
        - XOF
        - XPD
        - XPF
        - XPT
        - YER
        - ZAR
        - ZMW
        - ZWG
        - ZWL
    CreateInterimFeeDaysPerWeekScheduleDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - DAYS_PER_WEEK
        hoursPerDay:
          type: number
          exclusiveMinimum: 0
          maximum: 24
        daysPerWeek:
          type: number
          exclusiveMinimum: 0
          maximum: 7
      required:
        - type
        - hoursPerDay
        - daysPerWeek
    CreateInterimFeeWorkdaysScheduleDto:
      type: object
      properties:
        type:
          type: string
          enum:
            - WORKDAYS
        hoursPerDay:
          type: number
          exclusiveMinimum: 0
          maximum: 24
        workdays:
          minItems: 1
          maxItems: 7
          type: array
          items:
            type: string
            enum:
              - MONDAY
              - TUESDAY
              - WEDNESDAY
              - THURSDAY
              - FRIDAY
              - SATURDAY
              - SUNDAY
      required:
        - type
        - hoursPerDay
        - workdays
    DmSupportedCurrency:
      type: string
      enum:
        - EUR
        - GBP
        - USD
        - ZAR
        - AUD
        - CHF
        - SAR
        - AED
        - EGP
        - HUF
        - RON
        - BGN
        - CZK
        - PLN
        - NOK
        - SEK
        - DKK
        - CAD
        - HKD
        - JPY
        - THB
        - CNY
        - INR
        - SGD
        - MYR
        - QAR
        - PHP
        - LKR
        - KWD
        - PKR
        - MOP
        - IDR
        - VND
        - KRW
        - MXN
        - BRL
        - ARS
        - NZD
        - TWD
        - ILS
        - TRY
        - RUB
        - MDL
        - MUR
        - OMR
        - BAM
        - ISK
        - UAH
        - RSD
        - MKD
        - ALL
        - GEL
        - KZT
        - BHD
        - JOD
        - MAD
        - TND
        - NGN
        - KES
        - GHS
        - TZS
        - BDT
        - NPR
        - COP
        - CLP
        - PEN
        - CRC
  headers:
    RateLimit:
      description: >-
        Quota state for this endpoint, as an RFC 8941 structured field
        (draft-ietf-httpapi-ratelimit-headers). The quoted value names the
        policy — the operationId of the endpoint the counters belong to. `r` is
        how many requests are left in the current window, `t` how many seconds
        remain before it resets.
      schema:
        type: string
      example: '"getCandidates";r=417;t=23'
    RateLimit-Policy:
      description: >-
        The policy the RateLimit header reports against, as an RFC 8941
        structured field. `q` is the quota — the requests allowed per window —
        and `w` the window length in seconds. Limits are per endpoint, so the
        quota differs between operations. This is the quota in force for the
        calling workspace, which can be lower or higher than the default
        published on the operation; treat it as authoritative.
      schema:
        type: string
      example: '"getCandidates";q=600;w=60'
    Retry-After:
      description: >-
        Seconds to wait before retrying. Sent on 429 responses; it matches the
        `t` parameter of the RateLimit header.
      schema:
        type: integer
      example: 23
  securitySchemes:
    x-api-key:
      type: apiKey
      name: x-api-key
      in: header
      description: >-
        API key for authentication. Get your API key from Settings → API Keys in
        your Spott dashboard.

````

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