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

# Get a project's workflow graph

> Returns every job in the project and configured lifecycle, idle, manual invocation permission, and external webhook source connections. Connections are derived from executable trigger configuration and current permission grants. Webhook edge labels are short readable provider or event names; details may include configured technical resource identifiers as secondary context.

Requires the projects:read scope.

Accepts a scoped bearer token or interactive owner session.



## OpenAPI

````yaml /openapi.yaml get /api/v1/projects/{projectId}/graph
openapi: 3.1.0
info:
  title: Factorize API
  version: 1.0.0
  description: >-
    Versioned Factorize REST API. See the hosted docs for examples and OAuth
    discovery.
  x-dashboard-auth: >-
    Access-token and authorized-client management and trace replay operations
    require an interactive owner session; all other operations accept a suitably
    scoped bearer token or owner session.
servers:
  - url: https://app.factorize.sh
security:
  - bearerAuth: []
paths:
  /api/v1/projects/{projectId}/graph:
    get:
      tags:
        - projects
      summary: Get a project's workflow graph
      description: >-
        Returns every job in the project and configured lifecycle, idle, manual
        invocation permission, and external webhook source connections.
        Connections are derived from executable trigger configuration and
        current permission grants. Webhook edge labels are short readable
        provider or event names; details may include configured technical
        resource identifiers as secondary context.


        Requires the projects:read scope.


        Accepts a scoped bearer token or interactive owner session.
      operationId: get_api_v1_projects_projectId_graph
      parameters:
        - name: projectId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Complete project graph
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        type:
                          type: string
                          enum:
                            - job
                            - webhook
                        label:
                          type: string
                        jobKind:
                          type: string
                          enum:
                            - Agent
                            - Code
                        enabled:
                          type: boolean
                        runningCount:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        concurrencyLimit:
                          type: integer
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                        provider:
                          type: string
                        resource:
                          type: string
                      required:
                        - id
                        - type
                        - label
                      additionalProperties: false
                  edges:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        source:
                          type: string
                        target:
                          type: string
                        label:
                          type: string
                        details:
                          type: string
                        kind:
                          type: string
                          enum:
                            - lifecycle
                            - idle
                            - manual
                            - webhook
                        enabled:
                          type: boolean
                      required:
                        - id
                        - source
                        - target
                        - label
                        - kind
                        - enabled
                      additionalProperties: false
                required:
                  - nodes
                  - edges
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '409':
          $ref: '#/components/responses/Error409'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
      security:
        - bearerAuth: []
        - cookieAuth: []
components:
  responses:
    Error400:
      description: Invalid request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error401:
      description: Invalid or revoked credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error403:
      description: Missing scope or required owner session
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error404:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error409:
      description: Operation conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error429:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error500:
      description: Internal error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Error503:
      description: Service unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
    cookieAuth:
      type: apiKey
      in: cookie
      name: factorize_session

````

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