Egress

Manage OpenWAF Egress, the gateway between your AI agents and their providers, with targets, credentials, agents and events.

On this page

OpenWAF Egress sits between your AI agents and their providers. Agents call the gateway with a substitute token, and the gateway adds the real provider credential, inspects the request and blocks injections, data leaks and disallowed destinations. Reads need the readonly role and writes admin, both organization-wide; creating and changing agents, targets and credentials and reading events require the egress feature to be enabled for the organization (otherwise 403 feature_disabled). See OpenWAF Egress.

OperationEndpoint
Get egress statusGET /v1/orgs/{org}/egress
List targetsGET /v1/orgs/{org}/egress/targets
Create targetPOST /v1/orgs/{org}/egress/targets
Delete targetDELETE /v1/orgs/{org}/egress/targets/{target}
Set target credentialPUT /v1/orgs/{org}/egress/targets/{target}/credential
Delete target credentialDELETE /v1/orgs/{org}/egress/targets/{target}/credential
List agentsGET /v1/orgs/{org}/egress/agents
Create agentPOST /v1/orgs/{org}/egress/agents
Get agentGET /v1/orgs/{org}/egress/agents/{agent}
Update agentPATCH /v1/orgs/{org}/egress/agents/{agent}
Delete agentDELETE /v1/orgs/{org}/egress/agents/{agent}
Rotate agent tokenPOST /v1/orgs/{org}/egress/agents/{agent}/rotate-token
List egress eventsGET /v1/orgs/{org}/egress/events
Stream egress eventsGET /v1/orgs/{org}/egress/events/stream

Get egress status

GET /v1/orgs/{org}/egress

Returns the egress status of the organization. It can be read without the egress feature (enabled false). Without the feature, reading and deleting agents, targets and credentials keeps working so the organization can remove its keys.

Required role: readonly or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).

Response

FieldTypeDescription
enabledbooleanThe organization has the egress feature.
gateway_urlstring
credentials_availablebooleanCredentials can be stored right now.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).

Example

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "enabled": false,
  "gateway_url": "https://egress.openwaf.dev",
  "credentials_available": false
}

List targets

GET /v1/orgs/{org}/egress/targets

Lists the egress targets, the catalog providers and your own, with the status of their credential.

Required role: readonly or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).

Response

FieldTypeDescription
items[].idstringId.
items[].namestringName.
items[].base_urlstring
items[].hoststring
items[].auth_headerstring
items[].auth_prefixstring
items[].custombooleanOwn target of the organization (false = catalog).
items[].docs_urlstring
items[].credentialEgressCredential

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).

Example

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "id": "openrouter",
      "name": "example.com",
      "base_url": "https://llm.example.com/v1",
      "host": "www.example.com",
      "auth_header": "Authorization",
      "auth_prefix": "Bearer ",
      "custom": false,
      "docs_url": "https://platform.openai.com/docs/api-reference",
      "credential": {
        "fingerprint": "sha256:3f9a1c2b7d4e",
        "updated_at": "2026-10-27T09:30:00Z",
        "updated_by": "token:11111111-2222-4333-8444-555555555555"
      }
    }
  ]
}

Create target

POST /v1/orgs/{org}/egress/targets

Creates an own HTTPS target. base_url must be https:// on port 443 with a public DNS name (no IP address, user, query or fragment). On every request the gateway also checks that the name only resolves to public addresses (ssrf_blocked).

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).

Request body

Content type application/json.

FieldTypeRequiredDescription
idstringYesCannot be a catalog id. Pattern ^[a-z][a-z0-9-]{1,31}$.
namestringYesName. 1 to 100 characters.
base_urlstringYesAt most 2048 characters.
auth_headerstringNoDefault Authorization. Pattern ^[A-Za-z0-9-]{1,64}$.
auth_prefixstringNoBearer by default with Authorization, empty with other headers. At most 32 characters.

Response

FieldTypeDescription
idstringId.
namestringName.
base_urlstring
hoststring
auth_headerstring
auth_prefixstring
custombooleanOwn target of the organization (false = catalog).
docs_urlstring
credentialEgressCredential

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
409The current state does not allow it (conflict).
422Validation error (invalid).

