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

# List pull requests

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Lists pull requests in an imported app's repository on GitHub, most recently updated first. This works on apps imported from GitHub.

Set `scope` to `mine` for your own open pull requests, or `merged` for the pull requests merged into the branch the app was imported from, whoever opened them. `mine` needs your GitHub account connected to Base44; without it, the list is empty.

Pages hold `limit` pull requests, 10 by default. Pass `next_cursor` back as `cursor` with the same `scope` and `limit` to get the next page. Because the order follows updates, a pull request updated while you page can move between pages.

This endpoint is limited to 30 requests per minute per user, reported in the `X-RateLimit-*` headers.

<Note>This endpoint accepts a personal API key or personal access token belonging to a user with editor access to the app. A read-only key is refused, and workspace API keys are not accepted. Send credentials in a header: an `api_key` query parameter is refused.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json get /api/apps/{app_id}/imported/git/pull-requests
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - PersonalAccessTokenAuth: []
paths:
  /api/apps/{app_id}/imported/git/pull-requests:
    get:
      summary: List pull requests
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Lists pull requests in an imported app's repository on GitHub, most
        recently updated first. This works on apps imported from GitHub.


        Set `scope` to `mine` for your own open pull requests, or `merged` for
        the pull requests merged into the branch the app was imported from,
        whoever opened them. `mine` needs your GitHub account connected to
        Base44; without it, the list is empty.


        Pages hold `limit` pull requests, 10 by default. Pass `next_cursor` back
        as `cursor` with the same `scope` and `limit` to get the next page.
        Because the order follows updates, a pull request updated while you page
        can move between pages.


        This endpoint is limited to 30 requests per minute per user, reported in
        the `X-RateLimit-*` headers.


        <Note>This endpoint accepts a personal API key or personal access token
        belonging to a user with editor access to the app. A read-only key is
        refused, and workspace API keys are not accepted. Send credentials in a
        header: an `api_key` query parameter is refused.</Note>


        <Warning>The response includes fields beyond the ones documented here.
        Don't rely on undocumented response fields, as they can change at any
        time.</Warning>
      operationId: list_pull_requests_api_apps__app_id__imported_git_pull_requests_get
      parameters:
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app.
            title: App Id
          description: ID of the app.
          example: 6820f3a4e7b91d003c45a1f2
        - name: scope
          in: query
          required: false
          schema:
            enum:
              - mine
              - merged
            type: string
            description: >-
              `mine` for your own open pull requests, `merged` for the ones
              merged into the base branch.
            default: mine
            title: Scope
          description: >-
            `mine` for your own open pull requests, `merged` for the ones merged
            into the base branch.
          example: mine
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            description: How many pull requests to return, from 1 to 100.
            minimum: 1
            maximum: 100
            default: 10
            title: Limit
          description: How many pull requests to return, from 1 to 100.
          example: 10
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            description: >-
              `next_cursor` from the previous page. Send the same `scope` and
              `limit` with it.
            title: Cursor
          description: >-
            `next_cursor` from the previous page. Send the same `scope` and
            `limit` with it.
          example: gAAAAABn
        - name: branch_id
          in: query
          required: false
          schema:
            type: string
            description: >-
              ID of the branch to work on, as returned by [List
              branches](/api-reference/list-branches). Omit it to work on the
              app's main branch.
            title: Branch Id
          description: >-
            ID of the branch to work on, as returned by [List
            branches](/api-reference/list-branches). Omit it to work on the
            app's main branch.
          example: 68f1a2b3c4d5e6f708192a3b
      responses:
        '200':
          description: A page of pull requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PullRequestListPage'
              example:
                items:
                  - number: 42
                    title: Add checkout flow
                    html_url: https://github.com/acme/shop/pull/42
                    head_branch: feature/checkout
                    merged: false
                    author_login: octocat
                    author_avatar_url: https://avatars.githubusercontent.com/u/583231?v=4
                    made_in_base44: true
                total: 1
                base_branch: main
        '400':
          description: >-
            `invalid_limit`: `limit` is outside 1 to 100. `invalid_cursor`: The
            cursor is invalid, expired, or was made with a different `scope` or
            `limit`.
          content:
            application/json:
              examples:
                invalid_limit:
                  summary: invalid_limit
                  value:
                    error:
                      code: invalid_limit
                      message: Limit must be between 1 and 100.
                      details: {}
                invalid_cursor:
                  summary: invalid_cursor
                  value:
                    error:
                      code: invalid_cursor
                      message: Reload the pull request list.
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '401':
          description: >-
            `unauthenticated`: Missing or invalid credentials, or credentials
            sent as an `api_key` query parameter.
          content:
            application/json:
              examples:
                unauthenticated:
                  summary: unauthenticated
                  value:
                    error:
                      code: unauthenticated
                      message: 'Use Authorization: Bearer credentials.'
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '403':
          description: >-
            `forbidden`: You don't have editor access to this app, your API key
            is read-only, or you used a workspace API key.
            `github_account_required`: Connect your GitHub account to Base44.
            `github_user_access_denied`: Your GitHub account can't access the
            repository.
          content:
            application/json:
              examples:
                forbidden:
                  summary: forbidden
                  value:
                    error:
                      code: forbidden
                      message: You don't have editor access to this app.
                      details: {}
                github_account_required:
                  summary: github_account_required
                  value:
                    error:
                      code: github_account_required
                      message: >-
                        Connect your own GitHub account to access this
                        repository.
                      details:
                        reason: github_account_required
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '404':
          description: '`not_found`: The app doesn''t exist or isn''t imported from GitHub.'
          content:
            application/json:
              examples:
                not_found:
                  summary: not_found
                  value:
                    error:
                      code: not_found
                      message: Not found
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '409':
          description: >-
            `github_access_missing`: Base44 has no access to this repository.
            `github_workspace_connection_required`: The repository isn't
            connected to GitHub in the app's workspace.
          content:
            application/json:
              examples:
                github_access_missing:
                  summary: github_access_missing
                  value:
                    error:
                      code: github_access_missing
                      message: Base44 has no access to this repository.
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '422':
          description: >-
            `invalid_request`: `scope` isn't `mine` or `merged`, or `limit`
            isn't a number.
          content:
            application/json:
              examples:
                invalid_request:
                  summary: invalid_request
                  value:
                    error:
                      code: invalid_request
                      message: Invalid request
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '429':
          description: >-
            `rate_limited`: More than 30 requests in a minute. Retry after
            `Retry-After` seconds.
          content:
            application/json:
              examples:
                rate_limited:
                  summary: rate_limited
                  value:
                    error:
                      code: rate_limited
                      message: Rate limit exceeded.
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
        '502':
          description: >-
            `pull_requests_unavailable`: GitHub couldn't be reached. Retry
            later.
          content:
            application/json:
              examples:
                pull_requests_unavailable:
                  summary: pull_requests_unavailable
                  value:
                    error:
                      code: pull_requests_unavailable
                      message: Couldn't read pull requests from GitHub. Try again.
                      details: {}
              schema:
                $ref: '#/components/schemas/StandardErrorEnvelope'
      security:
        - PersonalAccessTokenAuth:
            - full_access
