Optimyzee Application API

The REST API behind the Optimyzee web application. Covers Google Ads campaign creation (search creation, AI search creation, keyword planner, RSA builder, sitelink builder), analysis (account audit, account health, search-terms optimization, Performance Max optimization and the P-Max center, reporting editor/querier), account linking (Google Ads, Meta, Merchant Center), lookups (campaigns, geo target constants, language constants), campaign lifecycle and activity, recommendations and signals, automations, Yelp Ads (autoresponders, leads, businesses, programs, reporting, sync), billing subscriptions, authentication (email, social gateway, password, TFA, trusted devices), plus an internal /operations administrative surface. The OpenAPI 3.0.0 document is served publicly and anonymously; there is no developer portal, human API reference, or published API program around it.

OpenAPI Specification

optimyzee-openapi.yml Raw ↑
# Harvested verbatim from https://api.optimyzee.com/docs (HTTP 200, application/json, 2026-08-12).
# Format-converted JSON -> YAML. Only two additions vs openapi/_original/optimyzee-openapi.json:
#   - servers[]: the published document omits servers entirely; api.optimyzee.com is the host that
#     serves this document AND answers the operations live (401 Unauthenticated on /app/campaign).
#   - info.title: original is the placeholder "API"; preserved as info.x-original-title.
# No paths, schemas, parameters or responses were altered. See overlays/optimyzee-openapi-overlay.yaml.
openapi: 3.0.0
info:
  title: Optimyzee Application API
  version: 4.1.0
  x-original-title: API
servers:
- url: https://api.optimyzee.com
  description: Production (host serving this document at /docs)
tags:
- name: App/Analyze/GoogleAds/Audit
  description: App/Analyze/GoogleAds/Audit
- name: App/Analyze/GoogleAds/Health
  description: App/Analyze/GoogleAds/Health
- name: App/Analyze/GoogleAds/Optimization
  description: App/Analyze/GoogleAds/Optimization
- name: App/Analyze/GoogleAds/Reporting
  description: App/Analyze/GoogleAds/Reporting
- name: App/Auth/Email
  description: App/Auth/Email
- name: App/Auth/Gateway
  description: App/Auth/Gateway
- name: App/Auth/Password
  description: App/Auth/Password
- name: App/Auth/Profile
  description: App/Auth/Profile
- name: App/Auth/Tfa
  description: App/Auth/Tfa
- name: App/Auth/TrustedDevice
  description: App/Auth/TrustedDevice
- name: App Automation
  description: App Automation
- name: App Automations
  description: App Automations
- name: App/Billing/Subscription
  description: App/Billing/Subscription
- name: App/Campaign
  description: App/Campaign
- name: App/FreeLimit
  description: App/FreeLimit
- name: App/Campaign/Activity
  description: App/Campaign/Activity
- name: App/Campaign/GoogleAds
  description: App/Campaign/GoogleAds
- name: App/Create/GoogleAds/KeywordPlanner
  description: App/Create/GoogleAds/KeywordPlanner
- name: App/Create/GoogleAds/RsaBuilder
  description: App/Create/GoogleAds/RsaBuilder
- name: App/Create/GoogleAds/SearchCreation
  description: App/Create/GoogleAds/SearchCreation
- name: App/Create/GoogleAds/SearchCreationAi
  description: App/Create/GoogleAds/SearchCreationAi
- name: App/Create/GoogleAds/SitelinkBuilder
  description: App/Create/GoogleAds/SitelinkBuilder
- name: App/Linking/GoogleAds
  description: App/Linking/GoogleAds
- name: App/Linking/Meta
  description: App/Linking/Meta
- name: App/Lookup/GoogleAds/Campaign
  description: App/Lookup/GoogleAds/Campaign
- name: App/Lookup/GoogleAds/GeoTargetConstant
  description: App/Lookup/GoogleAds/GeoTargetConstant
- name: App/Lookup/GoogleAds/LanguageConstant
  description: App/Lookup/GoogleAds/LanguageConstant
- name: App/Lookup/GoogleAds/MerchantCenter
  description: App/Lookup/GoogleAds/MerchantCenter
- name: App Recommendation
  description: App Recommendation
- name: App Signal
  description: App Signal
- name: App/Support
  description: App/Support
- name: App Yelp
  description: App Yelp
- name: Operations/Admin
  description: Operations/Admin
- name: Operations/Auth/Gateway
  description: Operations/Auth/Gateway
- name: Operations/Auth/Profile
  description: Operations/Auth/Profile
- name: Operations/Billing/Subscription
  description: Operations/Billing/Subscription
- name: Operations/Campaign
  description: Operations/Campaign
- name: Operations/Campaign/Log
  description: Operations/Campaign/Log
- name: Operations/Campaign/Task
  description: Operations/Campaign/Task
- name: Operations/User
  description: Operations/User