Example

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "id": "internal-llm",
    "name": "Internal LLM",
    "base_url": "https://llm.example.com/v1"
  }'
201
{
  "id": "openrouter",
  "name": "example.com",
  "base_url": "https://llm.example.com/v1",
  "host": "www.example.com",
  "auth_header": "Authorization",
  "auth_prefix": "Bearer ",
  "custom": false,
  "docs_url": "https://platform.openai.com/docs/api-reference",
  "credential": {
    "fingerprint": "sha256:3f9a1c2b7d4e",
    "updated_at": "2026-10-27T09:30:00Z",
    "updated_by": "token:11111111-2222-4333-8444-555555555555"
  }
}

Delete target

DELETE /v1/orgs/{org}/egress/targets/{target}

Deletes an own target and its credential. Catalog targets cannot be deleted.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
targetpathstringYesEgress target id: a catalog id such as openai or the id of an own target. Pattern ^[a-z][a-z0-9-]{1,31}$.

Response

  • 204: Deleted. No body.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).
409target_in_use: some agent allows it.
422invalid: catalog targets cannot be deleted.

Example

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Set target credential

PUT /v1/orgs/{org}/egress/targets/{target}/credential

Stores or replaces the provider credential of a target. It is write-only, kept in a dedicated secret store, never logged and never returned; the answer only carries its fingerprint (sha256: and 12 hexadecimal characters).

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
targetpathstringYesEgress target id: a catalog id such as openai or the id of an own target. Pattern ^[a-z][a-z0-9-]{1,31}$.

Request body

Content type application/json.

FieldTypeRequiredDescription
secretstringYes1 to 8192 characters.

Response

FieldTypeDescription
idstringId.
namestringName.
base_urlstring
hoststring
auth_headerstring
auth_prefixstring
custombooleanOwn target of the organization (false = catalog).
docs_urlstring
credentialEgressCredential

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).
422Validation error (invalid).
502A dependency refused or did not answer; retry later.
503Not available right now (unavailable); retry later.

Example

curl -X PUT "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai/credential" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "secret": "sk-…"
  }'
200
{
  "id": "openrouter",
  "name": "example.com",
  "base_url": "https://llm.example.com/v1",
  "host": "www.example.com",
  "auth_header": "Authorization",
  "auth_prefix": "Bearer ",
  "custom": false,
  "docs_url": "https://platform.openai.com/docs/api-reference",
  "credential": {
    "fingerprint": "sha256:3f9a1c2b7d4e",
    "updated_at": "2026-10-27T09:30:00Z",
    "updated_by": "token:11111111-2222-4333-8444-555555555555"
  }
}

Delete target credential

DELETE /v1/orgs/{org}/egress/targets/{target}/credential

Deletes the provider credential of a target, every stored version. Idempotent; it also works without the egress feature.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
targetpathstringYesEgress target id: a catalog id such as openai or the id of an own target. Pattern ^[a-z][a-z0-9-]{1,31}$.

Response

  • 204: Deleted (or did not exist). No body.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).
502A dependency refused or did not answer; retry later.
503Not available right now (unavailable); retry later.

Example

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/targets/openai/credential" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

List agents

GET /v1/orgs/{org}/egress/agents

Lists the egress agents of the organization.

Required role: readonly or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).

Response

FieldTypeDescription
items[].idstring (uuid)Id.
items[].namestringName.
items[].descriptionstring
items[].allowed_targetsarray of string
items[].enforce_injectionboolean
items[].block_dlpboolean
items[].disabledboolean
items[].token_prefixstringStart of the token (OWE_TOKEN_ and 6 characters), to recognise it.
items[].token_rotated_atstring (date-time)
items[].created_atstring (date-time)Creation time.
items[].created_bystringWho created it (actor).
items[].updated_atstring (date-time)Last change.
items[].base_urlsmap of stringSDK base URL for each allowed target.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).

