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

# GetManagedOrganizationAdsContainerAPI reports the Google Ads container a


> managed org already has under your MCC, and creates nothing. The POST above answers the same question, but only by being willing to provision — so a portal refreshing an org's billing status, or checking whether a container exists before offering to create one, had to send a create-capable request to find out. 404 means the org has no container under this manager. Deliberately no MCP tool, for the same reason its sibling has none (see the file header): the pair belongs to the same capability and splitting them across surfaces would make the read look like a different feature from the write.




## OpenAPI

````yaml /api/openapi.json get /v1/managed-organizations/{orgSlug}/ads-container
openapi: 3.0.0
info:
  title: Erdo API
  description: >-
    Erdo's REST API: query and write datasets, run agents, manage threads,
    integrations, pages, evals, workstreams, experiments, and bounded outreach.
    Authenticate with a Bearer API key (erdo_api_...) or scoped token
    (erdo_token_...).
  version: '2026-09-09'
servers:
  - url: https://api.erdo.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/managed-organizations/{orgSlug}/ads-container:
    get:
      summary: |
        GetManagedOrganizationAdsContainerAPI reports the Google Ads container a
      description: >
        managed org already has under your MCC, and creates nothing. The POST
        above answers the same question, but only by being willing to provision
        — so a portal refreshing an org's billing status, or checking whether a
        container exists before offering to create one, had to send a
        create-capable request to find out. 404 means the org has no container
        under this manager. Deliberately no MCP tool, for the same reason its
        sibling has none (see the file header): the pair belongs to the same
        capability and splitting them across surfaces would make the read look
        like a different feature from the write.
      operationId: GET:mcp.GetManagedOrganizationAdsContainerAPI
      parameters:
        - allowEmptyValue: true
          explode: false
          in: path
          name: orgSlug
          required: true
          schema:
            type: string
          style: simple
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  adopted:
                    description: >
                      existed under the manager's MCC (named by the request's
                      customer\_id) and was connected rather than created.
                    title: >
                      Adopted reports that the container is a client account
                      that already
                    type: boolean
                  already_provisioned:
                    description: >
                      delegated connection under this manager's MCC, which was
                      returned instead of creating a second sub-account.
                    title: >
                      AlreadyProvisioned reports that the managed org already
                      had an active
                    type: boolean
                  billing_configured:
                    description: >
                      setup, which is what decides whether it can serve. A
                      container is created with none: Google's
                      BillingSetupService can only attach one programmatically
                      for customers on monthly invoicing, so until the MCC is
                      approved for that, somebody has to link a payments profile
                      in the Google Ads UI. Saying so here is the difference
                      between a known remaining step and one discovered at
                      go-live, when the campaigns are built and nothing serves.
                    title: >
                      BillingConfigured reports whether the sub-account has an
                      APPROVED billing
                    type: boolean
                  billing_status:
                    description: >
                      APPROVED\_HELD, CANCELLED. Two values are ours rather than
                      Google's: "none" when the account has no billing setup at
                      all, and "unknown" when the check itself could not be
                      made. Those are different facts and a caller gating
                      go-live must not read the second as the first — an
                      unreadable answer is a reason to go and look, not evidence
                      of absence.
                    title: >
                      BillingStatus is Google's own billing_setup status —
                      APPROVED, PENDING,
                    type: string
                  customer_id:
                    description: |
                      under the manager's MCC).
                    title: >
                      CustomerID is the managed org's own Google Ads account
                      (the sub-account
                    type: string
                  descriptive_name:
                    description: >
                      Empty when AlreadyProvisioned: Erdo does not store
                      Google's display name, and re-reading it would put a
                      Google call on the idempotent path.
                    title: >
                      DescriptiveName is the display name the sub-account was
                      created with.
                    type: string
                  integration_id:
                    format: uuid
                    type: string
                  login_customer_id:
                    description: >
                      the id every request against CustomerID is sent in the
                      context of.
                    title: >
                      LoginCustomerID is the manager account (MCC) the
                      sub-account sits under —
                    type: string
                  org_slug:
                    type: string
                  previous_campaign_count:
                    description: >
                      carrying — the size of the rebuild. Zero means the account
                      it superseded had nothing in it, which is why no consent
                      was needed to supersede it.
                    format: int64
                    title: >
                      PreviousCampaignCount is how many non-removed campaigns
                      that account was
                    type: integer
                  previous_customer_id:
                    description: >
                      already operating when this container was provisioned, if
                      it was operating one. That account is where its campaigns
                      still are — nothing moved them, and no connection in the
                      org resolves it any more.
                    title: >
                      PreviousCustomerID names the Google Ads account the
                      organization was
                    type: string
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  responses:
    APIError:
      content:
        application/json:
          schema:
            externalDocs:
              url: https://pkg.go.dev/encore.dev/beta/errs#Error
            properties:
              code:
                description: Error code
                example: not_found
                externalDocs:
                  url: https://pkg.go.dev/encore.dev/beta/errs#ErrCode
                type: string
              details:
                description: Error details
                type: object
              message:
                description: Error message
                type: string
            title: APIError
            type: object
      description: Error response
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

````