components:
  schemas:
    PullRequestListPage:
      properties:
        items:
          items:
            $ref: '#/components/schemas/PullRequestListItem'
          type: array
          title: Items
          description: The pull requests on this page, most recently updated first.
          example:
            - author_avatar_url: https://avatars.githubusercontent.com/u/583231?v=4
              author_login: octocat
              head_branch: feature/checkout
              html_url: https://github.com/acme/shop/pull/42
              made_in_base44: true
              merged: false
              number: 42
              title: Add checkout flow
        total:
          type: integer
          title: Total
          description: Number of matching pull requests in total, across every page.
          example: 1
        base_branch:
          type: string
          title: Base Branch
          description: >-
            The branch the app was imported from. `merged` lists the pull
            requests merged into it.
          example: main
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Pass as `cursor` to get the next page, or `null` on the last page.
          example: gAAAAABn
      type: object
      required:
        - items
        - total
        - base_branch
        - next_cursor
      title: PullRequestListPage
    StandardErrorEnvelope:
      properties:
        error:
          $ref: '#/components/schemas/StandardError'
          description: What went wrong.
      type: object
      required:
        - error
      title: StandardErrorEnvelope
      description: The error body returned in the standard envelope.
    PullRequestListItem:
      properties:
        number:
          type: integer
          title: Number
          description: Pull request number on GitHub.
          example: 42
        title:
          type: string
          title: Title
          description: Title of the pull request.
          example: Add checkout flow
        html_url:
          type: string
          title: Html Url
          description: Link to the pull request on GitHub.
          example: https://github.com/acme/shop/pull/42
        head_branch:
          anyOf:
            - type: string
            - type: 'null'
          title: Head Branch
          description: The branch it merges from, or `null` for a pull request from a fork.
          example: feature/checkout
        merged:
          type: boolean
          title: Merged
          description: Whether it was merged.
          example: false
        merged_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Merged At
          description: When it was merged, as an ISO 8601 UTC timestamp, or `null`.
          example: '2026-10-28T09:15:00Z'
        author_login:
          anyOf:
            - type: string
            - type: 'null'
          title: Author Login
          description: GitHub login of the person who opened it.
          example: octocat
        author_avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Author Avatar Url
          description: URL of their GitHub avatar.
          example: https://avatars.githubusercontent.com/u/583231?v=4
        readiness:
          anyOf:
            - $ref: '#/components/schemas/PullRequestReadiness'
            - type: 'null'
          description: >-
            Whether it's ready to merge, or `null` when GitHub hasn't reported
            it yet.
        made_in_base44:
          type: boolean
          title: Made In Base44
          description: Whether it was opened from Base44.
          example: true
      type: object
      required:
        - number
        - title
        - html_url
        - head_branch
        - merged
        - merged_at
        - author_login
        - author_avatar_url
        - readiness
        - made_in_base44
      title: PullRequestListItem
    StandardError:
      properties:
        code:
          type: string
          title: Code
          description: >-
            Stable machine-readable cause of the failure. Match on this, not on
            `message`.
          example: not_found
        message:
          type: string
          title: Message
          description: Human-readable explanation. It isn't a stable contract.
          example: App not found
        details:
          additionalProperties: true
          type: object
          title: Details
          description: >-
            Structured context for the failure, or an empty object when there's
            none.
          example: {}
      type: object
      required:
        - code
        - message
      title: StandardError
    PullRequestReadiness:
      properties:
        checks:
          type: string
          enum:
            - success
            - pending
            - failure
            - none
            - unknown
          title: Checks
          description: Combined result of the pull request's CI checks.
          example: success
        review:
          type: string
          enum:
            - approved
            - changes_requested
            - required
            - none
            - unknown
          title: Review
          description: Review status.
          example: approved
        mergeable:
          type: string
          enum:
            - mergeable
            - conflicting
            - unknown
          title: Mergeable
          description: Whether GitHub can merge it without conflicts.
          example: mergeable
        unresolved_thread_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Unresolved Thread Count
          description: Review threads not resolved yet, or `null` when unknown.
          example: 0
      type: object
      required:
        - checks
        - review
        - mergeable
      title: PullRequestReadiness
  securitySchemes:
    PersonalAccessTokenAuth:
      type: http
      scheme: bearer
      description: >-
        Personal access token, sent as `Authorization: Bearer <token>`. Each
        operation lists the permission it needs: `read_only` or `full_access`. A
        full-access token can call every operation. A read-only token can call
        only the operations that list `read_only`; anything else returns 403
        `read_only_credential_route_not_allowed`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.