paths:
  /app/analyze/g/audit:
    post:
      tags:
      - App/Analyze/GoogleAds/Audit
      operationId: appAnalyzeGoogleAdsAuditQueue
      requestBody:
        required: false
        content:
          application/json:
            schema:
              required:
              - linkingId
              - campaignId
              - scope
              properties:
                linkingId:
                  type: integer
                campaignId:
                  type: integer
                scope:
                  type: string
                  enum:
                  - CAMPAIGN
                  - SEARCH_ADS
                  - SEARCH_KEYWORDS
                  - SEARCH_TERMS
                  - P_MAX
              type: object
      responses:
        '201':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdSchema'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/analyze/g/audit/{auditId}:
    get:
      tags:
      - App/Analyze/GoogleAds/Audit
      operationId: appAnalyzeGoogleAdsAuditView
      parameters:
      - name: auditId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/AppAnalyzeGoogleAdsAuditSchema'
                type: object
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/analyze/g/health:
    post:
      tags:
      - App/Analyze/GoogleAds/Health
      operationId: appAnalyzeGoogleAdsHealthAnalyze
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linking_id
              properties:
                linking_id:
                  type: integer
                period_days:
                  type: integer
                  default: 30
                  enum:
                  - 30
                  - 60
                  - 90
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/AppAnalyzeGoogleAdsHealthReportSchema'
                type: object
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/analyze/g/optimization/search-terms:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationAnalyze
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linking_id
              - campaign_id
              properties:
                linking_id:
                  type: integer
                campaign_id:
                  type: integer
              type: object
      responses:
        '201':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdSchema'
      security:
      - token: []
  /app/analyze/g/optimization/search-terms/results/mark:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationMarkResult
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - analysis_id
              - result_ids
              - action
              properties:
                analysis_id:
                  type: integer
                result_ids:
                  type: array
                  items:
                    type: integer
                action:
                  type: string
                  enum:
                  - negative
                  - keyword
                  - observe
                  - brand
                  - competitor
                  - ok
                  - relevant
                optimized:
                  type: boolean
                  example: false
              type: object
      responses:
        '200':
          description: Successful
      security:
      - token: []
  /app/analyze/g/optimization/p-max:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxAnalyze
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linking_id
              - campaign_id
              properties:
                linking_id:
                  type: integer
                campaign_id:
                  type: integer
              type: object
      responses:
        '201':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdSchema'
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/{optimizationId}/asset-draft:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterAssetDraft
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - asset_group_id
              properties:
                asset_group_id:
                  type: integer
                recommendation:
                  type: object
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/deep-audit:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterDeepAudit
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linking_id
              - campaign_id
              properties:
                linking_id:
                  type: integer
                campaign_id:
                  type: integer
                run_audit:
                  type: boolean
                  default: true
                run_search_intent:
                  type: boolean
                  default: true
                health_period_days:
                  type: integer
                  default: 30
                  enum:
                  - 30
                  - 60
                  - 90
                audit_scope:
                  properties:
                    performance:
                      type: boolean
                    assetGroups:
                      type: boolean
                    products:
                      type: boolean
                    searchIntent:
                      type: boolean
                    settings:
                      type: boolean
                  type: object
              type: object
      responses:
        '201':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    required:
                    - optimization_id
                    - audit_id
                    - search_intent_analysis_id
                    properties:
                      optimization_id:
                        type: integer
                      audit_id:
                        type: integer
                        nullable: true
                      search_intent_analysis_id:
                        type: integer
                        nullable: true
                    type: object
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/{optimizationId}/promotion-draft:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterPromotionDraftLatest
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterPromotionDraft
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: false
        content:
          application/json:
            schema:
              properties:
                recommendation:
                  type: object
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/{optimizationId}/search-theme-suggestions:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterSearchThemeSuggestions
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - asset_group_id
              properties:
                asset_group_id:
                  type: integer
                seed_terms:
                  type: array
                  items:
                    type: string
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/{optimizationId}/start:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterStart
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    required:
                    - started
                    properties:
                      started:
                        type: boolean
                    type: object
                type: object
        '403':
          description: Monthly action limit reached / unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/analyze/g/optimization/pmax-center/{optimizationId}:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxCenterView
      parameters:
      - name: optimizationId
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    required:
                    - id
                    - linking_id
                    - campaign_id
                    - health_period_days
                    - audit_scope
                    - audit_id
                    - search_intent_analysis_id
                    properties:
                      id:
                        type: integer
                      linking_id:
                        type: integer
                      linking_customer_id:
                        type: integer
                      linking_name:
                        type: string
                      campaign_id:
                        type: integer
                      campaign_name:
                        type: string
                        nullable: true
                      health_period_days:
                        type: integer
                        enum:
                        - 30
                        - 60
                        - 90
                      audit_scope:
                        type: object
                      audit_id:
                        type: integer
                        nullable: true
                      search_intent_analysis_id:
                        type: integer
                        nullable: true
                      started:
                        type: boolean
                      created_at:
                        type: string
                        nullable: true
                      updated_at:
                        type: string
                        nullable: true
                    type: object
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/p-max/results/mark:
    post:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxMarkResult
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - analysis_id
              - result_ids
              - action
              properties:
                analysis_id:
                  type: integer
                result_ids:
                  type: array
                  items:
                    type: integer
                action:
                  type: string
                  enum:
                  - negative
                  - keyword
                  - observe
                  - brand
                  - competitor
                  - ok
                  - relevant
                optimized:
                  type: boolean
                  example: false
              type: object
      responses:
        '200':
          description: Successful
      security:
      - token: []
  /app/analyze/g/optimization/p-max/{id}:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationPMaxView
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/search-terms/{id}:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationView
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/optimized-history:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationHistory
      parameters:
      - name: linkingId
        in: query
        required: false
        schema:
          type: integer
      - name: campaignId
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/optimization/recommendations:
    get:
      tags:
      - App/Analyze/GoogleAds/Optimization
      operationId: appAnalyzeGoogleAdsOptimizationRecommendations
      parameters:
      - name: from
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: to
        in: query
        required: false
        schema:
          type: string
          format: date
      - name: perPage
        in: query
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                type: object
      security:
      - token: []
  /app/analyze/g/reporting/editor:
    post:
      tags:
      - App/Analyze/GoogleAds/Reporting
      operationId: appAnalyzeGoogleAdsReportingEditor
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linkingId
              properties:
                linkingId:
                  type: integer
                delete:
                  type: array
                  items:
                    required:
                    - resource
                    - payload
                    properties:
                      resource:
                        type: string
                      payload:
                        type: object
                    type: object
                  nullable: true
                update:
                  type: array
                  items:
                    required:
                    - resource
                    - payload
                    properties:
                      resource:
                        type: string
                      payload:
                        type: object
                    type: object
                  nullable: true
                create:
                  type: array
                  items:
                    required:
                    - resource
                    - payload
                    properties:
                      resource:
                        type: string
                      payload:
                        type: object
                    type: object
                  nullable: true
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/AppAnalyzeGoogleAdsReportingEditorResponseSchema'
                type: object
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBagSchema'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorListSchema'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/analyze/g/reporting/querier:
    post:
      tags:
      - App/Analyze/GoogleAds/Reporting
      operationId: appAnalyzeGoogleAdsReportingQuerier
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - linkingId
              - resource
              - select
              properties:
                linkingId:
                  type: integer
                resource:
                  type: string
                select:
                  type: array
                  items:
                    type: string
                where:
                  type: array
                  items:
                    required:
                    - column
                    properties:
                      column:
                        type: string
                      operator:
                        type: string
                        enum:
                        - '='
                        - '!='
                        - <
                        - <=
                        - '>'
                        - '>='
                        - LIKE
                        - IN
                        - NOT_IN
                        - DURING
                        nullable: true
                      value:
                        nullable: true
                        oneOf:
                        - type: boolean
                        - type: string
                        - type: number
                        - type: array
                          items:
                            oneOf:
                            - type: boolean
                            - type: string
                            - type: number
                          nullable: true
                      boolean:
                        type: string
                        enum:
                        - AND
                        - OR
                        nullable: true
                    type: object
                  nullable: true
                sort:
                  type: array
                  items:
                    required:
                    - column
                    properties:
                      column:
                        type: string
                      direction:
                        type: string
                        enum:
                        - ASC
                        - DESC
                        nullable: true
                    type: object
                  nullable: true
                limit:
                  type: integer
                  nullable: true
                perPage:
                  type: integer
                  nullable: true
                cursor:
                  type: string
                  nullable: true
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - items
                - perPage
                - next
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/AppAnalyzeGoogleAdsReportingRowSchema'
                  perPage:
                    type: integer
                  next:
                    type: string
                    nullable: true
                type: object
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBagSchema'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorListSchema'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/auth/email/resend:
    post:
      tags:
      - App/Auth/Email
      operationId: appAuthEmailResend
      responses:
        '204':
          description: Successful
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
        '401':
          description: Unauthenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/auth/email:
    post:
      tags:
      - App/Auth/Email
      operationId: appAuthEmailUpdate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - email
              properties:
                email:
                  type: string
                  format: email
              type: object
      responses:
        '204':
          description: Successful
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBagSchema'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/auth/email/verify:
    post:
      tags:
      - App/Auth/Email
      operationId: appAuthEmailVerify
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - code
              properties:
                code:
                  type: string
              type: object
      responses:
        '204':
          description: Successful
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBagSchema'
        '403':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
      security:
      - token: []
  /app/auth/gateway/email:
    post:
      tags:
      - App/Auth/Gateway
      operationId: appAuthGatewayEmail
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - email
              - password
              properties:
                email:
                  type: string
                password:
                  type: string
                device:
                  type: string
                  nullable: true
                otp:
                  type: string
                  nullable: true
                otpRecoveryCode:
                  type: string
                  nullable: true
              type: object
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                required:
                - data
                properties:
                  data:
                    $ref: '#/components/schemas/AppAuthGatewayTokenSchema'
                type: object
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBagSchema'
        '400':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorSchema'
  /app/auth/gateway/emailSignup:
    post:
      tags:
      - App/Auth/Gateway
      operationId: appAuthGatewayEmailSignup
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - email
              - passw

# --- truncated at 32 KB (236 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/optimyzee/refs/heads/main/openapi/optimyzee-openapi.yml