Example

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
      "name": "example.com",
      "description": "Support assistant",
      "allowed_targets": [
        "openai"
      ],
      "enforce_injection": false,
      "block_dlp": false,
      "disabled": false,
      "token_prefix": "OWE_TOKEN_ab12cd",
      "token_rotated_at": "2026-10-27T09:30:00Z",
      "created_at": "2026-10-27T09:30:00Z",
      "created_by": "token:11111111-2222-4333-8444-555555555555",
      "updated_at": "2026-10-27T09:30:00Z",
      "base_urls": {
        "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
      }
    }
  ]
}

Create agent

POST /v1/orgs/{org}/egress/agents

Creates an agent allowed to call some targets through the gateway. Its substitute token is returned only in this answer. name is part of the agent's gateway URLs and cannot change.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).

Request body

Content type application/json.

FieldTypeRequiredDescription
namestringYesUnique in the organization; part of its gateway URLs and cannot change. Pattern ^[a-z0-9][a-z0-9-]{0,62}$.
descriptionstringNoAt most 500 characters.
allowed_targetsarray of stringYes1 to 32 items.
enforce_injectionbooleanNoDefault true.
block_dlpbooleanNoDefault true.
disabledbooleanNoDefault false.

Response

FieldTypeDescription
agentEgressAgent
tokenstringSubstitute token OWE_TOKEN_…; shown only once (only its SHA-256 is stored).

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
409The current state does not allow it (conflict).
422Validation error (invalid).

Example

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "name": "support-bot",
    "allowed_targets": [
      "openai"
    ]
  }'
201
{
  "agent": {
    "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
    "name": "example.com",
    "description": "Support assistant",
    "allowed_targets": [
      "openai"
    ],
    "enforce_injection": false,
    "block_dlp": false,
    "disabled": false,
    "token_prefix": "OWE_TOKEN_ab12cd",
    "token_rotated_at": "2026-10-27T09:30:00Z",
    "created_at": "2026-10-27T09:30:00Z",
    "created_by": "token:11111111-2222-4333-8444-555555555555",
    "updated_at": "2026-10-27T09:30:00Z",
    "base_urls": {
      "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
    }
  },
  "token": "owf_…"
}

Get agent

GET /v1/orgs/{org}/egress/agents/{agent}

Returns one egress agent.

Required role: readonly or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
agentpathstring (uuid)YesEgress agent id.

Response

FieldTypeDescription
idstring (uuid)Id.
namestringName.
descriptionstring
allowed_targetsarray of string
enforce_injectionboolean
block_dlpboolean
disabledboolean
token_prefixstringStart of the token (OWE_TOKEN_ and 6 characters), to recognise it.
token_rotated_atstring (date-time)
created_atstring (date-time)Creation time.
created_bystringWho created it (actor).
updated_atstring (date-time)Last change.
base_urlsmap of stringSDK base URL for each allowed target.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).

Example

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "name": "example.com",
  "description": "Support assistant",
  "allowed_targets": [
    "openai"
  ],
  "enforce_injection": false,
  "block_dlp": false,
  "disabled": false,
  "token_prefix": "OWE_TOKEN_ab12cd",
  "token_rotated_at": "2026-10-27T09:30:00Z",
  "created_at": "2026-10-27T09:30:00Z",
  "created_by": "token:11111111-2222-4333-8444-555555555555",
  "updated_at": "2026-10-27T09:30:00Z",
  "base_urls": {
    "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
  }
}

Update agent

PATCH /v1/orgs/{org}/egress/agents/{agent}

Changes an agent. Fields left out keep their value; the name cannot change.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
agentpathstring (uuid)YesEgress agent id.

Request body

Content type application/json.

FieldTypeRequiredDescription
descriptionstringNoAt most 500 characters.
allowed_targetsarray of stringNo1 to 32 items.
enforce_injectionbooleanNo
block_dlpbooleanNo
disabledbooleanNo

Response

FieldTypeDescription
idstring (uuid)Id.
namestringName.
descriptionstring
allowed_targetsarray of string
enforce_injectionboolean
block_dlpboolean
disabledboolean
token_prefixstringStart of the token (OWE_TOKEN_ and 6 characters), to recognise it.
token_rotated_atstring (date-time)
created_atstring (date-time)Creation time.
created_bystringWho created it (actor).
updated_atstring (date-time)Last change.
base_urlsmap of stringSDK base URL for each allowed target.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).
422Validation error (invalid).

