Http Attributes

49 attributes in this category.31 stable·18 deprecated

49 attributes

Stable Attributes

http.fragment

stringScrub: AutoVisibility: PublicOTel: False

The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.

Example#details
Changelog
v0.0.0
Raw JSON
{
  "key": "http.fragment",
  "brief": "The fragments present in the URI. Note that this contains the leading # character, while the `url.fragment` attribute does not.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "#details",
  "changelog": [
    {
      "version": "0.0.0"
    }
  ]
}

http.query

stringScrub: AutoVisibility: PublicOTel: False

The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.

Scrubbing ReasonQuery string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information.
Example?foo=bar&bar=baz
Changelog
v0.0.0
Raw JSON
{
  "key": "http.query",
  "brief": "The query string present in the URL. Note that this contains the leading ? character, while the `url.query` attribute does not.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto",
    "reason": "Query string values can contain sensitive information. Clients should attempt to scrub parameters that might contain sensitive information."
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "?foo=bar&bar=baz",
  "changelog": [
    {
      "version": "0.0.0"
    }
  ]
}

http.request.body.data

stringScrub: AutoVisibility: PublicOTel: False

HTTP request body data. Can be given as string or structural data of any format.

Example[{"role": "user", "message": "hello"}]
Changelog
v0.6.0#336Added http.request.body.data attribute
Raw JSON
{
  "key": "http.request.body.data",
  "brief": "HTTP request body data. Can be given as string or structural data of any format.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "[{\"role\": \"user\", \"message\": \"hello\"}]",
  "changelog": [
    {
      "version": "0.6.0",
      "prs": [
        336
      ],
      "description": "Added http.request.body.data attribute"
    }
  ]
}

http.request.body.decoded_size

integerScrub: ManualVisibility: PublicOTel: False

The decoded body size of the request (in bytes).

Additional Context
  • This is the size after content decoding. Set it only when the decoded size is actually known, for example by measuring a decompressed request stream.
  • Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.request.body.size` for that.
Changelog
next#574Added http.request.body.decoded_size attribute
Raw JSON
{
  "key": "http.request.body.decoded_size",
  "brief": "The decoded body size of the request (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 456,
  "alias": [
    "http.request_content_length_uncompressed"
  ],
  "additional_context": [
    "This is the size after content decoding. Set it only when the decoded size is actually known, for example by measuring a decompressed request stream.",
    "Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.request.body.size` for that."
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.request.body.decoded_size attribute"
    }
  ]
}

http.request.body.size

integerScrub: ManualVisibility: PublicOTel: True

The encoded body size of the request (in bytes).

Additional Context
  • This is the on-the-wire (encoded) size. The `content-length` header always carries the encoded size, so set this attribute whenever `content-length` is known, regardless of whether `content-encoding` is present.
Changelog
next#574Added http.request.body.size attribute
Raw JSON
{
  "key": "http.request.body.size",
  "brief": "The encoded body size of the request (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 123,
  "alias": [
    "http.request_content_length"
  ],
  "additional_context": [
    "This is the on-the-wire (encoded) size. The `content-length` header always carries the encoded size, so set this attribute whenever `content-length` is known, regardless of whether `content-encoding` is present."
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.request.body.size attribute"
    }
  ]
}

http.request.connect_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.

Example1732829555.111
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.connect_start",
  "brief": "The UNIX timestamp representing the time immediately before the user agent starts establishing the connection to the server to retrieve the resource.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.111,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.connection_end

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.

Example1732829555.15
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.connection_end",
  "brief": "The UNIX timestamp representing the time immediately after the browser finishes establishing the connection to the server to retrieve the resource. The timestamp value includes the time interval to establish the transport connection, as well as other time intervals such as TLS handshake and SOCKS authentication.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.15,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.domain_lookup_end

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.

Example1732829555.201
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.domain_lookup_end",
  "brief": "The UNIX timestamp representing the time immediately after the browser finishes the domain-name lookup for the resource.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.201,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.domain_lookup_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.

Example1732829555.322
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.domain_lookup_start",
  "brief": "The UNIX timestamp representing the time immediately before the browser starts the domain name lookup for the resource.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.322,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.fetch_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.

