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

# Get deterministic SEO and GEO scores, insights, and technical evidence



## OpenAPI

````yaml /openapi.json get /api/v1/workspaces/{workspace}/seo
openapi: 3.0.3
info:
  title: ai-cmo.dev Services API
  version: 1.0.0
servers: []
security: []
paths:
  /api/v1/workspaces/{workspace}/seo:
    get:
      summary: Get deterministic SEO and GEO scores, insights, and technical evidence
      operationId: getWorkspaceSeoDashboard
      parameters:
        - name: workspace
          in: path
          required: true
          schema:
            type: string
            pattern: ^[a-z0-9-]+$
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SeoDashboardEnvelope'
      security:
        - cookieAuth: []
        - bearerAuth:
            - metrics:read
components:
  schemas:
    SeoDashboardEnvelope:
      type: object
      properties:
        schemaVersion:
          type: string
          enum:
            - page-envelope.v1
        workspace:
          type: string
        data:
          type: object
          properties:
            scoreId:
              type: string
              nullable: true
            scoreDate:
              type: string
              nullable: true
            scoreVersion:
              type: string
              nullable: true
            seoScoreBp:
              type: integer
              minimum: 0
              maximum: 10000
              nullable: true
            geoScoreBp:
              type: integer
              minimum: 0
              maximum: 10000
              nullable: true
            combinedScoreBp:
              type: integer
              minimum: 0
              maximum: 10000
              nullable: true
            components:
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                    enum:
                      - search
                      - traffic
                      - authority
                      - content
                      - technical
                  available:
                    type: boolean
                  points:
                    type: number
                    nullable: true
                  maximum:
                    type: number
                    exclusiveMinimum: true
                    minimum: 0
                  percent:
                    type: number
                    minimum: 0
                    maximum: 100
                    nullable: true
                  unavailableReason:
                    type: string
                    nullable: true
                  signalRefs:
                    type: array
                    items:
                      type: string
                required:
                  - key
                  - available
                  - points
                  - maximum
                  - percent
                  - unavailableReason
                  - signalRefs
                additionalProperties: false
            insights:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  kind:
                    type: string
                    enum:
                      - keyword
                      - topic
                      - page
                  subject:
                    type: string
                  currentImpressions:
                    type: integer
                    minimum: 0
                  currentClicks:
                    type: integer
                    minimum: 0
                  currentPosition:
                    type: number
                    nullable: true
                  previousPosition:
                    type: number
                    nullable: true
                  positionChange:
                    type: number
                    nullable: true
                  importanceBp:
                    type: integer
                    minimum: 0
                    maximum: 10000
                  signalRefs:
                    type: array
                    items:
                      type: string
                required:
                  - id
                  - kind
                  - subject
                  - currentImpressions
                  - currentClicks
                  - currentPosition
                  - previousPosition
                  - positionChange
                  - importanceBp
                  - signalRefs
                additionalProperties: false
            technicalChecks:
              type: array
              items:
                type: object
                properties:
                  auditId:
                    type: string
                  pageUrl:
                    type: string
                  strategy:
                    type: string
                    enum:
                      - mobile
                      - desktop
                  pageTechnicalPct:
                    type: integer
                    minimum: 0
                    maximum: 100
                    nullable: true
                  code:
                    type: string
                  result:
                    type: string
                    enum:
                      - pass
                      - fail
                      - unknown
                  evidence:
                    type: object
                    properties:
                      source:
                        type: string
                      url:
                        type: string
                      observedValue: {}
                      expectedValue: {}
                      providerRef:
                        type: string
                    required:
                      - source
                      - url
                    additionalProperties: false
                  recommendationIds:
                    type: array
                    items:
                      type: string
                required:
                  - auditId
                  - pageUrl
                  - strategy
                  - pageTechnicalPct
                  - code
                  - result
                  - evidence
                  - recommendationIds
                additionalProperties: false
          required:
            - scoreId
            - scoreDate
            - scoreVersion
            - seoScoreBp
            - geoScoreBp
            - combinedScoreBp
            - components
            - insights
            - technicalChecks
          additionalProperties: false
      required:
        - schemaVersion
        - workspace
        - data
      additionalProperties: false
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: geo.session
      description: Signed HttpOnly browser session cookie
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: gp_live_<43 base64url characters>
      description: Workspace-bound machine API key

````