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

# GitHub Actions

> Trigger Cloudgeni scans from GitHub Actions by calling the API directly instead of depending on a separate managed GitHub Action.

# GitHub Actions

Cloudgeni does not need a special managed GitHub Action to be useful in CI.

The stable pattern is to call the scan API directly from your workflow.

## Static Analysis Example

```yaml theme={null}
name: cloudgeni-static-analysis

on:
  workflow_dispatch:
  pull_request:

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger Cloudgeni static analysis
        env:
          CLOUDGENI_API_URL: ${{ secrets.CLOUDGENI_API_URL }}
          CLOUDGENI_API_KEY: ${{ secrets.CLOUDGENI_API_KEY }}
          CLOUDGENI_ORG_ID: ${{ secrets.CLOUDGENI_ORG_ID }}
          CLOUDGENI_REPO_ID: ${{ secrets.CLOUDGENI_REPO_ID }}
        run: |
          curl --fail --silent --show-error \
            -X POST \
            -H "Content-Type: application/json" \
            -H "X-CLOUDGENI-API-KEY: $CLOUDGENI_API_KEY" \
            "$CLOUDGENI_API_URL/api/v1/organizations/$CLOUDGENI_ORG_ID/workspaces/$CLOUDGENI_WORKSPACE_ID/repositories/$CLOUDGENI_REPO_ID/static-analysis" \
            -d '{"analysisEngine":"checkov","excludedPaths":[]}'
```

## If You Want Cloud Scans Instead

Call the cloud infra scan endpoint instead:

`/api/v1/organizations/:orgId/workspaces/:workspaceId/cloud/:integrationId/:analysisEngine/infra-scans`

Typical `analysisEngine` values in the current product:

* `prowler-ocsf`
* `aws-security-hub`
* `azure-defender`

## Next

See [Scanning API](/api-reference/scanning-api) for the endpoint shapes that back these examples.