Example1732829555.389
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.fetch_start",
  "brief": "The UNIX timestamp representing the time immediately before the browser starts to fetch the resource.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.389,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.header.<key>

string[]Scrub: AutoVisibility: PublicOTel: TrueDynamic

HTTP request headers, <key> being the normalized HTTP Header name (lowercase), the value being the header values.

Examplehttp.request.header.custom-header=['foo', 'bar']
Dynamic SuffixYes - the key contains dynamic parts
Changelog
v0.4.0#201#204
v0.1.0#103
Raw JSON
{
  "key": "http.request.header.<key>",
  "brief": "HTTP request headers, <key> being the normalized HTTP Header name (lowercase), the value being the header values.",
  "has_dynamic_suffix": true,
  "type": "string[]",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "http.request.header.custom-header=['foo', 'bar']",
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        201,
        204
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        103
      ]
    }
  ]
}

http.request.method

stringScrub: ManualVisibility: PublicOTel: True

The HTTP method used.

Changelog
v0.1.0#127
v0.0.0
Raw JSON
{
  "key": "http.request.method",
  "brief": "The HTTP method used.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "GET",
  "alias": [
    "method",
    "http.method",
    "http.request_method"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.redirect_end

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect

Example1732829558.502
Changelog
v0.4.0#228
v0.1.0#130#134
Raw JSON
{
  "key": "http.request.redirect_end",
  "brief": "The UNIX timestamp representing the timestamp immediately after receiving the last byte of the response of the last redirect",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829558.502,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        130,
        134
      ]
    }
  ]
}

http.request.redirect_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the start time of the fetch which that initiates the redirect.

Example1732829555.495
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.redirect_start",
  "brief": "The UNIX timestamp representing the start time of the fetch which that initiates the redirect.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.495,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.request_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.

Example1732829555.51
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.request_start",
  "brief": "The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.51,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.resend_count

integerScrub: ManualVisibility: PublicOTel: False

The ordinal number of request resending attempt (for any reason, including redirects).

Example2
Changelog
v0.4.0#228
v0.0.0
Raw JSON
{
  "key": "http.request.resend_count",
  "brief": "The ordinal number of request resending attempt (for any reason, including redirects).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 2,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.response_end

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.

Example1732829555.89
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.response_end",
  "brief": "The UNIX timestamp representing the time immediately after the browser receives the last byte of the resource or immediately before the transport connection is closed, whichever comes first.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.89,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.response_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.

Example1732829555.7
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.response_start",
  "brief": "The UNIX timestamp representing the time immediately before the browser starts requesting the resource from the server, cache, or local resource. If the transport connection fails and the browser retires the request, the value returned will be the start of the retry request.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.7,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.same_origin

booleanScrub: ManualVisibility: PublicOTel: False

Indicates that a URL has the same origin as the current page's origin in the browser.

Exampletrue
Changelog
v0.16.0#456Added http.request.same_origin attribute
Raw JSON
{
  "key": "http.request.same_origin",
  "brief": "Indicates that a URL has the same origin as the current page's origin in the browser.",
  "type": "boolean",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": true,
  "alias": [
    "url.same_origin"
  ],
  "changelog": [
    {
      "version": "0.16.0",
      "prs": [
        456
      ],
      "description": "Added http.request.same_origin attribute"
    }
  ]
}

http.request.secure_connection_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.

Example1732829555.73
Changelog
v0.4.0#228
v0.1.0#134
v0.0.0
Raw JSON
{
  "key": "http.request.secure_connection_start",
  "brief": "The UNIX timestamp representing the time immediately before the browser starts the handshake process to secure the current connection. If a secure connection is not used, the property returns zero.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829555.73,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        134
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request.time_to_first_byte

doubleScrub: ManualVisibility: PublicOTel: False

The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests

Example1.032
Changelog
v0.4.0#228
v0.1.0#131
Raw JSON
{
  "key": "http.request.time_to_first_byte",
  "brief": "The time in seconds from the browser's timeorigin to when the first byte of the request's response was received. See https://web.dev/articles/ttfb#measure-resource-requests",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1.032,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        131
      ]
    }
  ]
}

