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

# Get a single project's full detail

> Returns the full project record, including documents array and analysis status flags. Returns 404 if the project doesn't exist or doesn't belong to the authenticated user (ownership is enforced by an explicit `user_id` filter in this route, not RLS, since the route uses the service-role client).



## OpenAPI

````yaml /api-reference/openapi.json get /api/projects/{id}
openapi: 3.1.0
info:
  title: Audity Agent API
  version: 1.0.0
  summary: >-
    The agent-facing surface of Audity AI: projects, leads, Nucleus, and
    account.
  description: >-
    Audity is a B2B SaaS for consultants who run automated business audits. This
    API is the agent-facing slice: a deliberately small set of task-shaped
    endpoints that lets external AI agents (Claude, ChatGPT, Cursor, n8n) act on
    a consultant's Audity workspace on their behalf.


    **Authentication:** Bearer token (`aky_...`) issued from
    `https://app.auditynow.com/dashboard/settings/api-tokens`. The middleware
    resolves the token to a Clerk user identity; tier and Row-Level Security
    gates apply automatically.


    **Rate limits:** reads 100/min, writes 20/min, async job polling 120/min;
    some expensive or high-volume endpoints have stricter caps. 429 responses
    include `Retry-After`.


    **Tier gating:** public plan names can change faster than API enum names.
    Use `GET /api/user/tier` and any `requiredTier` field in 403 responses as
    the source of truth for a specific account. Read-only or
    lead-generation-focused plans can read available data; audit-capable paid
    plans unlock writes, subject to token scope and credits.
  contact:
    name: Audity Support
    email: support@auditynow.com
    url: https://app.auditynow.com
  license:
    name: Proprietary
    identifier: LicenseRef-Audity-Proprietary
  termsOfService: https://auditynow.com/terms
servers:
  - url: https://app.auditynow.com
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Projects
    description: >-
      Audit project lifecycle, create, list, fetch, trigger analysis, get
      deliverables.
  - name: Leads
    description: ReadyLink-sourced leads, list, fetch, convert into projects.
  - name: Nucleus
    description: >-
      Nucleus is Audity's persistent memory + insight layer. Search memories,
      capture notes, read proactive insights, manage contacts.
  - name: Account
    description: Identity, tier, credits, usually called once per session for context.
  - name: ReadyLinks
    description: >-
      Manage ReadyLinks, the survey distribution links that generate leads. CRUD
      operations for links, customization, lead tracking.
  - name: Assessment Configs
    description: >-
      Manage assessment configurations that define survey questions, order,
      scoring, and customization.
  - name: Jobs
    description: >-
      Monitor async job status for long-running operations like audit analysis
      synthesis.
paths:
  /api/projects/{id}:
    parameters:
      - $ref: '#/components/parameters/ProjectId'
    get:
      tags:
        - Projects
      summary: Get a single project's full detail
      description: >-
        Returns the full project record, including documents array and analysis
        status flags. Returns 404 if the project doesn't exist or doesn't belong
        to the authenticated user (ownership is enforced by an explicit
        `user_id` filter in this route, not RLS, since the route uses the
        service-role client).
      operationId: getProject
      responses:
        '200':
          description: Project detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDetail'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    ProjectId:
      name: id
      in: path
      required: true
      description: The project's UUID.
      schema:
        type: string
        format: uuid
  schemas:
    ProjectDetail:
      allOf:
        - $ref: '#/components/schemas/ProjectSummary'
        - type: object
          properties:
            documents:
              type: array
              items:
                $ref: '#/components/schemas/DocumentRef'
            businessAnalysis:
              type: array
              items:
                type: object
                additionalProperties: true
              description: >-
                Inline business analysis records, if present. Empty array when
                none.
    ProjectSummary:
      allOf:
        - $ref: '#/components/schemas/Project'
        - type: object
          properties:
            documentsCount:
              type: integer
            analysisProgress:
              type: integer
              minimum: 0
              maximum: 100
              description: >-
                Percentage 0-100 representing how far through the audit
                lifecycle this project is.
            stakeholdersCount:
              type: integer
            hasAnalysis:
              type: boolean
            hasInterviewAnalysis:
              type: boolean
            hasAuditAnalysis:
              type: boolean
            hasQuestionnaires:
              type: boolean
            hasDeliverables:
              type: boolean
            statusLabel:
              type: string
            statusDescription:
              type: string
            lastActivity:
              type:
                - object
                - 'null'
              properties:
                type:
                  type: string
                  enum:
                    - document_upload
                    - analysis_generated
                    - interview_completed
                date:
                  type: string
                  format: date-time
                description:
                  type: string
    DocumentRef:
      type: object
      properties:
        id:
          type: string
          format: uuid
        fileName:
          type: string
        fileType:
          type:
            - string
            - 'null'
          description: Free-text type label (e.g., 'document', 'transcript').
        fileSize:
          type:
            - integer
            - 'null'
          description: Size in bytes.
        storagePath:
          type:
            - string
            - 'null'
          description: Supabase Storage path.
        uploadStatus:
          type:
            - string
            - 'null'
          description: Upload pipeline status.
        createdAt:
          type: string
          format: date-time
      required:
        - id
        - fileName
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
        details:
          type: string
          description: Additional context (development only).
      required:
        - error
    Project:
      type: object
      properties:
        id:
          type: string
          format: uuid
        clientName:
          type: string
        industry:
          type: string
        companySize:
          type: string
        description:
          type:
            - string
            - 'null'
        currency:
          type: string
        status:
          $ref: '#/components/schemas/ProjectStatus'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - clientName
        - industry
        - companySize
        - status
        - createdAt
    ProjectStatus:
      type: string
      enum:
        - setup
        - analysis
        - interviews
        - complete
        - archived
      description: Lifecycle state of an audit project.
  responses:
    Unauthorized:
      description: Missing or invalid token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized
    NotFound:
      description: Resource not found, or you don't have access (RLS).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Audity Personal Access Token (aky_...)
      description: >-
        A Personal Access Token issued from
        https://app.auditynow.com/dashboard/settings/api-tokens. Format:
        `aky_<32 random chars>`.

````