Example

curl -X PATCH "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{
    "allowed_targets": [
      "openai",
      "anthropic"
    ]
  }'
200
{
  "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
  "name": "example.com",
  "description": "Support assistant",
  "allowed_targets": [
    "openai"
  ],
  "enforce_injection": false,
  "block_dlp": false,
  "disabled": false,
  "token_prefix": "OWE_TOKEN_ab12cd",
  "token_rotated_at": "2026-10-27T09:30:00Z",
  "created_at": "2026-10-27T09:30:00Z",
  "created_by": "token:11111111-2222-4333-8444-555555555555",
  "updated_at": "2026-10-27T09:30:00Z",
  "base_urls": {
    "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
  }
}

Delete agent

DELETE /v1/orgs/{org}/egress/agents/{agent}

Deletes an egress agent; its token stops working.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
agentpathstring (uuid)YesEgress agent id.

Response

  • 204: Deleted. No body.

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).

Example

curl -X DELETE "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Rotate agent token

POST /v1/orgs/{org}/egress/agents/{agent}/rotate-token

Gives the agent a new substitute token, returned only in this answer. The previous one stops working as soon as the gateways load the new configuration.

Required role: admin or higher. Organization-wide.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
agentpathstring (uuid)YesEgress agent id.

Response

FieldTypeDescription
agentEgressAgent
tokenstringSubstitute token OWE_TOKEN_…; shown only once (only its SHA-256 is stored).

Errors

StatusDescription
403The token's role or limits do not allow it (forbidden).
404Not found, or not visible to the token (not_found).

Example

curl -X POST "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/agents/4a2c6e8b-0d1f-4c3e-9b5a-7d9f1b3e5a7c/rotate-token" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "agent": {
    "id": "a5614527-0ce6-43be-ad1d-d012b7394867",
    "name": "example.com",
    "description": "Support assistant",
    "allowed_targets": [
      "openai"
    ],
    "enforce_injection": false,
    "block_dlp": false,
    "disabled": false,
    "token_prefix": "OWE_TOKEN_ab12cd",
    "token_rotated_at": "2026-10-27T09:30:00Z",
    "created_at": "2026-10-27T09:30:00Z",
    "created_by": "token:11111111-2222-4333-8444-555555555555",
    "updated_at": "2026-10-27T09:30:00Z",
    "base_urls": {
      "openrouter": "https://egress.openwaf.dev/v1/agent/support-bot/proxy/openrouter"
    }
  },
  "token": "owf_…"
}

List egress events

GET /v1/orgs/{org}/egress/events

Lists the requests blocked by the egress gateway, newest first, with the same filters and shape as List events. Each block is an event with action block, attack_type egress, the code in rule_name (injection_detected, data_leak_blocked, ssrf_blocked, egress_blocked, body_too_large), the target in host, the agent name in user_agent and the detection ids in msg. The request body is never included.

Required role: readonly or higher. Organization-wide. Needs the egress feature.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
sincequerystring (date-time)NoRFC 3339; until minus 24 hours by default.
untilquerystring (date-time)NoRFC 3339, exclusive; now by default. At most 31 days of range.
actionquerystringNoRepeatable (any of the values, at most 20). One of block, log, challenge, allow.
ipquerystringNoIPv4 or IPv6 (normalized); repeatable.
hostquerystringNoExact name (case-insensitive); repeatable. 1 to 253 characters.
pathquerystringNoExact path (1-2048 bytes); repeatable. 1 to 2048 characters.
statusqueryintegerNoHTTP status of the response; repeatable. From 100 to 599.
rule_namequerystringNoExact rule_name (the code of an egress block, e.g. injection_detected); repeatable. 1 to 200 characters.
not_actionquerystringNoExcludes those actions; repeatable. One of block, log, challenge, allow.
not_ipquerystringNoExcludes those IPs; repeatable.
not_hostquerystringNoExcludes those names; repeatable. 1 to 253 characters.
not_pathquerystringNoExcludes those exact paths; repeatable. 1 to 2048 characters.
not_statusqueryintegerNoExcludes those HTTP statuses; repeatable. From 100 to 599.
not_rule_namequerystringNoExcludes those rule_name values; repeatable. 1 to 200 characters.
qquerystringNoFree text (case-insensitive) in host, path, IP, method, rule_name, attack_type, msg, user agent, country, rule_id and status. At most 200 characters.
limitqueryintegerNoMaximum number of items. Default 100. From 1 to 1000.
cursorquerystringNonext_cursor of the previous page.

