# List agent graphs

GET https://app.launchdarkly.com/api/v2/projects/{projectKey}/agent-graphs

Get a list of all agent graphs in the given project. Returns metadata only, without edge data.

Reference: https://launchdarkly.com/docs/api/ai-configs/list-agent-graphs

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: LaunchDarkly REST API
  version: 1.0.0
paths:
  /api/v2/projects/{projectKey}/agent-graphs:
    get:
      operationId: list-agent-graphs
      summary: List agent graphs
      description: >-
        Get a list of all agent graphs in the given project. Returns metadata
        only, without edge data.
      tags:
        - subpackage_aiConfigs
      parameters:
        - name: projectKey
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: The number of resources to return.
          required: false
          schema:
            type: integer
        - name: offset
          in: query
          description: >-
            Where to start in the list. Use this with pagination. For example,
            an offset of 10 skips the first ten items and then returns the next
            items in the list, up to the query `limit`.
          required: false
          schema:
            type: integer
        - name: Authorization
          in: header
          required: true
          schema:
            type: string
        - name: LD-API-Version
          in: header
          description: Version of the endpoint.
          required: true
          schema:
            $ref: >-
              #/components/schemas/ApiV2ProjectsProjectKeyAgentGraphsGetParametersLdApiVersion
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentGraphs'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
servers:
  - url: https://app.launchdarkly.com
  - url: https://app.launchdarkly.us
