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

# List Procore projects in a company

> Lists the Procore projects the authenticated user's own Procore session can access in one company, including inactive projects. Pages with `page` / `per_page`, passed through to Procore.




## OpenAPI

````yaml get /procore/companies/{company_id}/projects
openapi: 3.0.3
info:
  version: 0.1.1
  title: Datagrid API
  description: Datagrid API
servers:
  - url: https://api.datagrid.com/v1
security:
  - BearerAuth: []
paths:
  /procore/companies/{company_id}/projects:
    get:
      tags:
        - Procore
      summary: List Procore projects in a company
      description: >
        Lists the Procore projects the authenticated user's own Procore session
        can access in one company, including inactive projects. Pages with
        `page` / `per_page`, passed through to Procore.
      operationId: ProcoreAccess.listProjects
      parameters:
        - name: company_id
          in: path
          required: true
          description: The Procore company ID (digits only).
          schema:
            type: string
            pattern: ^[0-9]+$
        - $ref: '#/components/parameters/ProcorePage'
        - $ref: '#/components/parameters/ProcorePerPage'
      responses:
        '200':
          description: Accessible Procore projects in the company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcoreProjectList'
        '400':
          description: '`company_id` is not a positive integer.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '404':
          description: The company does not exist or the user cannot access it.
        '409':
          description: >-
            The user has no connected Procore session (`error` is
            `procore_not_connected`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcoreNotConnectedError'
        '429':
          description: >-
            Rate limit exceeded. The request has been throttled because the rate
            limit for this endpoint has been reached. Check the `Retry-After`
            response header and retry after the specified number of seconds.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
        '502':
          description: Procore did not return a usable response.
components:
  parameters:
    ProcorePage:
      name: page
      in: query
      required: false
      description: 1-based page number. Values below 1 are treated as 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    ProcorePerPage:
      name: per_page
      in: query
      required: false
      description: Items per page. Values above 100 are clamped to 100.
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
  schemas:
    ProcoreProjectList:
      type: object
      required:
        - object
        - data
        - has_more
        - next_page
      properties:
        object:
          type: string
          enum:
            - list
        data:
          type: array
          items:
            $ref: '#/components/schemas/ProcoreProject'
        has_more:
          type: boolean
          description: Whether another page follows.
        next_page:
          type: integer
          nullable: true
          description: The `page` value for the next page, or `null` on the last page.
    BadRequestError:
      type: object
      description: >-
        Returned when the request is invalid. For skill-related errors,
        `details.unresolved` lists each token that failed resolution with its
        reason.
      required:
        - error
        - message
        - status_code
      properties:
        status_code:
          type: integer
          description: The HTTP status code (400).
        error:
          type: string
          description: A machine-readable error code.
        message:
          type: string
          description: A human-readable error message.
        details:
          type: object
          description: Additional structured error details.
          properties:
            reason:
              type: string
              description: A short description of the validation failure.
            unresolved:
              type: array
              description: >-
                For skill resolution errors: the tokens that could not be
                resolved.
              items:
                type: object
                required:
                  - token
                  - reason
                properties:
                  token:
                    type: string
                    description: >-
                      The skill ID or slash key that could not be resolved,
                      exactly as supplied in the request.
                  reason:
                    type: string
                    enum:
                      - not-found
                      - disabled
                    description: >-
                      `not-found`: no skill reachable by this API key matches
                      the ID or slash key. Skills that exist but are out of
                      scope (user-scoped, or owned by another account) report
                      `not-found` as well. `disabled`: the skill is reachable
                      but has been disabled.
    ProcoreNotConnectedError:
      type: object
      required:
        - error
        - message
        - status_code
      properties:
        status_code:
          type: integer
          description: The HTTP status code (409).
        error:
          type: string
          enum:
            - procore_not_connected
          description: A machine-readable error code.
        message:
          type: string
          description: A human-readable error message.
    RateLimitError:
      type: object
      description: >-
        Returned when the rate limit is exceeded. Rate limits are enforced per
        teamspace, endpoint path, and HTTP method over a 60-second sliding
        window. Each endpoint may have its own limit — check the
        X-RateLimit-Limit response header for the effective value.
      required:
        - error
        - message
        - retryable
        - status_code
      properties:
        status_code:
          type: integer
          description: The HTTP status code (429).
        statusCode:
          type: integer
          deprecated: true
          description: Deprecated. Use status_code instead.
        error:
          type: string
          enum:
            - rate_limit_exceeded
          description: The error code identifying this as a rate limit error.
        message:
          type: string
          description: A human-readable error message.
        mitigation:
          type: string
          description: Suggested action to resolve the error.
        retryable:
          type: boolean
          description: Whether the request can be retried after a delay.
        details:
          type: object
          properties:
            reason:
              type: string
              description: A detailed explanation of why the rate limit was exceeded.
    ProcoreProject:
      type: object
      required:
        - id
        - name
        - company_id
      properties:
        id:
          type: string
          description: The Procore project ID.
        name:
          type: string
          description: The project name in Procore.
        company_id:
          type: string
          description: The Procore company ID the project belongs to.
        project_number:
          type: string
          description: The project number in Procore, when set.
        active:
          type: boolean
          description: Whether the project is active in Procore, when reported.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````

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