Response

  • 200: Returns an object with the fields below.
FieldTypeDescription
itemsarray of EdgeEvent
next_cursorstring

Errors

StatusDescription
400Malformed request (bad_request).
403The token's role or limits do not allow it (forbidden).
503Not available right now (unavailable); retry later.

Example

curl "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/events?rule_name=injection_detected" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
200
{
  "items": [
    {
      "event_id": "8b3e5f7a-1c2d-4e6f-9a0b-3c5d7e9f1a2b",
      "zone_id": "6f1d2c3b-8a4e-4b7d-9c21-5e3f7a8b9c0d",
      "node_id": "edge-node",
      "ts": "2026-10-27T09:29:58Z",
      "host": "www.example.com",
      "ip": "203.0.113.10",
      "method": "POST",
      "path": "/login",
      "status": 429,
      "action": "block",
      "rule_id": 0,
      "rule_name": "rate_rule:login",
      "attack_type": "rate_limit",
      "msg": "",
      "country_code": "ES",
      "asn": 64500,
      "user_agent": "Mozilla/5.0",
      "tls_fingerprint": "",
      "received_at": "2026-10-27T09:29:59Z",
      "rate_rule": "login"
    }
  ],
  "next_cursor": ""
}

Stream egress events

GET /v1/orgs/{org}/egress/events/stream

Streams the egress gateway blocks as Server-Sent Events, with the same frames, resumption and limits as Stream events and the events of List egress events.

Required role: readonly or higher. Organization-wide. Needs the egress feature.

Parameters

NameInTypeRequiredDescription
orgpathstring (uuid)YesOrganization id. Every route checks that it is the token's organization (otherwise 404).
Last-Event-IDheaderstringNoid of the last event received from a stream; takes precedence over cursor.
cursorquerystringNoid of an event of a previous stream: starts right after it.
actionquerystringNoRepeatable (any of the values, at most 20). One of block, log, challenge, allow.
ipquerystringNoIPv4 or IPv6 (normalized); repeatable.
hostquerystringNoExact name (case-insensitive); repeatable. 1 to 253 characters.
pathquerystringNoExact path (1-2048 bytes); repeatable. 1 to 2048 characters.
statusqueryintegerNoHTTP status of the response; repeatable. From 100 to 599.
rule_namequerystringNoExact rule_name (the code of an egress block, e.g. injection_detected); repeatable. 1 to 200 characters.
not_actionquerystringNoExcludes those actions; repeatable. One of block, log, challenge, allow.
not_ipquerystringNoExcludes those IPs; repeatable.
not_hostquerystringNoExcludes those names; repeatable. 1 to 253 characters.
not_pathquerystringNoExcludes those exact paths; repeatable. 1 to 2048 characters.
not_statusqueryintegerNoExcludes those HTTP statuses; repeatable. From 100 to 599.
not_rule_namequerystringNoExcludes those rule_name values; repeatable. 1 to 200 characters.
qquerystringNoFree text (case-insensitive) in host, path, IP, method, rule_name, attack_type, msg, user agent, country, rule_id and status. At most 200 characters.

Response

  • 200: Server-Sent Events stream. Body of type text/event-stream.

Errors

StatusDescription
400Malformed request (bad_request).
403The token's role or limits do not allow it (forbidden).
429Too many requests (rate_limited); wait Retry-After seconds.
503Not available right now (unavailable); retry later.

Example

Not in the SDKs: open the stream with EventSource or any Server-Sent Events client.

curl -N "https://dash.openwaf.dev/v1/orgs/$OPENWAF_ORG/egress/events/stream" \
  -H "Authorization: Bearer $OPENWAF_TOKEN"

Last updated:

↑↓ to navigate↵ to openesc to close