components:
  schemas:
    ApiV2ProjectsProjectKeyAgentGraphsGetParametersLdApiVersion:
      type: string
      enum:
        - beta
      title: ApiV2ProjectsProjectKeyAgentGraphsGetParametersLdApiVersion
    AiConfigsLink:
      type: object
      properties:
        href:
          type: string
        type:
          type: string
      title: AiConfigsLink
    PaginatedLinks:
      type: object
      properties:
        first:
          $ref: '#/components/schemas/AiConfigsLink'
        last:
          $ref: '#/components/schemas/AiConfigsLink'
        next:
          $ref: '#/components/schemas/AiConfigsLink'
        prev:
          $ref: '#/components/schemas/AiConfigsLink'
        self:
          $ref: '#/components/schemas/AiConfigsLink'
      required:
        - self
      title: PaginatedLinks
    ActionSpecifier:
      type: string
      title: ActionSpecifier
    AiConfigsAccessDeniedReasonEffect:
      type: string
      enum:
        - allow
        - deny
      description: Whether this statement should allow or deny actions on the resources.
      title: AiConfigsAccessDeniedReasonEffect
    AiConfigsAccessDeniedReason:
      type: object
      properties:
        resources:
          type: array
          items:
            type: string
          description: Resource specifier strings
        notResources:
          type: array
          items:
            type: string
          description: >-
            Targeted resources are the resources NOT in this list. The
            <code>resources</code> and <code>notActions</code> fields must be
            empty to use this field.
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSpecifier'
          description: Actions to perform on a resource
        notActions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSpecifier'
          description: >-
            Targeted actions are the actions NOT in this list. The
            <code>actions</code> and <code>notResources</code> fields must be
            empty to use this field.
        effect:
          $ref: '#/components/schemas/AiConfigsAccessDeniedReasonEffect'
          description: >-
            Whether this statement should allow or deny actions on the
            resources.
        role_name:
          type: string
      required:
        - effect
      title: AiConfigsAccessDeniedReason
    AiConfigsAccessDenied:
      type: object
      properties:
        action:
          type: string
        reason:
          $ref: '#/components/schemas/AiConfigsAccessDeniedReason'
      required:
        - action
        - reason
      title: AiConfigsAccessDenied
    AiConfigsAccessAllowedReasonEffect:
      type: string
      enum:
        - allow
        - deny
      description: Whether this statement should allow or deny actions on the resources.
      title: AiConfigsAccessAllowedReasonEffect
    AiConfigsAccessAllowedReason:
      type: object
      properties:
        resources:
          type: array
          items:
            type: string
          description: Resource specifier strings
        notResources:
          type: array
          items:
            type: string
          description: >-
            Targeted resources are the resources NOT in this list. The
            <code>resources</code> and <code>notActions</code> fields must be
            empty to use this field.
        actions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSpecifier'
          description: Actions to perform on a resource
        notActions:
          type: array
          items:
            $ref: '#/components/schemas/ActionSpecifier'
          description: >-
            Targeted actions are the actions NOT in this list. The
            <code>actions</code> and <code>notResources</code> fields must be
            empty to use this field.
        effect:
          $ref: '#/components/schemas/AiConfigsAccessAllowedReasonEffect'
          description: >-
            Whether this statement should allow or deny actions on the
            resources.
        role_name:
          type: string
      required:
        - effect
      title: AiConfigsAccessAllowedReason
    AiConfigsAccessAllowedRep:
      type: object
      properties:
        action:
          type: string
        reason:
          $ref: '#/components/schemas/AiConfigsAccessAllowedReason'
      required:
        - action
        - reason
      title: AiConfigsAccessAllowedRep
    AiConfigsAccess:
      type: object
      properties:
        denied:
          type: array
          items:
            $ref: '#/components/schemas/AiConfigsAccessDenied'
        allowed:
          type: array
          items:
            $ref: '#/components/schemas/AiConfigsAccessAllowedRep'
      required:
        - denied
        - allowed
      title: AiConfigsAccess
    MaintainerMember:
      type: object
      properties:
        _id:
          type: string
        email:
          type: string
        firstName:
          type: string
        lastName:
          type: string
        role:
          type: string
      required:
        - _id
        - email
        - role
      title: MaintainerMember
    AiConfigsMaintainerTeam:
      type: object
      properties:
        key:
          type: string
        name:
          type: string
      required:
        - key
        - name
      title: AiConfigsMaintainerTeam
    AgentGraph__maintainer:
      oneOf:
        - $ref: '#/components/schemas/MaintainerMember'
        - $ref: '#/components/schemas/AiConfigsMaintainerTeam'
      title: AgentGraph__maintainer
    AgentGraphEdgeHandoff:
      type: object
      properties: {}
      description: The handoff options from the source AI Config to the target AI Config
      title: AgentGraphEdgeHandoff
    AgentGraphEdge:
      type: object
      properties:
        key:
          type: string
          description: A unique key for this edge within the graph
        sourceConfig:
          type: string
          description: The AI Config key that is the source of this edge
        targetConfig:
          type: string
          description: The AI Config key that is the target of this edge
        handoff:
          $ref: '#/components/schemas/AgentGraphEdgeHandoff'
          description: >-
            The handoff options from the source AI Config to the target AI
            Config
      required:
        - key
        - sourceConfig
        - targetConfig
      description: An edge in an agent graph connecting two AI Configs
      title: AgentGraphEdge
    AgentGraph:
      type: object
      properties:
        _access:
          $ref: '#/components/schemas/AiConfigsAccess'
        key:
          type: string
          description: A unique key for the agent graph
        name:
          type: string
          description: A human-readable name for the agent graph
        description:
          type: string
          description: A description of the agent graph
        _maintainer:
          $ref: '#/components/schemas/AgentGraph__maintainer'
        rootConfigKey:
          type: string
          description: The AI Config key of the root node
        edges:
          type: array
          items:
            $ref: '#/components/schemas/AgentGraphEdge'
          description: The edges in the graph
        createdAt:
          type: integer
          format: int64
        updatedAt:
          type: integer
          format: int64
      required:
        - key
        - name
        - createdAt
        - updatedAt
      description: An agent graph representing a directed graph of AI Configs
      title: AgentGraph
    AgentGraphs:
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/PaginatedLinks'
        items:
          type: array
          items:
            $ref: '#/components/schemas/AgentGraph'
        totalCount:
          type: integer
      required:
        - items
        - totalCount
      description: A collection of agent graphs
      title: AgentGraphs
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
      required:
        - message
        - code
      title: Error
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization

```

## SDK Code Examples

```python
import requests

url = "https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs"

headers = {
    "LD-API-Version": "beta",
    "Authorization": "<apiKey>"
}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs';
const options = {method: 'GET', headers: {'LD-API-Version': 'beta', Authorization: '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("LD-API-Version", "beta")
	req.Header.Add("Authorization", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["LD-API-Version"] = 'beta'
request["Authorization"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs")
  .header("LD-API-Version", "beta")
  .header("Authorization", "<apiKey>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs', [
  'headers' => [
    'Authorization' => '<apiKey>',
    'LD-API-Version' => 'beta',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs");
var request = new RestRequest(Method.GET);
request.AddHeader("LD-API-Version", "beta");
request.AddHeader("Authorization", "<apiKey>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "LD-API-Version": "beta",
  "Authorization": "<apiKey>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.launchdarkly.com/api/v2/projects/projectKey/agent-graphs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```