List App Repositories

List the Git repository an app deploys from — none or one. Repositories are connected and disconnected in the app's Manage page, with the person's own GitHub or GitLab access. Requires write access and app building in the workspace that manages the app. Returns the complete set in one page; nextCursor is always null. Workspace API keys return 403; use a personal API key or scoped OAuth token.

OAuth scope: api:read.

GET/api/v2/apps/{appId}/repos
X-API-Key<token>

Your Agent Serve API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.

In: header

Path Parameters

appId*string

App identifier.

Length1 <= length <= 64

Query Parameters

workspaceId*string

Workspace that manages the app.

Length1 <= length <= 128

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://agentserve.valnoraelric.com/api/v2/apps/string/repos?workspaceId=string" \  -H "X-API-Key: YOUR_API_KEY"
{
  "data": [
    {
      "id": "string",
      "appId": "string",
      "provider": "github",
      "repository": "string",
      "defaultBranch": "string",
      "instanceUrl": "string",
      "branchRules": [
        {
          "branch": "string",
          "workspaceIds": [
            "string"
          ]
        }
      ],
      "credentialAvailable": true,
      "createdAt": "2019-08-24T14:15:22Z",
      "updatedAt": "2019-08-24T14:15:22Z"
    }
  ],
  "nextCursor": "string"
}
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Invalid request"
  }
}
{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Authentication required"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Insufficient workspace permissions",
    "details": {
      "code": "INSUFFICIENT_WORKSPACE_ROLE"
    }
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Not found"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "API rate limit exceeded",
    "details": {
      "retryAfter": "2026-01-01T00:00:30.000Z"
    }
  }
}
{
  "error": {
    "code": "INTERNAL_ERROR",
    "message": "Internal server error"
  }
}
{
  "error": {
    "code": "SERVICE_UNAVAILABLE",
    "message": "Service temporarily unavailable"
  }
}