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

# Get a post

> Returns the full detail for a single post, including the structured result payload, call metadata, owner, and team information.

<Tip>Use `fileId` (not `postId`) to link summaries and scorecards for the same call — a single call can produce both a summary post and a scorecard post.</Tip>


## OpenAPI

````yaml /api/openapi.yaml get /api/public/v1/posts/{id}
openapi: 3.1.0
info:
  title: OnePerfectSlice API
  version: 1.0.0
  description: |
    Programmatic access to OnePerfectSlice. Authenticate with a team-scoped
    API key (Bearer sk_...) obtained from Org Settings → API Keys.
servers:
  - url: https://app.oneperfectslice.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /api/public/v1/posts/{id}:
    get:
      tags:
        - Posts
      summary: Get a post
      description: >-
        Returns the full detail for a single post, including the structured
        result payload, call metadata, owner, and team information.
      operationId: getPost
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Full post detail
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                properties:
                  data:
                    $ref: '#/components/schemas/PublicPostResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Post not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - bearerAuth: []
components:
  schemas:
    PublicPostResponse:
      type: object
      required:
        - fileId
        - callTypeId
        - callTypeName
        - templateType
        - title
        - published
        - result
        - postCreatedAt
        - fileCreatedAt
        - user
        - team
      properties:
        postId:
          type: integer
          format: int64
          nullable: true
        fileId:
          type: integer
          format: int64
        callTypeId:
          type: integer
          format: int64
        callTypeName:
          type: string
        templateType:
          type: string
          enum:
            - summary
            - scorecard
        title:
          type: string
        published:
          type: boolean
        result:
          type: object
          description: Structured post payload
          additionalProperties: true
        postCreatedAt:
          type: string
          format: date-time
        fileCreatedAt:
          type: string
          format: date-time
        user:
          $ref: '#/components/schemas/PublicPostUserInfo'
        team:
          $ref: '#/components/schemas/PublicPostTeamInfo'
        callOwnerName:
          type: string
          nullable: true
        callOwnerEmail:
          type: string
          nullable: true
        companyDomain:
          type: string
          nullable: true
        externalUrl:
          type: string
          nullable: true
        aiGeneratedTitle:
          type: string
          nullable: true
    ApiError:
      type: object
      description: Standard error envelope for all public API error responses
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable UPPER_SNAKE_CASE error code
              example: INVALID_TOKEN
            message:
              type: string
              description: Human-readable error description
              example: Token is invalid
            details:
              type: object
              description: Optional additional error context
              additionalProperties: true
    PublicPostUserInfo:
      type: object
      required:
        - id
        - email
      properties:
        id:
          type: integer
          format: int64
        email:
          type: string
        fullName:
          type: string
          nullable: true
    PublicPostTeamInfo:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
  responses:
    Unauthorized:
      description: Authentication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
          examples:
            missingToken:
              value:
                error:
                  code: MISSING_TOKEN
                  message: Authorization header with Bearer token is required
            invalidToken:
              value:
                error:
                  code: INVALID_TOKEN
                  message: Token is invalid
            tokenRevoked:
              value:
                error:
                  code: TOKEN_REVOKED
                  message: Token has been revoked
            tokenExpired:
              value:
                error:
                  code: TOKEN_EXPIRED
                  message: Token has expired
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key with sk_ prefix. Create one in Org Settings → API Keys.
      x-default: sk_your_api_key

````