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

# Get Consent Screen Details

> Validates an OAuth application and returns the details PostQueen shows on the consent screen. The consent page at `https://app.postqueen.ai/oauth/authorize` calls this endpoint, so you normally redirect the user to that page instead of calling this yourself. It is useful for checking that a `client_id` is valid.

This endpoint lives outside `/public/v1` and takes no API key.

You are building the consent step and you want to know whether the `client_id` you are holding is real before you send anyone anywhere. This is the call that tells you.

PostQueen's own consent page calls it too. Redirecting a user to `https://app.postqueen.ai/oauth/authorize` is the normal path, and that page hits this endpoint to draw your app's name, description and picture on the screen they approve. Walk the whole flow on [OAuth2 Authentication](/public-api/oauth).

<Note>
  This endpoint sits outside `/public/v1` and takes no API key. A `client_id` that does not resolve comes back as a `400` reading `Invalid client_id`.
</Note>


## OpenAPI

````yaml GET /oauth/authorize
openapi: 3.1.0
info:
  title: PostQueen Public API
  description: >-
    API for managing social media posts, integrations, and media uploads in
    PostQueen.


    ## Authentication


    All endpoints require an API key passed in the `Authorization` header:


    ```

    Authorization: your-api-key

    ```


    Get your API key from PostQueen Settings.


    ## Rate Limits


    The create-post endpoint is capped per organization per hour. With
    `API_LIMIT` unset the ceiling is **90 requests per hour**; the shipped
    Compose files and PostQueen Cloud both set it to **30**. No other endpoint
    is throttled.


    ## Terminology


    The UI uses `channel`, but the API uses `integration`. They refer to the
    same thing.


    ## Supported Platforms (34)


    **Social Platforms:** X (Twitter), LinkedIn, LinkedIn Page, Facebook,
    Instagram, Instagram Standalone, Threads, Bluesky, Mastodon, Warpcast
    (Farcaster), Nostr, VK


    **Video Platforms:** YouTube, TikTok


    **Community Platforms:** Reddit, Lemmy, Discord, Slack, Telegram, Kick,
    Twitch


    **Design Platforms:** Pinterest, Dribbble


    **Blogging Platforms:** Medium, Dev.to, Hashnode, WordPress, Moltbook


    **Business:** Google My Business (GMB), Listmonk (newsletters), Whop, Skool
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.postqueen.ai/public/v1
    description: PostQueen Cloud
  - url: https://{host}/api/public/v1
    description: Self-hosted
    variables:
      host:
        default: localhost:4007
        description: Your PostQueen instance domain
security:
  - ApiKeyAuth: []
tags:
  - name: Integrations
    description: Manage connected social media channels
  - name: Posts
    description: Create, list, and delete posts
  - name: Uploads
    description: Upload media files
  - name: Notifications
    description: View organization notifications
  - name: Analytics
    description: View analytics for integrations and posts
  - name: Video Generation
    description: Generate videos with AI
  - name: OAuth
    description: Authorize third-party apps and exchange codes for access tokens
paths:
  /oauth/authorize:
    get:
      tags:
        - OAuth
      summary: Get consent screen details
      description: >-
        Validates an OAuth application and returns the details PostQueen shows
        on the consent screen. The consent page at
        `https://app.postqueen.ai/oauth/authorize` calls this endpoint, so you
        normally redirect the user to that page instead of calling this
        yourself. It is useful for checking that a `client_id` is valid.


        This endpoint lives outside `/public/v1` and takes no API key.
      operationId: oauthAuthorize
      parameters:
        - name: client_id
          in: query
          required: true
          description: Your app's Client ID (starts with `pca_`)
          schema:
            type: string
        - name: response_type
          in: query
          required: true
          description: Must be `code`. No other response type is supported.
          schema:
            type: string
            enum:
              - code
        - name: state
          in: query
          required: false
          description: >-
            An opaque value echoed back in the response and in the redirect to
            your app. Use a random value to protect against CSRF.
          schema:
            type: string
      responses:
        '200':
          description: The OAuth application is valid
          content:
            application/json:
              schema:
                type: object
                properties:
                  app:
                    type: object
                    properties:
                      name:
                        type: string
                        description: App name shown on the consent screen
                      description:
                        type: string
                        nullable: true
                        description: App description shown on the consent screen
                      picture:
                        $ref: '#/components/schemas/MediaFile'
                        description: >-
                          The app's profile picture, or null when none is set.
                          Use `picture.path` as the image URL.
                      clientId:
                        type: string
                        description: The app's Client ID
                      redirectUrl:
                        type: string
                        description: >-
                          Where PostQueen sends the user after they approve or
                          deny
                  state:
                    type: string
                    description: >-
                      The `state` you sent, echoed back. Absent if you did not
                      send one.
              example:
                app:
                  name: My Scheduler
                  description: Schedules posts from my CRM
                  picture: null
                  clientId: pca_VklHTpdEJ6dJ73FHQEJ97qVA0lcMDsrs
                  redirectUrl: https://yourapp.com/callback
                state: random123
        '400':
          description: Unknown `client_id`, or a missing/invalid query parameter
          content:
            application/json:
              example:
                statusCode: 400
                message: Invalid client_id
      security: []
      servers:
        - url: https://api.postqueen.ai
          description: PostQueen Cloud
        - url: https://{host}/api
          description: Self-hosted
          variables:
            host:
              default: localhost:5000
              description: Your PostQueen instance domain
components:
  schemas:
    MediaFile:
      type: object
      properties:
        id:
          type: string
          description: Unique file ID
        name:
          type: string
          description: Stored file name
        originalName:
          type:
            - string
            - 'null'
          description: The name the file was uploaded under
        path:
          type: string
          description: Public URL of the file. This is the value to send as an attachment
        thumbnail:
          type:
            - string
            - 'null'
          description: Thumbnail URL, set for video
        alt:
          type:
            - string
            - 'null'
          description: Alt text, when one was set
      example:
        id: e639003b-f727-4a1e-87bd-74a2c48ae41e
        name: image.png
        originalName: launch-banner.png
        path: https://uploads.postqueen.ai/image.png
        thumbnail: null
        alt: null
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Your PostQueen API key

````