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

# Get Google Ads launch readiness

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns what Base44 will do on launch, so you can check a launch will succeed before spending anything.

Read this first. It tells you the currency the account will be billed in, whether a card is on file, the business details that will go on the Google Ads account, and the landing page Google will be asked to crawl. Send `landing_page` back verbatim on [Launch campaign](/api-reference/launch-google-ads-campaign) rather than deriving the URL yourself: Base44 prefers a custom domain only once it actually routes, and a URL Google cannot fetch gets the campaign rejected after the account already exists.

Nothing is created or charged by this call.

`landing_page_ready` is best-effort. If Base44 cannot check the app's published address it comes back `false` with an empty `landing_page`, which is indistinguishable from an app that genuinely has no crawlable page.

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/google-ads/launch-readiness
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/google-ads/launch-readiness:
    get:
      summary: Get Google Ads launch readiness
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Returns what Base44 will do on launch, so you can check a launch will
        succeed before spending anything.


        Read this first. It tells you the currency the account will be billed
        in, whether a card is on file, the business details that will go on the
        Google Ads account, and the landing page Google will be asked to crawl.
        Send `landing_page` back verbatim on [Launch
        campaign](/api-reference/launch-google-ads-campaign) rather than
        deriving the URL yourself: Base44 prefers a custom domain only once it
        actually routes, and a URL Google cannot fetch gets the campaign
        rejected after the account already exists.


        Nothing is created or charged by this call.


        `landing_page_ready` is best-effort. If Base44 cannot check the app's
        published address it comes back `false` with an empty `landing_page`,
        which is indistinguishable from an app that genuinely has no crawlable
        page.


        <Note>This endpoint accepts a personal API key. Workspace API keys are
        not authorized for it and are rejected with a 403.</Note>


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: get_launch_readiness_api_apps__app_id__google_ads_launch_readiness_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app to advertise.
            title: App Id
          description: ID of the app to advertise.
          example: 6820f3a4e7b91d003c45a1f2
      responses:
        '200':
          description: What a launch would do, and whether it can succeed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchReadinessResponse'
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have access to this app, the app does not exist, or you
            used a workspace API key. A missing app and an app you cannot reach
            are deliberately the same answer.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    LaunchReadinessResponse:
      properties:
        has_payment_method:
          type: boolean
          title: Has Payment Method
          description: >-
            Whether the workspace has a card on file. Launching without one is
            rejected with a 402.
          example: true
        stripe_unavailable:
          type: boolean
          title: Stripe Unavailable
          description: >-
            `true` when Base44 could not reach its payment provider, so
            `has_payment_method` is not trustworthy. Launching in this state is
            rejected rather than allowed through.
          example: false
        currency_code:
          type: string
          title: Currency Code
          description: >-
            Currency the campaign will be billed in. On an account that already
            exists this is the currency it was created with and cannot change.
            Otherwise Base44 derives it from where the request comes from, not
            from how the workspace pays.
          example: EUR
        account_exists:
          type: boolean
          title: Account Exists
          description: >-
            Whether the app already has a Google Ads account. When `false`,
            launching creates one, which cannot be undone.
          example: false
        account_id:
          type: string
          title: Account Id
          description: ID of that account, empty when there is none yet.
          example: 68b1c0d4e7b91d003c45a1f0
        landing_page_ready:
          type: boolean
          title: Landing Page Ready
          description: >-
            Whether Base44 resolved a page Google can actually crawl. Launching
            without one gets the campaign rejected by Google after the account
            already exists.
          example: true
        landing_page:
          type: string
          title: Landing Page
          description: >-
            The exact URL to send as the campaign's `landing_page`: a live
            custom domain if the app has one, otherwise its published address.
            Empty when neither resolves. Send this rather than building the URL
            yourself.
          example: https://example.com
        business_info:
          anyOf:
            - $ref: '#/components/schemas/LaunchBusinessInfo'
            - type: 'null'
          description: >-
            The business details that will go on the Google Ads account. `null`
            when the app has none saved, in which case Base44 uses the app's
            name.
      type: object
      required:
        - has_payment_method
        - stripe_unavailable
        - currency_code
        - account_exists
        - account_id
        - landing_page_ready
        - landing_page
      title: LaunchReadinessResponse
      description: >-
        Everything that decides whether a launch will succeed.


        Omits `payment_method_last4` and `payment_method_brand`, which the
        response

        also carries. Card detail is not something this endpoint needs to
        publish to

        answer "can this launch"; `has_payment_method` is. Both fields keep
        being

        sent, so leaving them undocumented changes no API.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LaunchBusinessInfo:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Business name. Base44 falls back to the app's name when this is
            empty.
          example: Nordwind Furniture
        category:
          type: string
          title: Category
          description: Business category, empty when none is saved.
          example: Furniture store
        description:
          type: string
          title: Description
          description: What the business does, empty when none is saved.
          example: Handmade oak furniture, delivered across Germany.
        phone:
          type: string
          title: Phone
          description: Contact phone number, empty when none is saved.
          example: '+493012345678'
      type: object
      required:
        - name
        - category
        - description
        - phone
      title: LaunchBusinessInfo
      description: The business details Base44 will put on the Google Ads account.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````