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

# Media Quote



## OpenAPI

````yaml /openapi.json post /api/v1/brands/{brand_id}/google-ads/strategies/{strategy_id}/media/quote
openapi: 3.1.0
info:
  title: AITasker
  version: 0.1.0
servers: []
security: []
paths:
  /api/v1/brands/{brand_id}/google-ads/strategies/{strategy_id}/media/quote:
    post:
      tags:
        - Google Ads Create
      summary: Media Quote
      operationId: >-
        media_quote_api_v1_brands__brand_id__google_ads_strategies__strategy_id__media_quote_post
      parameters:
        - name: brand_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Brand Id
        - name: strategy_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Strategy Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleMediaRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GoogleStrategyQuote'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    GoogleMediaRequest:
      properties:
        baseRevision:
          type: integer
          minimum: 1
          title: Baserevision
        selections:
          items:
            $ref: '#/components/schemas/GoogleMediaSelection'
          type: array
          maxItems: 200
          minItems: 1
          title: Selections
      additionalProperties: false
      type: object
      required:
        - baseRevision
        - selections
      title: GoogleMediaRequest
    GoogleStrategyQuote:
      properties:
        quoteId:
          type: string
          format: uuid
          title: Quoteid
        operation:
          type: string
          enum:
            - initial_strategy
            - single_ad_text
            - text_revision
            - media_batch
            - export
          title: Operation
        selection:
          $ref: '#/components/schemas/StrategySelection-Output'
        context:
          $ref: '#/components/schemas/ContextSnapshotRef'
        envelope:
          $ref: '#/components/schemas/ScopeEnvelope'
        expiresAt:
          type: string
          format: date-time
          title: Expiresat
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        totalAmount:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Totalamount
        strategyUnits:
          type: integer
          maximum: 1
          minimum: 0
          title: Strategyunits
        remainingStrategyUnits:
          type: integer
          minimum: 0
          title: Remainingstrategyunits
        renewsAt:
          type: string
          format: date-time
          title: Renewsat
        lineItems:
          items:
            $ref: '#/components/schemas/QuoteLineItem'
          type: array
          maxItems: 250
          minItems: 1
          title: Lineitems
        readiness:
          items:
            $ref: '#/components/schemas/ReadinessFinding'
          type: array
          maxItems: 100
          title: Readiness
        canAdmit:
          type: boolean
          title: Canadmit
      additionalProperties: false
      type: object
      required:
        - quoteId
        - operation
        - selection
        - context
        - envelope
        - expiresAt
        - currency
        - strategyUnits
        - remainingStrategyUnits
        - renewsAt
        - lineItems
        - canAdmit
      title: GoogleStrategyQuote
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    GoogleMediaSelection:
      properties:
        slotId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Slotid
        operation:
          type: string
          enum:
            - generate
            - reuse
            - derivative
          title: Operation
        assetId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Assetid
        uploadId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Uploadid
      additionalProperties: false
      type: object
      required:
        - slotId
        - operation
      title: GoogleMediaSelection
    StrategySelection-Output:
      properties:
        brandId:
          type: string
          format: uuid
          title: Brandid
        scope:
          type: string
          enum:
            - single_ad
            - campaign
            - brand_strategy
          title: Scope
        contextSelection:
          $ref: '#/components/schemas/GoogleContextSelection'
        productIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productids
        source:
          oneOf:
            - $ref: '#/components/schemas/NoSource'
            - $ref: '#/components/schemas/BrandDashboardSource'
            - $ref: '#/components/schemas/AccountTrackedGroupSource'
            - $ref: '#/components/schemas/AuthorizedAdSetSource'
          title: Source
          discriminator:
            propertyName: kind
            mapping:
              account_tracked_group:
                $ref: '#/components/schemas/AccountTrackedGroupSource'
              authorized_ad_set:
                $ref: '#/components/schemas/AuthorizedAdSetSource'
              brand_dashboard_group:
                $ref: '#/components/schemas/BrandDashboardSource'
              none:
                $ref: '#/components/schemas/NoSource'
        market:
          type: string
          maxLength: 80
          minLength: 2
          title: Market
        creativeLanguage:
          type: string
          maxLength: 40
          minLength: 2
          title: Creativelanguage
        outcome:
          type: string
          enum:
            - qualified_lead
            - purchase
            - awareness
            - consideration
          title: Outcome
        businessModel:
          type: string
          enum:
            - b2b
            - b2c
            - mixed
          title: Businessmodel
        offer:
          $ref: '#/components/schemas/UserOfferInput'
        economics:
          $ref: '#/components/schemas/EconomicsInput-Output'
        measurement:
          $ref: '#/components/schemas/MeasurementInput'
        requestedFamilies:
          items:
            type: string
            enum:
              - search
              - standard_shopping
              - performance_max
              - demand_gen
              - video
              - display_transition
          type: array
          maxItems: 6
          minItems: 1
          title: Requestedfamilies
        selectedFormat:
          anyOf:
            - type: string
              enum:
                - rsa
                - shopping_feed_plan
                - pmax_asset_group
                - demand_gen_image
                - demand_gen_carousel
                - demand_gen_video
                - youtube_video
            - type: 'null'
          title: Selectedformat
        selectedVideoSubtype:
          anyOf:
            - type: string
              enum:
                - skippable_in_stream
                - in_feed
                - shorts
                - bumper
                - non_skippable
                - non_skippable_ctv
                - video_views
                - efficient_reach
                - target_frequency
            - type: 'null'
          title: Selectedvideosubtype
        requestedCampaignCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedcampaigncount
          default: 1
        requestedGroupCount:
          type: integer
          maximum: 100
          minimum: 1
          title: Requestedgroupcount
          default: 1
        requestedOfferCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedoffercount
          default: 1
        requestedPersonaCount:
          type: integer
          maximum: 50
          minimum: 1
          title: Requestedpersonacount
          default: 1
        requestedLocaleCount:
          type: integer
          maximum: 20
          minimum: 1
          title: Requestedlocalecount
          default: 1
      additionalProperties: false
      type: object
      required:
        - brandId
        - scope
        - market
        - creativeLanguage
        - outcome
        - businessModel
        - offer
        - economics
        - requestedFamilies
      title: StrategySelection
    ContextSnapshotRef:
      properties:
        contextSnapshotId:
          type: string
          format: uuid
          title: Contextsnapshotid
        contextHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Contexthash
        artifactSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Artifactschemaversion
        packetSchemaVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Packetschemaversion
        projectionPolicyVersion:
          type: string
          maxLength: 64
          minLength: 1
          title: Projectionpolicyversion
        manifestHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Manifesthash
      additionalProperties: false
      type: object
      required:
        - contextSnapshotId
        - contextHash
        - artifactSchemaVersion
        - packetSchemaVersion
        - projectionPolicyVersion
        - manifestHash
      title: ContextSnapshotRef
    ScopeEnvelope:
      properties:
        version:
          type: string
          maxLength: 64
          minLength: 1
          title: Version
        campaignCellLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Campaigncelllimit
        adGroupOrAssetGroupLimit:
          type: integer
          maximum: 100
          minimum: 1
          title: Adgrouporassetgrouplimit
        offerLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Offerlimit
        personaLimit:
          type: integer
          maximum: 50
          minimum: 1
          title: Personalimit
        localeLimit:
          type: integer
          maximum: 20
          minimum: 1
          title: Localelimit
        textRepairLimit:
          type: integer
          maximum: 5
          minimum: 0
          title: Textrepairlimit
        mediaSlots:
          items:
            $ref: '#/components/schemas/PlannedMediaSlot'
          type: array
          maxItems: 200
          title: Mediaslots
      additionalProperties: false
      type: object
      required:
        - version
        - campaignCellLimit
        - adGroupOrAssetGroupLimit
        - offerLimit
        - personaLimit
        - localeLimit
        - textRepairLimit
      title: ScopeEnvelope
    QuoteLineItem:
      properties:
        kind:
          type: string
          enum:
            - strategy
            - text
            - image
            - video
            - derivative
            - inspection
            - export
          title: Kind
        label:
          type: string
          maxLength: 500
          minLength: 1
          title: Label
        quantity:
          type: integer
          maximum: 1000
          minimum: 1
          title: Quantity
        slotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 200
          title: Slotids
        amount:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Amount
      additionalProperties: false
      type: object
      required:
        - kind
        - label
        - quantity
      title: QuoteLineItem
    ReadinessFinding:
      properties:
        code:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Code
        state:
          type: string
          enum:
            - blocked
            - needs_input
            - needs_qualification
            - warning
            - ready
          title: State
        layer:
          type: string
          enum:
            - strategy
            - assets
            - account
          title: Layer
        message:
          type: string
          maxLength: 4000
          minLength: 1
          title: Message
        ruleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 20
          title: Ruleids
        evidenceIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Evidenceids
        slotIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 100
          title: Slotids
        remediation:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Remediation
        officialUrls:
          items:
            type: string
            maxLength: 2083
            minLength: 1
            format: uri
          type: array
          maxItems: 10
          title: Officialurls
      additionalProperties: false
      type: object
      required:
        - code
        - state
        - layer
        - message
      title: ReadinessFinding
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    GoogleContextSelection:
      properties:
        audienceProfileVersionId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Audienceprofileversionid
        personaId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Personaid
        useIcp:
          type: boolean
          title: Useicp
          default: false
        scenarioId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Scenarioid
        useGuidelines:
          type: boolean
          title: Useguidelines
          default: true
        guidelinesId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Guidelinesid
      additionalProperties: false
      type: object
      title: GoogleContextSelection
    NoSource:
      properties:
        kind:
          type: string
          const: none
          title: Kind
          default: none
      additionalProperties: false
      type: object
      title: NoSource
    BrandDashboardSource:
      properties:
        kind:
          type: string
          const: brand_dashboard_group
          title: Kind
        domains:
          items:
            type: string
            maxLength: 253
            minLength: 1
          type: array
          maxItems: 100
          minItems: 1
          title: Domains
      additionalProperties: false
      type: object
      required:
        - kind
        - domains
      title: BrandDashboardSource
    AccountTrackedGroupSource:
      properties:
        kind:
          type: string
          const: account_tracked_group
          title: Kind
        groupId:
          type: string
          format: uuid
          title: Groupid
      additionalProperties: false
      type: object
      required:
        - kind
        - groupId
      title: AccountTrackedGroupSource
    AuthorizedAdSetSource:
      properties:
        kind:
          type: string
          const: authorized_ad_set
          title: Kind
        adIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 100
          minItems: 1
          title: Adids
      additionalProperties: false
      type: object
      required:
        - kind
        - adIds
      title: AuthorizedAdSetSource
    UserOfferInput:
      properties:
        description:
          type: string
          maxLength: 4000
          minLength: 1
          title: Description
        finalUrl:
          anyOf:
            - type: string
              maxLength: 2083
              minLength: 1
              format: uri
            - type: 'null'
          title: Finalurl
        terms:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Terms
        landingPageLanguage:
          anyOf:
            - type: string
              maxLength: 40
              minLength: 2
            - type: 'null'
          title: Landingpagelanguage
        serviceArea:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Servicearea
      additionalProperties: false
      type: object
      required:
        - description
      title: UserOfferInput
    EconomicsInput-Output:
      properties:
        currency:
          type: string
          pattern: ^[A-Z]{3}$
          title: Currency
        monthlyBudget:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Monthlybudget
        averageOrderValue:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Averageordervalue
        grossMarginPercent:
          anyOf:
            - type: number
              maximum: 100
              minimum: 0
            - type: 'null'
          title: Grossmarginpercent
        targetAcquisitionCost:
          anyOf:
            - type: string
              pattern: >-
                ^(?!^[-+.]*$)[+-]?0*(?:\d{0,12}|(?=[\d.]{1,19}0*$)\d{0,12}\.\d{0,6}0*$)
            - type: 'null'
          title: Targetacquisitioncost
        valueBasis:
          type: string
          enum:
            - revenue
            - contribution
            - qualified_lead
            - unknown
          title: Valuebasis
          default: unknown
        assumptions:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Assumptions
      additionalProperties: false
      type: object
      required:
        - currency
      title: EconomicsInput
    MeasurementInput:
      properties:
        primaryEvent:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Primaryevent
        diagnosticEvents:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Diagnosticevents
        conversionLagDays:
          anyOf:
            - type: integer
              maximum: 730
              minimum: 0
            - type: 'null'
          title: Conversionlagdays
        source:
          type: string
          enum:
            - connected_account
            - user_asserted
            - unknown
          title: Source
          default: unknown
        deduplication:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Deduplication
        valueTrackingReady:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Valuetrackingready
        primaryEventReady:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Primaryeventready
      additionalProperties: false
      type: object
      title: MeasurementInput
    PlannedMediaSlot:
      properties:
        id:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Id
        campaignCellId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Campaigncellid
        textVariantId:
          type: string
          maxLength: 120
          minLength: 1
          pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          title: Textvariantid
        kind:
          type: string
          enum:
            - image
            - video
          title: Kind
        requirement:
          type: string
          enum:
            - required
            - optional
          title: Requirement
        role:
          type: string
          enum:
            - marketing_image
            - square_logo
            - landscape_logo
            - video
          title: Role
        sourcePolicy:
          type: string
          enum:
            - owned_identity_required
            - generated_or_owned
          title: Sourcepolicy
        intendedFamily:
          type: string
          enum:
            - search
            - standard_shopping
            - performance_max
            - demand_gen
            - video
            - display_transition
          title: Intendedfamily
        intendedSurfaces:
          items:
            type: string
            enum:
              - search
              - search_partners
              - youtube_in_stream
              - youtube_in_feed
              - youtube_shorts
              - discover
              - gmail
              - display
              - maps
              - connected_tv
          type: array
          maxItems: 10
          minItems: 1
          title: Intendedsurfaces
        creativeDirection:
          $ref: '#/components/schemas/CreativeDirection'
        rulesetRuleIds:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 30
          minItems: 1
          title: Rulesetruleids
        requiredFacts:
          items:
            type: string
            maxLength: 120
            minLength: 1
            pattern: ^[A-Za-z0-9][A-Za-z0-9_.:-]*$
          type: array
          maxItems: 30
          title: Requiredfacts
        productReferenceIds:
          items:
            type: string
            format: uuid
          type: array
          maxItems: 50
          title: Productreferenceids
        preferredAspect:
          type: string
          enum:
            - '1:1'
            - 1.91:1
            - '4:5'
            - '9:16'
            - '16:9'
            - '4:1'
          title: Preferredaspect
        minFinalDurationSeconds:
          anyOf:
            - type: number
              maximum: 600
              exclusiveMinimum: 0
            - type: 'null'
          title: Minfinaldurationseconds
        maxFinalDurationSeconds:
          anyOf:
            - type: number
              maximum: 600
              exclusiveMinimum: 0
            - type: 'null'
          title: Maxfinaldurationseconds
        asset:
          anyOf:
            - $ref: '#/components/schemas/SelectedMediaAsset'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - id
        - campaignCellId
        - textVariantId
        - kind
        - requirement
        - role
        - sourcePolicy
        - intendedFamily
        - intendedSurfaces
        - creativeDirection
        - rulesetRuleIds
        - preferredAspect
      title: PlannedMediaSlot
    CreativeDirection:
      properties:
        subject:
          type: string
          maxLength: 4000
          minLength: 1
          title: Subject
        action:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Action
        context:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Context
        style:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Style
        lighting:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Lighting
        camera:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Camera
        audio:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Audio
        requiredCopy:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 20
          title: Requiredcopy
        prohibitedElements:
          items:
            type: string
            maxLength: 500
            minLength: 1
          type: array
          maxItems: 30
          title: Prohibitedelements
      additionalProperties: false
      type: object
      required:
        - subject
      title: CreativeDirection
    SelectedMediaAsset:
      properties:
        assetId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Assetid
        uploadId:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Uploadid
        checksum:
          type: string
          pattern: ^[0-9a-f]{64}$
          title: Checksum
        width:
          type: integer
          maximum: 32768
          exclusiveMinimum: 0
          title: Width
        height:
          type: integer
          maximum: 32768
          exclusiveMinimum: 0
          title: Height
        sizeBytes:
          type: integer
          maximum: 274877906944
          exclusiveMinimum: 0
          title: Sizebytes
        mimeType:
          type: string
          enum:
            - image/jpeg
            - image/png
            - image/gif
            - video/mp4
            - video/webm
            - video/quicktime
          title: Mimetype
        durationSeconds:
          anyOf:
            - type: number
              maximum: 3600
              exclusiveMinimum: 0
            - type: 'null'
          title: Durationseconds
        youtubeVideoId:
          anyOf:
            - type: string
              pattern: ^[A-Za-z0-9_-]{11}$
            - type: 'null'
          title: Youtubevideoid
        identitySource:
          type: string
          enum:
            - owned_asset
            - owned_upload
            - faithful_derivative
            - generated
          title: Identitysource
      additionalProperties: false
      type: object
      required:
        - checksum
        - width
        - height
        - sizeBytes
        - mimeType
        - identitySource
      title: SelectedMediaAsset
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````