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

# Key introspection — the plugin's connection test

> No permission required. Any valid key of EITHER class (api or wordpress) may introspect itself — this is the endpoint the Quickstart guide points a brand-new key at.



## OpenAPI

````yaml /api/openapi.json get /me
openapi: 3.1.0
info:
  title: PixGlory Machine API
  version: 1.0.0
  description: >-
    The versioned /api/v1/* machine API — bearer-key authenticated, for the
    WordPress plugin and future integrations. Hand-written and maintained
    alongside apps/start/src/routes/api/v1/*; see machine-api-v1.md for the
    human-readable walkthrough. THIS FILE IS THE SOURCE OF TRUTH where the two
    disagree.
servers:
  - url: https://pixglory.com/api/v1
security:
  - bearerKey: []
paths:
  /me:
    get:
      summary: Key introspection — the plugin's connection test
      description: >-
        No permission required. Any valid key of EITHER class (api or wordpress)
        may introspect itself — this is the endpoint the Quickstart guide points
        a brand-new key at.
      operationId: getMe
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Me'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  schemas:
    Me:
      type: object
      required:
        - organizationId
        - organizationSlug
        - organizationName
        - keyId
        - keyClass
        - permissions
        - boundProject
        - quota
      properties:
        organizationId:
          type: string
        organizationSlug:
          type: string
        organizationName:
          type: string
        keyId:
          type: string
        keyClass:
          type: string
          enum:
            - api
            - wordpress
        permissions:
          type:
            - object
            - 'null'
          additionalProperties:
            type: array
            items:
              type: string
        boundProject:
          oneOf:
            - $ref: '#/components/schemas/Project'
            - type: 'null'
        quota:
          $ref: '#/components/schemas/Quota'
    Project:
      type: object
      required:
        - id
        - slug
        - name
        - sourceType
        - fileCount
        - totalSizeBytes
        - publicUrl
        - createdAt
        - updatedAt
      properties:
        id:
          type: string
        slug:
          type: string
        name:
          type: string
        sourceType:
          type: string
          enum:
            - direct
            - publish
        fileCount:
          type: integer
        totalSizeBytes:
          type: integer
        publicUrl:
          type: string
          format: uri
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Quota:
      type: object
      required:
        - tierSlug
        - tierName
        - storage
      description: >-
        The org's POOLED storage quota (CDN + Processing combined, plan-21
        §3/§4) — org-wide, identical for either key class and independent of
        boundProject.
      properties:
        tierSlug:
          type: string
          description: e.g. "free", "starter", "pro", "scale".
        tierName:
          type: string
          description: e.g. "Starter".
        storage:
          type: object
          required:
            - usedBytes
            - limitBytes
          properties:
            usedBytes:
              type: integer
            limitBytes:
              type: integer
              description: >-
                Bytes, or -1 when the org's tier has no storage cap — the
                UNLIMITED sentinel, shipped unconverted. A client must check for
                -1 explicitly rather than treating it as a literal byte count.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - code
          properties:
            message:
              type: string
            code:
              type: string
            details: {}
  responses:
    Unauthorized:
      description: Missing, malformed, unknown, expired, or disabled key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missing:
              value:
                error:
                  message: 'Missing API key. Send it as `Authorization: Bearer <key>`.'
                  code: MISSING_API_KEY
            invalid:
              value:
                error:
                  message: Invalid or expired API key.
                  code: INVALID_API_KEY
    TooManyRequests:
      description: >-
        Rate limited — ours or the underlying key plugin's own. Honour
        Retry-After.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds until the window resets.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            rateLimited:
              value:
                error:
                  message: Too many requests, please try again shortly.
                  code: RATE_LIMIT
  securitySchemes:
    bearerKey:
      type: http
      scheme: bearer
      bearerFormat: pxg_... or pxg_wp_...
      description: >-
        An API key minted from the dashboard (POST /api/api-keys), of either
        class: `api` (prefix `pxg_`) or `wordpress` (prefix `pxg_wp_`). Which
        class a given route accepts is documented per-endpoint below; presenting
        a real key of a class the route doesn't accept is `403 WRONG_KEY_CLASS`,
        never folded into `401 INVALID_API_KEY`. No cookie fallback exists.

````