http.request.worker_start

doubleScrub: ManualVisibility: PublicOTel: False

The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.

Example1732829553.68
Changelog
v0.4.0#228
v0.1.0#130#134
Raw JSON
{
  "key": "http.request.worker_start",
  "brief": "The UNIX timestamp representing the timestamp immediately before dispatching the FetchEvent if a Service Worker thread is already running, or immediately before starting the Service Worker thread if it is not already running.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 1732829553.68,
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        130,
        134
      ]
    }
  ]
}

http.response.body.decoded_size

integerScrub: ManualVisibility: PublicOTel: False

The decoded body size of the response (in bytes).

Additional Context
  • This is the size after content decoding. Set it only when the decoded size is actually known, for example from the browser Resource Timing `decodedBodySize` or by measuring a decompressed response stream.
  • Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.response.body.size` for that.
Changelog
next#574Added http.response.body.decoded_size attribute
Raw JSON
{
  "key": "http.response.body.decoded_size",
  "brief": "The decoded body size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 456,
  "alias": [
    "http.decoded_response_content_length",
    "http.response_content_length_uncompressed"
  ],
  "additional_context": [
    "This is the size after content decoding. Set it only when the decoded size is actually known, for example from the browser Resource Timing `decodedBodySize` or by measuring a decompressed response stream.",
    "Do not derive this from the `content-length` header, which always carries the encoded size. Use `http.response.body.size` for that."
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.response.body.decoded_size attribute"
    }
  ]
}

http.response.body.size

integerScrub: ManualVisibility: PublicOTel: True

The encoded body size of the response (in bytes).

Changelog
v0.4.0#228
v0.1.0#106
v0.0.0
Raw JSON
{
  "key": "http.response.body.size",
  "brief": "The encoded body size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 123,
  "alias": [
    "http.response_content_length",
    "http.response.header.content-length"
  ],
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        106
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.response.header.<key>

string[]Scrub: AutoVisibility: PublicOTel: TrueDynamic

HTTP response headers, <key> being the normalized HTTP Header name (lowercase), the value being the header values.

Examplehttp.response.header.custom-header=['foo', 'bar']
Dynamic SuffixYes - the key contains dynamic parts
Changelog
v0.4.0#201#204
v0.1.0#103
Raw JSON
{
  "key": "http.response.header.<key>",
  "brief": "HTTP response headers, <key> being the normalized HTTP Header name (lowercase), the value being the header values.",
  "has_dynamic_suffix": true,
  "type": "string[]",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "http.response.header.custom-header=['foo', 'bar']",
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        201,
        204
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        103
      ]
    }
  ]
}

http.response.header.content-length

stringScrub: ManualVisibility: PublicOTel: True

The size of the message body sent to the recipient (in bytes)

Examplehttp.response.header.custom-header=['foo', 'bar']
Changelog
v0.1.0#127
v0.0.0
Raw JSON
{
  "key": "http.response.header.content-length",
  "brief": "The size of the message body sent to the recipient (in bytes)",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "http.response.header.custom-header=['foo', 'bar']",
  "alias": [
    "http.response_content_length",
    "http.response.body.size"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.response.size

integerScrub: ManualVisibility: PublicOTel: True

The transfer size of the response (in bytes).

Changelog
v0.4.0#228
v0.0.0
Raw JSON
{
  "key": "http.response.size",
  "brief": "The transfer size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 456,
  "alias": [
    "http.response_transfer_size"
  ],
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.response.status_code

integerScrub: ManualVisibility: PublicOTel: True

The status code of the HTTP response.

Example404
Search AliasHow this attribute is exposed in Sentry search. Query it by this name instead of the attribute key.
Namehttp.response_status_code
Typeinteger (same as the attribute type)
Changelog
v0.4.0#228
v0.0.0
Raw JSON
{
  "key": "http.response.status_code",
  "brief": "The status code of the HTTP response.",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 404,
  "alias": [
    "http.status_code"
  ],
  "search_alias": {
    "name": "http.response_status_code"
  },
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.response.status_text

stringScrub: ManualVisibility: PublicOTel: False

The reason phrase of the HTTP response.

ExampleNOT FOUND
Additional Context
  • HTTP/2 and HTTP/3 do not carry a reason phrase. Do not set this attribute when the protocol provides none; use `http.response.status_code` instead.
Changelog
next#574Added http.response.status_text attribute
Raw JSON
{
  "key": "http.response.status_text",
  "brief": "The reason phrase of the HTTP response.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "NOT FOUND",
  "alias": [
    "http.status_text"
  ],
  "additional_context": [
    "HTTP/2 and HTTP/3 do not carry a reason phrase. Do not set this attribute when the protocol provides none; use `http.response.status_code` instead."
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.response.status_text attribute"
    }
  ]
}

http.route

stringScrub: ManualVisibility: PublicOTel: True

The matched route, that is, the path template in the format used by the respective server framework.

Examples/users/:idmy-controller/my-action/{id}/posts
Aliasesroute
Additional Context
  • This attribute should primarily be set by server-side instrumentation that captures the framework route of an incoming request.
  • For `http.client` spans and client-side routing, use `url.template` instead.
Changelog
v0.19.0#505#521Added multiple examples, removed alias to `url.template`, added additional context
v0.1.0#127
v0.0.0
Raw JSON
{
  "key": "http.route",
  "brief": "The matched route, that is, the path template in the format used by the respective server framework.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "examples": [
    "/users/:id",
    "my-controller/my-action/{id}",
    "/posts"
  ],
  "alias": [
    "route"
  ],
  "additional_context": [
    "This attribute should primarily be set by server-side instrumentation that captures the framework route of an incoming request.",
    "For `http.client` spans and client-side routing, use `url.template` instead."
  ],
  "changelog": [
    {
      "version": "0.19.0",
      "prs": [
        505,
        521
      ],
      "description": "Added multiple examples, removed alias to `url.template`, added additional context"
    },
    {
      "version": "0.1.0",
      "prs": [
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.server.request.time_in_queue

doubleScrub: ManualVisibility: PublicOTel: False

The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.

Example50
Changelog
v0.5.0#267
Raw JSON
{
  "key": "http.server.request.time_in_queue",
  "brief": "The time in milliseconds the request spent in the server queue before processing began. Measured from the X-Request-Start header set by reverse proxies (e.g., Nginx, HAProxy, Heroku) to when the application started handling the request.",
  "type": "double",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 50,
  "changelog": [
    {
      "version": "0.5.0",
      "prs": [
        267
      ]
    }
  ]
}

Deprecated Attributes

These attributes are deprecated and should not be used in new code. See each attribute for migration guidance.

http.client_ipDeprecated

stringScrub: AutoVisibility: PublicOTel: True

Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.

Exampleexample.com

Use client.address instead.

Status: backfill

Changelog
v0.0.0
Raw JSON
{
  "key": "http.client_ip",
  "brief": "Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "example.com",
  "deprecation": {
    "replacement": "client.address",
    "_status": "backfill"
  },
  "alias": [
    "client.address"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        61,
        106,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.decoded_response_content_lengthDeprecated

integerScrub: ManualVisibility: PublicOTel: False

The decoded body size of the response (in bytes).

Example456
Search AliasHow this attribute is exposed in Sentry search. Query it by this name instead of the attribute key.
Namehttp.decoded_response_content_length
Typebyte

Use http.response.body.decoded_size instead.

Status: backfill

Changelog
next#574Deprecated in favor of http.response.body.decoded_size
v0.4.0#228
v0.0.0
Raw JSON
{
  "key": "http.decoded_response_content_length",
  "brief": "The decoded body size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 456,
  "deprecation": {
    "replacement": "http.response.body.decoded_size",
    "_status": "backfill"
  },
  "alias": [
    "http.response.body.decoded_size",
    "http.response_content_length_uncompressed"
  ],
  "search_alias": {
    "name": "http.decoded_response_content_length",
    "type": "byte"
  },
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Deprecated in favor of http.response.body.decoded_size"
    },
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.flavorDeprecated

stringScrub: ManualVisibility: PublicOTel: True

The actual version of the protocol used for network communication.

Changelog
nextAdded messaging.protocol_version as an alias
v0.0.0
Raw JSON
{
  "key": "http.flavor",
  "brief": "The actual version of the protocol used for network communication.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "1.1",
  "deprecation": {
    "replacement": "network.protocol.version",
    "_status": "backfill"
  },
  "alias": [
    "network.protocol.version",
    "net.protocol.version",
    "messaging.protocol_version"
  ],
  "changelog": [
    {
      "version": "next",
      "description": "Added messaging.protocol_version as an alias"
    },
    {
      "version": "0.1.0",
      "prs": [
        61,
        108,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.hostDeprecated

stringScrub: ManualVisibility: PublicOTel: True

The domain name.

Exampleexample.com

Use server.address instead.

Deprecated, use one of `server.address` or `client.address`, depending on the usage

Changelog
nextAdded net.peer.name as an alias
v0.19.0#534Added address as an alias
v0.0.0
Raw JSON
{
  "key": "http.host",
  "brief": "The domain name.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "example.com",
  "deprecation": {
    "replacement": "server.address",
    "reason": "Deprecated, use one of `server.address` or `client.address`, depending on the usage",
    "_status": null
  },
  "alias": [
    "address",
    "server.address",
    "client.address",
    "http.server_name",
    "net.host.name",
    "server_name",
    "net.peer.name"
  ],
  "changelog": [
    {
      "version": "next",
      "description": "Added net.peer.name as an alias"
    },
    {
      "version": "0.19.0",
      "prs": [
        534
      ],
      "description": "Added address as an alias"
    },
    {
      "version": "0.1.0",
      "prs": [
        61,
        108,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.methodDeprecated

stringScrub: ManualVisibility: PublicOTel: True

The HTTP method used.

ExampleGET

Use http.request.method instead.

Status: backfill

Changelog
v0.1.0#61#127
v0.0.0
Raw JSON
{
  "key": "http.method",
  "brief": "The HTTP method used.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "GET",
  "deprecation": {
    "replacement": "http.request.method",
    "_status": "backfill"
  },
  "alias": [
    "http.request.method",
    "http.request_method",
    "method"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        61,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.request_content_lengthDeprecated

integerScrub: ManualVisibility: PublicOTel: True

The encoded body size of the request (in bytes).

Example123

Use http.request.body.size instead.

Status: backfill

Changelog
next#574Added http.request_content_length attribute, deprecated in favor of http.request.body.size
Raw JSON
{
  "key": "http.request_content_length",
  "brief": "The encoded body size of the request (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 123,
  "deprecation": {
    "replacement": "http.request.body.size",
    "_status": "backfill"
  },
  "alias": [
    "http.request.body.size"
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.request_content_length attribute, deprecated in favor of http.request.body.size"
    }
  ]
}

http.request_content_length_uncompressedDeprecated

integerScrub: ManualVisibility: PublicOTel: True

The decoded body size of the request (in bytes).

Example456

Use http.request.body.decoded_size instead.

Status: backfill

Changelog
next#574Added http.request_content_length_uncompressed attribute, deprecated in favor of http.request.body.decoded_size
Raw JSON
{
  "key": "http.request_content_length_uncompressed",
  "brief": "The decoded body size of the request (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 456,
  "deprecation": {
    "replacement": "http.request.body.decoded_size",
    "_status": "backfill"
  },
  "alias": [
    "http.request.body.decoded_size"
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.request_content_length_uncompressed attribute, deprecated in favor of http.request.body.decoded_size"
    }
  ]
}

http.request_methodDeprecated

stringScrub: ManualVisibility: PublicOTel: False

The HTTP method used.

ExampleGET

Use http.request.method instead.

Status: backfill

Changelog
v0.6.0#343Added http.request_method attribute
Raw JSON
{
  "key": "http.request_method",
  "brief": "The HTTP method used.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": "GET",
  "deprecation": {
    "replacement": "http.request.method",
    "_status": "backfill"
  },
  "alias": [
    "method",
    "http.method",
    "http.request.method"
  ],
  "changelog": [
    {
      "version": "0.6.0",
      "prs": [
        343
      ],
      "description": "Added http.request_method attribute"
    }
  ]
}

http.response_content_lengthDeprecated

integerScrub: ManualVisibility: PublicOTel: True

The encoded body size of the response (in bytes).

Example123
Search AliasHow this attribute is exposed in Sentry search. Query it by this name instead of the attribute key.
Namehttp.response_content_length
Typebyte

Use http.response.body.size instead.

Status: backfill

Changelog
v0.4.0#228
v0.1.0#61#106
v0.0.0
Raw JSON
{
  "key": "http.response_content_length",
  "brief": "The encoded body size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 123,
  "deprecation": {
    "replacement": "http.response.body.size",
    "_status": "backfill"
  },
  "alias": [
    "http.response.body.size",
    "http.response.header.content-length"
  ],
  "search_alias": {
    "name": "http.response_content_length",
    "type": "byte"
  },
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        61,
        106
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.response_content_length_uncompressedDeprecated

integerScrub: ManualVisibility: PublicOTel: True

The decoded body size of the response (in bytes).

Changelog
next#574Added http.response_content_length_uncompressed attribute, deprecated in favor of http.response.body.decoded_size
Raw JSON
{
  "key": "http.response_content_length_uncompressed",
  "brief": "The decoded body size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 456,
  "deprecation": {
    "replacement": "http.response.body.decoded_size",
    "_status": "backfill"
  },
  "alias": [
    "http.response.body.decoded_size",
    "http.decoded_response_content_length"
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.response_content_length_uncompressed attribute, deprecated in favor of http.response.body.decoded_size"
    }
  ]
}

http.response_transfer_sizeDeprecated

integerScrub: ManualVisibility: PublicOTel: False

The transfer size of the response (in bytes).

Example456
Search AliasHow this attribute is exposed in Sentry search. Query it by this name instead of the attribute key.
Namehttp.response_transfer_size
Typebyte

Use http.response.size instead.

Status: backfill

Changelog
v0.4.0#228
v0.1.0#61
v0.0.0
Raw JSON
{
  "key": "http.response_transfer_size",
  "brief": "The transfer size of the response (in bytes).",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "example": 456,
  "deprecation": {
    "replacement": "http.response.size",
    "_status": "backfill"
  },
  "alias": [
    "http.response.size"
  ],
  "search_alias": {
    "name": "http.response_transfer_size",
    "type": "byte"
  },
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        61
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.schemeDeprecated

stringScrub: ManualVisibility: PublicOTel: True

The URI scheme component identifying the used protocol.

Examplehttps
Aliasesurl.scheme

Use url.scheme instead.

Status: backfill

Changelog
v0.1.0#61#127
v0.0.0
Raw JSON
{
  "key": "http.scheme",
  "brief": "The URI scheme component identifying the used protocol.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "https",
  "deprecation": {
    "replacement": "url.scheme",
    "_status": "backfill"
  },
  "alias": [
    "url.scheme"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        61,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.server_nameDeprecated

stringScrub: ManualVisibility: PublicOTel: True

The server domain name

Exampleexample.com

Use server.address instead.

Status: backfill

Changelog
nextAdded net.peer.name as an alias
v0.19.0#534Added address as an alias
v0.0.0
Raw JSON
{
  "key": "http.server_name",
  "brief": "The server domain name",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "example.com",
  "deprecation": {
    "replacement": "server.address",
    "_status": "backfill"
  },
  "alias": [
    "address",
    "server.address",
    "net.host.name",
    "http.host",
    "server_name",
    "net.peer.name"
  ],
  "changelog": [
    {
      "version": "next",
      "description": "Added net.peer.name as an alias"
    },
    {
      "version": "0.19.0",
      "prs": [
        534
      ],
      "description": "Added address as an alias"
    },
    {
      "version": "0.1.0",
      "prs": [
        61,
        108,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.status_codeDeprecated

integerScrub: ManualVisibility: PublicOTel: True

The status code of the HTTP response.

Example404

Use http.response.status_code instead.

Status: backfill

Changelog
v0.4.0#228
v0.1.0#61
v0.0.0
Raw JSON
{
  "key": "http.status_code",
  "brief": "The status code of the HTTP response.",
  "type": "integer",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": 404,
  "deprecation": {
    "replacement": "http.response.status_code",
    "_status": "backfill"
  },
  "alias": [
    "http.response.status_code"
  ],
  "changelog": [
    {
      "version": "0.4.0",
      "prs": [
        228
      ]
    },
    {
      "version": "0.1.0",
      "prs": [
        61
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.status_textDeprecated

stringScrub: ManualVisibility: PublicOTel: False

The reason phrase of the HTTP response

ExamplesNOT FOUND

Use http.response.status_text instead.

Status: backfill

Changelog
next#574Added http.status_text attribute, deprecated in favor of http.response.status_text
Raw JSON
{
  "key": "http.status_text",
  "brief": "The reason phrase of the HTTP response",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": false,
  "visibility": "public",
  "examples": [
    "NOT FOUND"
  ],
  "deprecation": {
    "replacement": "http.response.status_text",
    "_status": "backfill"
  },
  "alias": [
    "http.response.status_text"
  ],
  "changelog": [
    {
      "version": "next",
      "prs": [
        574
      ],
      "description": "Added http.status_text attribute, deprecated in favor of http.response.status_text"
    }
  ]
}

http.targetDeprecated

stringScrub: AutoVisibility: PublicOTel: True

The pathname and query string of the URL.

Example/test?foo=bar#buzz

No replacement available at this time.

This attribute is being deprecated in favor of url.path, url.query and url.fragment. The value holds all three parts at once, so it has no single replacement.

Changelog
nextDocumented url.path, url.query and url.fragment as the replacements for http.target
v0.1.0#61
v0.0.0
Raw JSON
{
  "key": "http.target",
  "brief": "The pathname and query string of the URL.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "/test?foo=bar#buzz",
  "deprecation": {
    "reason": "This attribute is being deprecated in favor of url.path, url.query and url.fragment. The value holds all three parts at once, so it has no single replacement.",
    "_status": null
  },
  "changelog": [
    {
      "version": "next",
      "description": "Documented url.path, url.query and url.fragment as the replacements for http.target"
    },
    {
      "version": "0.1.0",
      "prs": [
        61
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.urlDeprecated

stringScrub: AutoVisibility: PublicOTel: True

The URL of the resource that was fetched.

Examplehttps://example.com/test?foo=bar#buzz

Use url.full instead.

Status: backfill

Changelog
nextAdded messaging.url as an alias
v0.1.0#61#108
v0.0.0
Raw JSON
{
  "key": "http.url",
  "brief": "The URL of the resource that was fetched.",
  "type": "string",
  "apply_scrubbing": {
    "key": "auto"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "https://example.com/test?foo=bar#buzz",
  "deprecation": {
    "replacement": "url.full",
    "_status": "backfill"
  },
  "alias": [
    "url.full",
    "url",
    "aws.request.url",
    "messaging.url"
  ],
  "changelog": [
    {
      "version": "next",
      "description": "Added messaging.url as an alias"
    },
    {
      "version": "0.1.0",
      "prs": [
        61,
        108
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}

http.user_agentDeprecated

stringScrub: ManualVisibility: PublicOTel: True

Value of the HTTP User-Agent header sent by the client.

ExampleMozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1

Use user_agent.original instead.

Status: backfill

Changelog
v0.1.0#61#127
v0.0.0
Raw JSON
{
  "key": "http.user_agent",
  "brief": "Value of the HTTP User-Agent header sent by the client.",
  "type": "string",
  "apply_scrubbing": {
    "key": "manual"
  },
  "is_in_otel": true,
  "visibility": "public",
  "example": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1",
  "deprecation": {
    "replacement": "user_agent.original",
    "_status": "backfill"
  },
  "alias": [
    "user_agent.original"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "prs": [
        61,
        127
      ]
    },
    {
      "version": "0.0.0"
    }
  ]
}