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

# Get Project

> Get a project by ID



## OpenAPI

````yaml /api-reference/openapi.json get /projects/{project_id}
openapi: 3.1.0
info:
  title: Aspect Platform API
  description: A FastAPI application for Aspect Platform functionality
  version: 0.0.0
servers:
  - url: https://api.aspect.inc
security:
  - BearerAuth: []
  - ApiKeyAuth: []
paths:
  /projects/{project_id}:
    get:
      tags:
        - Projects
      summary: Get Project
      description: Get a project by ID
      operationId: get_Projects_projects_project_id
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Project Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectGetResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    ProjectGetResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Project ID
        name:
          type: string
          title: Name
          description: Project name
        icon:
          anyOf:
            - $ref: '#/components/schemas/CustomIconData'
            - type: 'null'
          description: Project icon data
        dominant_color:
          anyOf:
            - type: string
            - type: 'null'
          title: Dominant Color
          description: Dominant color extracted from project icon (hex format)
        root_directory_id:
          type: string
          format: uuid
          title: Root Directory Id
          description: Root directory ID - all user directories/assets are children of this
        trash_directory_id:
          type: string
          format: uuid
          title: Trash Directory Id
          description: Trash directory ID - deleted assets are moved here
        default_role:
          $ref: '#/components/schemas/ResourceRole'
          description: Default role for workspace members accessing this project
        default_actions:
          type: integer
          title: Default Actions
          description: Default permission bitmap inherited by children
        default_features:
          items:
            $ref: '#/components/schemas/FeatureType'
          type: array
          title: Default Features
          description: >-
            NOT IN USE - Default features to be performed on all assets in this
            project
        num_assets:
          type: integer
          title: Num Assets
          description: Number of assets in project
        size_bytes:
          type: integer
          title: Size Bytes
          description: Total size of assets in bytes
        total_tokens_used:
          type: integer
          title: Total Tokens Used
          description: Total tokens used
        duration:
          type: number
          title: Duration
          description: Total duration in seconds
        chunk_size:
          type: integer
          title: Chunk Size
          description: Chunk size in bytes for chunked uploads
        actions:
          type: integer
          title: Actions
          description: User's permission bitmap on this project
        created_by_user_id:
          type: string
          format: uuid
          title: Created By User Id
          description: ID of the user that created the project
        created:
          type: string
          format: date-time
          title: Created
          description: Creation timestamp
        updated:
          type: string
          format: date-time
          title: Updated
          description: Last update timestamp
        last_accessed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Last Accessed At
          description: Current user's last project access
      type: object
      required:
        - id
        - name
        - root_directory_id
        - trash_directory_id
        - default_role
        - default_actions
        - default_features
        - num_assets
        - size_bytes
        - total_tokens_used
        - duration
        - chunk_size
        - actions
        - created_by_user_id
        - created
        - updated
      title: ProjectGetResponse
      description: API response schema for getting a single project
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CustomIconData:
      properties:
        type:
          $ref: '#/components/schemas/CustomIconType'
          description: Type of icon (emoji, upload, color, or url)
        emoji:
          anyOf:
            - type: string
            - type: 'null'
          title: Emoji
          description: Emoji character (if type is emoji)
        color:
          anyOf:
            - type: string
            - type: 'null'
          title: Color
          description: Hex color code (if type is color)
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: External URL (if type is url)
        upload:
          anyOf:
            - $ref: '#/components/schemas/AttachmentResponse'
            - type: 'null'
          description: >-
            Full attachment object (if type is upload, populated by service
            layer)
      type: object
      required:
        - type
      title: CustomIconData
      description: |-
        Icon data for storage and API responses.

        Stored in JSONB `icon` column. For upload type icons:
        - The `upload` field is None in the database
        - The actual attachment is stored via `icon_attachment_id` FK
        - Service layer populates `upload` from the attachment when loading
    ResourceRole:
      type: string
      enum:
        - owner
        - member
        - member_limited
        - full_access
        - editor
        - commenter
        - downloader
        - viewer
        - no_access
      title: ResourceRole
      description: |-
        Unified role enum for both workspace and project permissions.
        Stored as PostgreSQL ENUM type 'resourcerole' in database.

        Pattern follows existing enums like AssetType:
        - Python enum: ResourceRole.OWNER = "owner" (lowercase value)
        - PostgreSQL ENUM: 'OWNER', 'MEMBER', etc. (uppercase in DB)
        - SQLAlchemy: sa.Enum('OWNER', 'MEMBER', ..., name='resourcerole')
    FeatureType:
      type: string
      enum:
        - content_proxy
        - audio_proxy
        - preview
        - scene_detect
        - embedding
        - transcription
        - transcript_index
        - scene_extract
        - metadata
        - scrub_preview
        - doc_proxy
        - doc_index
        - face_index_asset
        - face_match_asset
        - scene_caption
      title: FeatureType
      description: Feature types processed by the system
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    CustomIconType:
      type: string
      enum:
        - emoji
        - upload
        - color
        - url
      title: CustomIconType
      description: Type of custom icon
    AttachmentResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Resource identifier
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: Signed download URL
        url_expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Url Expires At
          description: When the URL expires
        user_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: User Id
          description: User who uploaded. None if deleted.
        filename:
          type: string
          title: Filename
          description: Original filename
        mime_type:
          type: string
          title: Mime Type
          description: MIME type of the file
        size_bytes:
          type: integer
          title: Size Bytes
          description: File size in bytes
        uploaded:
          type: boolean
          title: Uploaded
          description: Whether the file has been uploaded
        created:
          type: string
          format: date-time
          title: Created
          description: Created timestamp
        updated:
          type: string
          format: date-time
          title: Updated
          description: Updated timestamp
      type: object
      required:
        - id
        - user_id
        - filename
        - mime_type
        - size_bytes
        - uploaded
        - created
        - updated
      title: AttachmentResponse
      description: |-
        API response schema for an attachment.

        Inherits id, url, url_expires_at from SignedUrlData.
        Overrides url and url_expires_at as Optional since attachments
        may not be uploaded yet.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT in Authorization header. 'Bearer ' prefix optional.
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Aspect API key (sk_...) in Authorization header. 'Bearer ' optional.

````