services / openai

OpenAI IP ranges

Official OpenAI ranges from the vendor's publication, split by purpose: adsbot, agents, chatgpt-user, connectors, gptbot, searchbot. The ranges below render live from the signed slash0 feed.

The feed classifies this service as mixed: not every purpose runs on vendor-dedicated infrastructure. Review a purpose before treating its ranges as exclusively OpenAI.

purposedirectionIPv4IPv6
openai/adsbotingress··
openai/agentsingress··
openai/chatgpt-useringress··
openai/connectorsingress··
openai/gptbotingress··
openai/searchbotingress··

openai/adsbot

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_adsbot" {
  service = "openai"
  purpose = "adsbot"
}

resource "aws_security_group_rule" "openai_adsbot" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_adsbot.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

openai/agents

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_agents" {
  service = "openai"
  purpose = "agents"
}

resource "aws_security_group_rule" "openai_agents" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_agents.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

openai/chatgpt-user

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_chatgpt_user" {
  service = "openai"
  purpose = "chatgpt-user"
}

resource "aws_security_group_rule" "openai_chatgpt_user" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_chatgpt_user.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

openai/connectors

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_connectors" {
  service = "openai"
  purpose = "connectors"
}

resource "aws_security_group_rule" "openai_connectors" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_connectors.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

openai/gptbot

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_gptbot" {
  service = "openai"
  purpose = "gptbot"
}

resource "aws_security_group_rule" "openai_gptbot" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_gptbot.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

openai/searchbot

Direction: ingress. Ranges OpenAI connects from (webhook delivery); use them in security group ingress rules on your receiving endpoints.

loading ranges from the feed…

Terraform

data "ipranges_ingress" "openai_searchbot" {
  service = "openai"
  purpose = "searchbot"
}

resource "aws_security_group_rule" "openai_searchbot" {
  type              = "ingress"
  from_port         = 443
  to_port           = 443
  protocol          = "tcp"
  cidr_blocks       = data.ipranges_ingress.openai_searchbot.ipv4_cidrs
  security_group_id = aws_security_group.app.id
}

keep rules current automatically

Terraform data sources refresh only when you run an apply. The hosted tier publishes the same data via AWS managed prefix lists (slash0.openai.adsbot.v4 and so on), shared into your account via AWS RAM: rules reference one pl-… id and update within a minute of a vendor change, with removals held through a 72 hour grace window. Request early access or read how it works.

provenance

Ranges come from OpenAI's official publication: https://developers.openai.com/api/docs/guides/ip-addresses. Fetched sources:

Every publish is signed (ECDSA P-256 over the feed index, each service document hash-chained to it) and every range change is recorded in the changelog. Verification steps: security. Provider setup: quickstart.