Reqflo Dev Docs
API reference and CLI docs in one Fumadocs site.
Developer docs
API reference
API reference and CLI docs live together on this Fumadocs page.
Introduction
Reqflo API
External API contract for Reqflo clients, automation, and the Reqflo CLI.
https://app.reqflo.comhttp://localhost:3100Authorization: Bearer YOUR_SECRET_TOKENAPI folder
Scans
Ingest API scans from external clients.
/api/scans/ingestIngest an API scan
Accepts normalized OpenAPI scan output from the Reqflo CLI. The organization is resolved from the API key and must not be included in the request body.
ingestScanRequest body
serviceobjectrequired+ Show Child Attributes
namestringmin 1 ...120requiredspecobjectrequired+ Show Child Attributes
hashstringmin 64 ...64requiredformatstringenum: openapirequiredversionstring...80titlestring...200endpointsobject[]...2000required+ Show Child Attributes
methodstringenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACErequiredpathstring...1000requiredoperationIdstring | null...200requiredtagsstring[]...20requiredsummarystring | null...300requiredfindingsobject[]...500required+ Show Child Attributes
codestring...120requiredseveritystringenum: info, low, medium, high, criticalrequiredmessagestring...500requiredmethodstring | nullenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE, requiredpathstring | null...1000requiredResponses
201Scan accepted and persisted.
400The request did not pass validation.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired401Authentication is required or invalid.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired403The authenticated principal lacks permission.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired413Scan payload is too large.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired/api/scans/ingestShell Curl⌄1curl https://app.reqflo.com/api/scans/ingest \2--request POST \3--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \4--header 'Content-Type: application/json' \5--data '{6"service": {7"name": "Billing API"8},9"spec": {10"hash": "8f14e45fceea167a5a36dedd4bea2543a6f6f6a4fc5f1fc9e2b192d7ab1b03c2",11"format": "openapi",12"version": "3.1.0",13"title": "Billing API"14},15"endpoints": [16{17"method": "POST",18"path": "/charges",19"operationId": "createCharge",20"tags": [21"Payments"22],23"summary": "Create charge"24}25],26"findings": []27}'
API folder
API Keys
Create, list, inspect, and revoke API keys.
/api/api-keysList API keys
listApiKeysParameters
| Name | In | Type | Required |
|---|---|---|---|
organizationId | query | object | required |
Responses
200API key metadata and scopes.
apiKeysobject[]required+ Show Child Attributes
namestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequired+ Show Child Attributes
typestringrequired400The request did not pass validation.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired401Authentication is required or invalid.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired403The authenticated principal lacks permission.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired/api/api-keysShell Curl⌄1curl https://app.reqflo.com/api/api-keys \2--request GET \3--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
/api/api-keysCreate an API key
Creates a scoped key and returns the raw key once. Store the raw key immediately.
createApiKeyRequest body
namestring...120requiredownerPrincipalTypestringenum: user, service_accountrequiredownerPrincipalIdstring | nulluuidscopesstring | object[]min items 1requiredexpiresAtstring | nulldate-timeResponses
201API key created.
+ Show Child Attributes
namestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequiredrawKeystringrequiredReturned once. Store it immediately.
warningstringrequired400The request did not pass validation.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired401Authentication is required or invalid.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired403The authenticated principal lacks permission.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired/api/api-keysShell Curl⌄1curl https://app.reqflo.com/api/api-keys \2--request POST \3--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \4--header 'Content-Type: application/json' \5--data '{6"organizationId": "00000000-0000-0000-0000-000000000000",7"name": "string",8"ownerPrincipalType": "user",9"ownerPrincipalId": "00000000-0000-0000-0000-000000000000",10"scopes": [11"string"12],13"expiresAt": "2026-01-01T00:00:00.000Z"14}'
/api/api-keys/{apiKeyId}Get API key metadata
getApiKeyParameters
| Name | In | Type | Required |
|---|---|---|---|
apiKeyId | path | object | required |
organizationId | query | object | required |
Responses
200API key metadata.
+ Show Child Attributes
namestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequired400The request did not pass validation.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired401Authentication is required or invalid.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired403The authenticated principal lacks permission.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired404The requested resource was not found.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired/api/api-keys/{apiKeyId}Shell Curl⌄1curl https://app.reqflo.com/api/api-keys/{apiKeyId} \2--request GET \3--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
/api/api-keys/{apiKeyId}/revokeRevoke an API key
revokeApiKeyParameters
| Name | In | Type | Required |
|---|---|---|---|
apiKeyId | path | object | required |
Request body
Responses
200API key revoked.
+ Show Child Attributes
namestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequired400The request did not pass validation.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired401Authentication is required or invalid.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired403The authenticated principal lacks permission.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired404The requested resource was not found.
errorobject+ Show Child Attributes
codestringrequiredmessagestringrequired/api/api-keys/{apiKeyId}/revokeShell Curl⌄1curl https://app.reqflo.com/api/api-keys/{apiKeyId}/revoke \2--request POST \3--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \4--header 'Content-Type: application/json' \5--data '{6"organizationId": "00000000-0000-0000-0000-000000000000"7}'
Models
Schemas
Named payloads and response models in the OpenAPI contract.
Uuid
stringIsoDateTime
stringErrorResponse
objecterrorobject+ Show Child Attributes
codestringrequiredmessagestringrequiredScanIngestionPayload
objectserviceobjectrequired+ Show Child Attributes
namestringmin 1 ...120requiredspecobjectrequired+ Show Child Attributes
hashstringmin 64 ...64requiredformatstringenum: openapirequiredversionstring...80titlestring...200endpointsobject[]...2000required+ Show Child Attributes
methodstringenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACErequiredpathstring...1000requiredoperationIdstring | null...200requiredtagsstring[]...20requiredsummarystring | null...300requiredfindingsobject[]...500required+ Show Child Attributes
codestring...120requiredseveritystringenum: info, low, medium, high, criticalrequiredmessagestring...500requiredmethodstring | nullenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE, requiredpathstring | null...1000requiredNormalizedEndpoint
objectmethodstringenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACErequiredpathstring...1000requiredoperationIdstring | null...200requiredtagsstring[]...20requiredsummarystring | null...300requiredNormalizedFinding
objectcodestring...120requiredseveritystringenum: info, low, medium, high, criticalrequiredmessagestring...500requiredmethodstring | nullenum: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, TRACE, requiredpathstring | null...1000requiredScanIngestionResult
objectCreateApiKeyRequest
objectnamestring...120requiredownerPrincipalTypestringenum: user, service_accountrequiredownerPrincipalIdstring | nulluuidscopesstring | object[]min items 1requiredexpiresAtstring | nulldate-timeCreatedApiKeyResult
object+ Show Child Attributes
namestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequiredrawKeystringrequiredReturned once. Store it immediately.
warningstringrequiredApiKey
objectnamestringrequiredprefixstringrequiredownerPrincipalTypestring | nullenum: user, service_account, ownerPrincipalIdstring | nulluuidownerDisplayNamestring | nullcreatedBystring | nullscopesobject[]required+ Show Child Attributes
idstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectexpiresAtstring | nulldate-timelastUsedAtstring | nulldate-timerevokedAtstring | nulldate-timestatusstringenum: active, expired, revokedrequiredApiKeyScope
objectidstringpermissionstringrequiredresourceTypestring | null...80resourceIdstring | nulluuidserviceIdstring | nulluuidenvironmentIdstring | nulluuidworkflowIdstring | nulluuidresourceConstraintsobjectPrincipalSummary
objecttypestringrequiredCLI
Scan OpenAPI specs from the command line
The current CLI surface is focused on scan ingestion. It reads a local OpenAPI JSON or YAML file, extracts normalized endpoints, and submits the result to Reqflo with API key authentication.
Install
The CLI package is named @reqflo/cli. During local development, link it from the repository:
cd reqflo-cli npm install npm link reqflo --help
Once published, install it globally from npm:
npm install -g @reqflo/cli
Configure authentication
Create an API key in Reqflo with the scopes required for scan ingestion. The scan endpoint resolves the organization from the API key, so do not send an organization ID in the payload.
export REQFLO_API_KEY=rf_live_... export REQFLO_API_URL=https://app.reqflo.com
The scan flow typically needs scans:create, services:read, services:create, services:update, endpoints:read, and endpoints:write.
Scan command
Use reqflo scan to upload a local OpenAPI spec.
reqflo scan \ --service "Billing API" \ --spec ./openapi.yaml \ --api-key rf_live_... \ --api-url https://app.reqflo.com
| Option | Description |
|---|---|
--service <name> | Service name to create or update in Reqflo. |
--spec <path> | Local OpenAPI JSON or YAML file to scan. |
--api-key <key> | Reqflo scoped API key. You can also set REQFLO_API_KEY. |
--api-url <url> | Reqflo backend URL. You can also set REQFLO_API_URL or REQFLO_BASE_URL. |
Output
A successful scan returns the created scan run, endpoint count, and finding count.
Scan ingested: 68a3129a-7f6c-4f5d-9bb9-b1cf61f492c1 Result URL: https://app.reqflo.com/scan-runs/68a3129a-7f6c-4f5d-9bb9-b1cf61f492c1 Endpoints: 24; findings: 0
Common errors
API key required: pass--api-keyor setREQFLO_API_KEY.--spec is required: provide a local OpenAPI JSON or YAML file.OpenAPI spec is too large: the CLI currently limits spec files to 10 MB.scan ingestion failed: inspect the API response code and message from the Reqflo backend.