# Log Explorer # Query ## Run a log query `client.Logs.LogExplorer.Query.Sql(ctx, params) (*SinglePage[LogExplorerQuerySqlResponse], error)` **post** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/query/sql` Run a SQL query against account or zone-level datasets. Timestamp fields are RFC3339 strings. Filter with: WHERE {timestamp_field} >= now() - INTERVAL '30' DAY WHERE {timestamp_field} >= '2026-04-01T00:00:00Z' WHERE {timestamp_field} BETWEEN '2026-04-01T00:00:00Z' AND '2026-04-30T23:59:59Z' Check /account or zones/{account or zone_id}/logs/explorer/datasets to see enabled account or zone level datasets. Zone-level datasets will not appear here. Check /account or zones/{account or zone_id}/logs/explorer/datasets/available for the schemas, and the name of the timestamp fields. For zone-level datasets use the zone-scoped endpoint: POST /zones/{zone_id}/logs/explorer/query/sql For more information about the datasets, and the meaning of each field, check out https://developers.cloudflare.com/logs/logpush/logpush-job/datasets/ ### Parameters - `params LogExplorerQuerySqlParams` - `Body param.Field[Reader]` Body param: SQL query to execute. - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type LogExplorerQuerySqlResponse map[string, unknown]` ### Example ```go package main import ( "bytes" "context" "fmt" "io" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Logs.LogExplorer.Query.Sql(context.TODO(), logs.LogExplorerQuerySqlParams{ Body: io.Reader(bytes.NewBuffer([]byte("Example data"))), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": [ { "foo": "bar" } ] } ``` # Datasets ## List account or zone datasets `client.Logs.LogExplorer.Datasets.List(ctx, params) (*SinglePage[DatasetSummary], error)` **get** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/datasets` Returns all Log Explorer datasets configured for the account or zone. Pass `include_zones=true` to also include zone-level datasets that belong to this account or zone. List responses omit the `fields` property; use the single-dataset endpoint to retrieve field configuration. ### Parameters - `params LogExplorerDatasetListParams` - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. - `IncludeZones param.Field[bool]` Query param: Set to true to include zone-scoped datasets belonging to this account. ### Returns - `type DatasetSummary struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetSummaryObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetSummaryObjectTypeAccount DatasetSummaryObjectType = "account"` - `const DatasetSummaryObjectTypeZone DatasetSummaryObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. ### Example ```go package main import ( "context" "fmt" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Logs.LogExplorer.Datasets.List(context.TODO(), logs.LogExplorerDatasetListParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": [ { "created_at": "2019-12-27T18:11:19.117Z", "dataset": "dataset", "dataset_id": "dataset_id", "enabled": true, "object_id": "object_id", "object_type": "account", "updated_at": "2019-12-27T18:11:19.117Z" } ] } ``` ## Get an account or zone dataset `client.Logs.LogExplorer.Datasets.Get(ctx, datasetID, query) (*Dataset, error)` **get** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/datasets/{dataset_id}` Retrieve a single Log Explorer dataset by ID for the account or zone. ### Parameters - `datasetID string` - `query LogExplorerDatasetGetParams` - `AccountID param.Field[string]` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type Dataset struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetObjectTypeAccount DatasetObjectType = "account"` - `const DatasetObjectTypeZone DatasetObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. - `Fields []DatasetField` The field configuration for this dataset. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. ### Example ```go package main import ( "context" "fmt" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) dataset, err := client.Logs.LogExplorer.Datasets.Get( context.TODO(), "dataset_id", logs.LogExplorerDatasetGetParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", dataset.DatasetID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": { "created_at": "2019-12-27T18:11:19.117Z", "dataset": "dataset", "dataset_id": "dataset_id", "enabled": true, "object_id": "object_id", "object_type": "account", "updated_at": "2019-12-27T18:11:19.117Z", "fields": [ { "enabled": true, "name": "name" } ] } } ``` ## Create an account or zone dataset `client.Logs.LogExplorer.Datasets.New(ctx, params) (*Dataset, error)` **post** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/datasets` Create a new Log Explorer dataset for the account or zone. Use the `/account or zones/{account or zone_id}/logs/explorer/datasets/available` endpoint to list dataset types you can create along with their available fields. The `fields` property is optional. If not specified, all available fields will be enabled. For zone-level datasets use the zone-scoped endpoint: POST /zones/{zone_id}/logs/explorer/datasets For dataset field definitions, see: https://developers.cloudflare.com/logs/logpush/logpush-job/datasets/ ### Parameters - `params LogExplorerDatasetNewParams` - `CreateRequest param.Field[CreateRequest]` Body param - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type Dataset struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetObjectTypeAccount DatasetObjectType = "account"` - `const DatasetObjectTypeZone DatasetObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. - `Fields []DatasetField` The field configuration for this dataset. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. ### Example ```go package main import ( "context" "fmt" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) dataset, err := client.Logs.LogExplorer.Datasets.New(context.TODO(), logs.LogExplorerDatasetNewParams{ CreateRequest: logs.CreateRequestParam{ Dataset: cloudflare.F("dataset"), }, }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", dataset.DatasetID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": { "created_at": "2019-12-27T18:11:19.117Z", "dataset": "dataset", "dataset_id": "dataset_id", "enabled": true, "object_id": "object_id", "object_type": "account", "updated_at": "2019-12-27T18:11:19.117Z", "fields": [ { "enabled": true, "name": "name" } ] } } ``` ## Update an account or zone dataset `client.Logs.LogExplorer.Datasets.Update(ctx, datasetID, params) (*Dataset, error)` **put** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/datasets/{dataset_id}` Updates the enabled state and/or field configuration of an account or zone dataset. ### Parameters - `datasetID string` - `params LogExplorerDatasetUpdateParams` - `UpdateRequest param.Field[UpdateRequest]` Body param - `AccountID param.Field[string]` Path param: The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` Path param: The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type Dataset struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetObjectTypeAccount DatasetObjectType = "account"` - `const DatasetObjectTypeZone DatasetObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. - `Fields []DatasetField` The field configuration for this dataset. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. ### Example ```go package main import ( "context" "fmt" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) dataset, err := client.Logs.LogExplorer.Datasets.Update( context.TODO(), "dataset_id", logs.LogExplorerDatasetUpdateParams{ UpdateRequest: logs.UpdateRequestParam{ Enabled: cloudflare.F(true), }, }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", dataset.DatasetID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": { "created_at": "2019-12-27T18:11:19.117Z", "dataset": "dataset", "dataset_id": "dataset_id", "enabled": true, "object_id": "object_id", "object_type": "account", "updated_at": "2019-12-27T18:11:19.117Z", "fields": [ { "enabled": true, "name": "name" } ] } } ``` ## Domain Types ### Create Request - `type CreateRequest struct{…}` - `Dataset string` Dataset type name to create (e.g. `http_requests`). - `Fields []CreateRequestField` Controls which fields the API ingests. Defaults to all available fields when absent. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. ### Dataset - `type Dataset struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetObjectTypeAccount DatasetObjectType = "account"` - `const DatasetObjectTypeZone DatasetObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. - `Fields []DatasetField` The field configuration for this dataset. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. ### Dataset Summary - `type DatasetSummary struct{…}` A Log Explorer dataset summary. List endpoints return this type and omit field configuration; use the single-dataset endpoint to retrieve it. - `CreatedAt Time` RFC3339 timestamp recording when the API created this dataset. - `Dataset string` Dataset type name (e.g. `http_requests`). - `DatasetID string` Unique dataset ID. - `Enabled bool` Whether log ingest is currently active for this dataset. - `ObjectID string` Public ID of the account or zone that owns this dataset. - `ObjectType DatasetSummaryObjectType` Whether this dataset belongs to an account or a zone. - `const DatasetSummaryObjectTypeAccount DatasetSummaryObjectType = "account"` - `const DatasetSummaryObjectTypeZone DatasetSummaryObjectType = "zone"` - `UpdatedAt Time` RFC3339 timestamp recording when the API last updated this dataset. ### Update Request - `type UpdateRequest struct{…}` - `Enabled bool` Whether to enable or disable log ingest for this dataset. - `Fields []UpdateRequestField` Controls which fields the API ingests after the update. Defaults to all available fields when absent. - `Enabled bool` Whether the API includes this field in log ingest. - `Name string` Field name in lowercase. # Available ## List available account or zone datasets `client.Logs.LogExplorer.Datasets.Available.List(ctx, query) (*SinglePage[AvailableDataset], error)` **get** `/{accounts_or_zones}/{account_or_zone_id}/logs/explorer/datasets/available` Returns all dataset types that this account or zone can create. Each entry includes the dataset schema and timestamp field. The schema shows all possible fields for a dataset. However, not all fields may be available for your account or zone. When creating or updating a dataset, only fields available to your account or zone can be enabled. If you request a field that is not available, you will receive an error. ### Parameters - `query LogExplorerDatasetAvailableListParams` - `AccountID param.Field[string]` The Account ID to use for this endpoint. Mutually exclusive with the Zone ID. - `ZoneID param.Field[string]` The Zone ID to use for this endpoint. Mutually exclusive with the Account ID. ### Returns - `type AvailableDataset struct{…}` A dataset type that the account or zone can create. - `Dataset string` Dataset type name (e.g. `http_requests`). - `ObjectType AvailableDatasetObjectType` Whether this dataset type is account-scoped or zone-scoped. - `const AvailableDatasetObjectTypeAccount AvailableDatasetObjectType = "account"` - `const AvailableDatasetObjectTypeZone AvailableDatasetObjectType = "zone"` - `Schema AvailableDatasetSchema` JSON Schema that describes the fields this dataset exposes. - `Properties map[string, unknown]` - `Required []string` - `Type AvailableDatasetSchemaType` - `const AvailableDatasetSchemaTypeObject AvailableDatasetSchemaType = "object"` - `TimestampField string` The primary timestamp field name for this dataset. ### Example ```go package main import ( "context" "fmt" "github.com/stainless-sdks/cloudflare-go" "github.com/stainless-sdks/cloudflare-go/logs" "github.com/stainless-sdks/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.Logs.LogExplorer.Datasets.Available.List(context.TODO(), logs.LogExplorerDatasetAvailableListParams{ }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ "string" ], "success": true, "result": [ { "dataset": "dataset", "object_type": "account", "schema": { "properties": { "foo": "bar" }, "required": [ "string" ], "type": "object" }, "timestamp_field": "timestamp_field" } ] } ``` ## Domain Types ### Available Dataset - `type AvailableDataset struct{…}` A dataset type that the account or zone can create. - `Dataset string` Dataset type name (e.g. `http_requests`). - `ObjectType AvailableDatasetObjectType` Whether this dataset type is account-scoped or zone-scoped. - `const AvailableDatasetObjectTypeAccount AvailableDatasetObjectType = "account"` - `const AvailableDatasetObjectTypeZone AvailableDatasetObjectType = "zone"` - `Schema AvailableDatasetSchema` JSON Schema that describes the fields this dataset exposes. - `Properties map[string, unknown]` - `Required []string` - `Type AvailableDatasetSchemaType` - `const AvailableDatasetSchemaTypeObject AvailableDatasetSchemaType = "object"` - `TimestampField string` The primary timestamp field name for this dataset. ### Available List - `type AvailableList struct{…}` - `Errors []ResponseInfo` - `Code int64` - `Message string` - `DocumentationURL string` - `Source ResponseInfoSource` - `Pointer string` - `Messages []string` - `Success bool` - `Result []AvailableDataset` - `Dataset string` Dataset type name (e.g. `http_requests`). - `ObjectType AvailableDatasetObjectType` Whether this dataset type is account-scoped or zone-scoped. - `const AvailableDatasetObjectTypeAccount AvailableDatasetObjectType = "account"` - `const AvailableDatasetObjectTypeZone AvailableDatasetObjectType = "zone"` - `Schema AvailableDatasetSchema` JSON Schema that describes the fields this dataset exposes. - `Properties map[string, unknown]` - `Required []string` - `Type AvailableDatasetSchemaType` - `const AvailableDatasetSchemaTypeObject AvailableDatasetSchemaType = "object"` - `TimestampField string` The primary timestamp field name for this dataset.