Skip to content

CLI & GitHub Action

The SDKs learn a release from the first request it serves. A deploy marker records it when it ships instead, so the release marker on the charts, the releases table, alert release context and Ask Reqly put it where it really started, even for a quiet service. The same tools upload the OpenAPI spec from CI.

GitHub Action

- uses: tanisheesh/reqly@v1
  with:
    collector-url: https://reqly.example.com
    api-key: ${{ secrets.REQLY_INGEST_KEY }}
    service: checkout-api
    environment: production          # optional
    openapi-spec: openapi.yaml       # optional: upload it too
Input Default
collector-url required
api-key required an ingest key, or a project key with the ingest scope. From a secret
service required the service name the SDK reports
release ${{ github.sha }}
environment empty
openapi-spec empty path to a JSON or YAML spec; empty skips the upload
base-path empty prefix for the spec's paths, e.g. /api
deploy-marker true false to only upload the spec

It only needs curl and bash, which every GitHub runner has. A refused request fails the step with the collector's reply.

reqly CLI

Comes with the Python SDK (0.8+):

pipx install reqly        # or: pip install reqly

export REQLY_COLLECTOR_URL=https://reqly.example.com REQLY_API_KEY=...

reqly deploy --service checkout-api --environment production    # release from GITHUB_SHA, RENDER_GIT_COMMIT, ...
reqly deploy --service checkout-api --release v42 --at 2026-10-23T09:00:00Z
reqly openapi push --service checkout-api openapi.yaml --base-path /api
reqly ping                                                      # collector up? key accepted?

The release comes from --release, REQLY_RELEASE, or the CI and hosting variables the SDKs read. --collector-url / --api-key override the environment. Every command exits non-zero on a failure.

The API behind them

curl -X POST https://reqly.example.com/v1/deployments \
  -H "X-Reqly-Key: $REQLY_API_KEY" -H "Content-Type: application/json" \
  -d '{"service_name": "checkout-api", "release": "v42", "environment": "production"}'

deployed_at (ISO 8601) is optional and defaults to now; it may be up to 400 days back. Sending a marker again is harmless: the earliest time a release was seen, deployed or served, is kept. See the HTTP API.