---
title: "Get endpoint observation history for a host"
method: GET
path: "/v3/threat-hunting/host/{ip}/observations/endpoints"
tags: ["Threat Hunting", "Adversary Investigation"]
---

# Get endpoint observation history for a host

`GET /v3/threat-hunting/host/{ip}/observations/endpoints`

## Request

- Base URL: `https://api.platform.censys.io`
- URL: `https://api.platform.censys.io/v3/threat-hunting/host/{ip}/observations/endpoints`
- Auth: HTTP bearer

Retrieve historical endpoint-level hash observations for a host.<br><br>Use this endpoint to see when an IP served a given page body, favicon, or banner, so you can identify changes on a host or pivot to other hosts serving the same content.<br><br>You must provide an `observation_type` and can optionally filter by a specific value using the `observation_value` parameter. You may also filter by port number.<br><br>To use this endpoint, your organization must have access to the Adversary Investigation module.

## Path parameters

- `ip` string, ip, required: The IP address of a host.

## Query parameters

- `organization_id` string, uuid, required: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information.
- `start_time` string: Start of date range (RFC3339 format, e.g., 2024-01-01T00:00:00Z). If not specified, defaults to the maximum query window back from the end time.
- `end_time` string: End of date range (RFC3339 format, e.g., 2024-01-31T23:59:59Z). If not specified, defaults to now. Cannot be in the future.
- `page_size` integer: Number of results per page (max 100)
- `page_token` string: Pagination token from previous response
- `port` integer: Filter by port number
- `observation_value` string: Filter by observation value for the selected observation_type
- `observation_type` 'body_hash_sha1' | 'body_hash_sha256' | 'favicon_hash_md5' | 'favicon_hash_sha256' | 'favicon_hash_shodan' | 'banner_hash_sha256' | 'endpoints_banner_hash_sha256', required: Endpoint observation type to query.
- `order_by` string[], nullable: Order observations by these fields. Multiple values can be provided (e.g., ['port DESC', 'observation_value ASC']).

## Headers

- `X-Organization-ID` string, uuid: The ID of a Censys organization to associate the request with. See the [Getting Started docs](https://docs.censys.com/reference/get-started#step-3-find-and-use-your-organization-id-optional) for more information. Note: The header parameter is supported for atypical use cases; we recommend always providing this field via the query parameter.

## Response `200`

A list of observation ranges

- ResponseEnvelopeHashObservationsOnHostResponse
  - `result` HashObservationsOnHostResponse
    - `next_page_token` string, required: A token that can be used to retrieve the next page of ranges.
    - `ranges` HashObservationOnHostRange[], nullable, required: The list of observation ranges matching the request.
      - `end_time` string, date-time, required: When the observation was last seen
      - `ip` string, required: IP address of the host
      - `observation_type` string, required: Observation type selected in the request
      - `observation_value` string, required: Observed value for the selected observation type
      - `port` string, required: Port number
      - `start_time` string, date-time, required: When the observation was first seen
      - `transport_protocol` string: Transport protocol when present for the selected timeline

## Other responses

- `400`: Bad request
- `401`: Request does not contain a valid Authorization token
- `403`: User does not have permission to access this data
- `404`: Resource not found
- `409`: Feature not enabled
- `500`: Internal server error

---

[API](https://skmtc.dev/censys/apis/censys-platform-api.md) - [All operations](https://skmtc.dev/censys/apis/censys-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/censys/apis/censys-platform-api/revisions/ec1686b0a36a?raw)
