Skip to content
Start here

Create Logpush job

logpush.jobs.create(JobCreateParams**kwargs) -> LogpushJob
POST/{accounts_or_zones}/{account_or_zone_id}/logpush/jobs

Creates a new Logpush job for an account or zone.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Logs Write
ParametersExpand Collapse
destination_conf: str

Uniquely identifies a resource (such as an s3 bucket) where data. will be pushed. Additional configuration parameters supported by the destination may be included.

formaturi
maxLength4096
account_id: Optional[str]

The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.

zone_id: Optional[str]

The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.

dataset: Optional[Literal["access_requests", "audit_logs", "audit_logs_v2", 27 more]]

Name of the dataset. A list of supported datasets can be found on the Developer Docs.

One of the following:
"access_requests"
"audit_logs"
"audit_logs_v2"
"biso_user_actions"
"casb_findings"
"device_posture_results"
"dex_application_tests"
"dex_device_state_events"
"dlp_forensic_copies"
"dns_firewall_logs"
"dns_logs"
"email_security_alerts"
"firewall_events"
"gateway_dns"
"gateway_http"
"gateway_network"
"http_requests"
"ipsec_logs"
"magic_ids_detections"
"nel_reports"
"network_analytics_logs"
"page_shield_events"
"sinkhole_http_logs"
"spectrum_events"
"ssh_logs"
"warp_config_changes"
"warp_toggle_changes"
"workers_trace_events"
"zaraz_events"
"zero_trust_network_sessions"
enabled: Optional[bool]

Flag that indicates if the job is enabled.

filter: Optional[str]

The filters to select the events to include and/or remove from your logs. For more information, refer to Filters.

Deprecatedfrequency: Optional[Literal["high", "low"]]

This field is deprecated. Please use max_upload_* parameters instead. . The frequency at which Cloudflare sends batches of logs to your destination. Setting frequency to high sends your logs in larger quantities of smaller files. Setting frequency to low sends logs in smaller quantities of larger files.

One of the following:
"high"
"low"
kind: Optional[Literal["", "edge"]]

The kind parameter (optional) is used to differentiate between Logpush and Edge Log Delivery jobs (when supported by the dataset).

One of the following:
""
"edge"
Deprecatedlogpull_options: Optional[str]

This field is deprecated. Use output_options instead. Configuration string. It specifies things like requested fields and timestamp formats. If migrating from the logpull api, copy the url (full url or just the query string) of your call here, and logpush will keep on making this call for you, setting start and end times appropriately.

formaturi-reference
maxLength4096
max_upload_bytes: Optional[Union[Literal[0], int, null]]

The maximum uncompressed file size of a batch of logs. This setting value must be between 5 MB and 1 GB, or 0 to disable it. Note that you cannot set a minimum file size; this means that log files may be much smaller than this batch size.

One of the following:
Literal[0]

The maximum uncompressed file size of a batch of logs. This setting value must be between 5 MB and 1 GB, or 0 to disable it. Note that you cannot set a minimum file size; this means that log files may be much smaller than this batch size.

int
max_upload_interval_seconds: Optional[Union[Literal[0], int, null]]

The maximum interval in seconds for log batches. This setting must be between 30 and 300 seconds (5 minutes), or 0 to disable it. Note that you cannot specify a minimum interval for log batches; this means that log files may be sent in shorter intervals than this.

One of the following:
Literal[0]

The maximum interval in seconds for log batches. This setting must be between 30 and 300 seconds (5 minutes), or 0 to disable it. Note that you cannot specify a minimum interval for log batches; this means that log files may be sent in shorter intervals than this.

int
max_upload_records: Optional[Union[Literal[0], int, null]]

The maximum number of log lines per batch. This setting must be between 1000 and 1,000,000 lines, or 0 to disable it. Note that you cannot specify a minimum number of log lines per batch; this means that log files may contain many fewer lines than this.

One of the following:
Literal[0]

The maximum number of log lines per batch. This setting must be between 1000 and 1,000,000 lines, or 0 to disable it. Note that you cannot specify a minimum number of log lines per batch; this means that log files may contain many fewer lines than this.

int
name: Optional[str]

Optional human readable job name. Not unique. Cloudflare suggests. that you set this to a meaningful string, like the domain name, to make it easier to identify your job.

maxLength512
output_options: Optional[OutputOptionsParam]

The structured replacement for logpull_options. When including this field, the logpull_option field will be ignored.

batch_prefix: Optional[str]

String to be prepended before each batch.

batch_suffix: Optional[str]

String to be appended after each batch.

cve_2021_44228: Optional[bool]

If set to true, will cause all occurrences of ${ in the generated files to be replaced with x{.

field_delimiter: Optional[str]

String to join fields. This field be ignored when record_template is set.

field_names: Optional[List[str]]

List of field names to be included in the Logpush output. For the moment, there is no option to add all fields at once, so you must specify all the fields names you are interested in.

merge_subrequests: Optional[bool]

If set to true, subrequests will be merged into the parent request. Only supported for the http_requests dataset.

output_type: Optional[Literal["ndjson", "csv"]]

Specifies the output type, such as ndjson or csv. This sets default values for the rest of the settings, depending on the chosen output type. Some formatting rules, like string quoting, are different between output types.

One of the following:
"ndjson"
"csv"
record_delimiter: Optional[str]

String to be inserted in-between the records as separator.

record_prefix: Optional[str]

String to be prepended before each record.

record_suffix: Optional[str]

String to be appended after each record.

record_template: Optional[str]

String to use as template for each record instead of the default json key value mapping. All fields used in the template must be present in field_names as well, otherwise they will end up as null. Format as a Go text/template without any standard functions, like conditionals, loops, sub-templates, etc.

sample_rate: Optional[float]

Floating number to specify sampling rate. Sampling is applied on top of filtering, and regardless of the current sample_interval of the data.

formatfloat
maximum1
minimum0
timestamp_format: Optional[Literal["unixnano", "unix", "rfc3339", 2 more]]

String to specify the format for timestamps, such as unixnano, unix, rfc3339, rfc3339ms or rfc3339ns.

One of the following:
"unixnano"
"unix"
"rfc3339"
"rfc3339ms"
"rfc3339ns"
ownership_challenge: Optional[str]

Ownership challenge token to prove destination ownership.

maxLength4096
ReturnsExpand Collapse
class LogpushJob:
id: Optional[int]

Unique id of the job.

minimum1
dataset: Optional[Literal["access_requests", "audit_logs", "audit_logs_v2", 27 more]]

Name of the dataset. A list of supported datasets can be found on the Developer Docs.

One of the following:
"access_requests"
"audit_logs"
"audit_logs_v2"
"biso_user_actions"
"casb_findings"
"device_posture_results"
"dex_application_tests"
"dex_device_state_events"
"dlp_forensic_copies"
"dns_firewall_logs"
"dns_logs"
"email_security_alerts"
"firewall_events"
"gateway_dns"
"gateway_http"
"gateway_network"
"http_requests"
"ipsec_logs"
"magic_ids_detections"
"nel_reports"
"network_analytics_logs"
"page_shield_events"
"sinkhole_http_logs"
"spectrum_events"
"ssh_logs"
"warp_config_changes"
"warp_toggle_changes"
"workers_trace_events"
"zaraz_events"
"zero_trust_network_sessions"
destination_conf: Optional[str]

Uniquely identifies a resource (such as an s3 bucket) where data. will be pushed. Additional configuration parameters supported by the destination may be included.

formaturi
maxLength4096
enabled: Optional[bool]

Flag that indicates if the job is enabled.

error_message: Optional[str]

If not null, the job is currently failing. Failures are usually. repetitive (example: no permissions to write to destination bucket). Only the last failure is recorded. On successful execution of a job the error_message and last_error are set to null.

Deprecatedfrequency: Optional[Literal["high", "low"]]

This field is deprecated. Please use max_upload_* parameters instead. . The frequency at which Cloudflare sends batches of logs to your destination. Setting frequency to high sends your logs in larger quantities of smaller files. Setting frequency to low sends logs in smaller quantities of larger files.

One of the following:
"high"
"low"
kind: Optional[Literal["", "edge"]]

The kind parameter (optional) is used to differentiate between Logpush and Edge Log Delivery jobs (when supported by the dataset).

One of the following:
""
"edge"
last_complete: Optional[datetime]

Records the last time for which logs have been successfully pushed. If the last successful push was for logs range 2018-07-23T10:00:00Z to 2018-07-23T10:01:00Z then the value of this field will be 2018-07-23T10:01:00Z. If the job has never run or has just been enabled and hasn't run yet then the field will be empty.

formatdate-time
last_error: Optional[datetime]

Records the last time the job failed. If not null, the job is currently. failing. If null, the job has either never failed or has run successfully at least once since last failure. See also the error_message field.

formatdate-time
Deprecatedlogpull_options: Optional[str]

This field is deprecated. Use output_options instead. Configuration string. It specifies things like requested fields and timestamp formats. If migrating from the logpull api, copy the url (full url or just the query string) of your call here, and logpush will keep on making this call for you, setting start and end times appropriately.

formaturi-reference
maxLength4096
max_upload_bytes: Optional[Union[Literal[0], int, null]]

The maximum uncompressed file size of a batch of logs. This setting value must be between 5 MB and 1 GB, or 0 to disable it. Note that you cannot set a minimum file size; this means that log files may be much smaller than this batch size.

One of the following:
Literal[0]

The maximum uncompressed file size of a batch of logs. This setting value must be between 5 MB and 1 GB, or 0 to disable it. Note that you cannot set a minimum file size; this means that log files may be much smaller than this batch size.

int
max_upload_interval_seconds: Optional[Union[Literal[0], int, null]]

The maximum interval in seconds for log batches. This setting must be between 30 and 300 seconds (5 minutes), or 0 to disable it. Note that you cannot specify a minimum interval for log batches; this means that log files may be sent in shorter intervals than this.

One of the following:
Literal[0]

The maximum interval in seconds for log batches. This setting must be between 30 and 300 seconds (5 minutes), or 0 to disable it. Note that you cannot specify a minimum interval for log batches; this means that log files may be sent in shorter intervals than this.

int
max_upload_records: Optional[Union[Literal[0], int, null]]

The maximum number of log lines per batch. This setting must be between 1000 and 1,000,000 lines, or 0 to disable it. Note that you cannot specify a minimum number of log lines per batch; this means that log files may contain many fewer lines than this.

One of the following:
Literal[0]

The maximum number of log lines per batch. This setting must be between 1000 and 1,000,000 lines, or 0 to disable it. Note that you cannot specify a minimum number of log lines per batch; this means that log files may contain many fewer lines than this.

int
name: Optional[str]

Optional human readable job name. Not unique. Cloudflare suggests. that you set this to a meaningful string, like the domain name, to make it easier to identify your job.

maxLength512
output_options: Optional[OutputOptions]

The structured replacement for logpull_options. When including this field, the logpull_option field will be ignored.

batch_prefix: Optional[str]

String to be prepended before each batch.

batch_suffix: Optional[str]

String to be appended after each batch.

cve_2021_44228: Optional[bool]

If set to true, will cause all occurrences of ${ in the generated files to be replaced with x{.

field_delimiter: Optional[str]

String to join fields. This field be ignored when record_template is set.

field_names: Optional[List[str]]

List of field names to be included in the Logpush output. For the moment, there is no option to add all fields at once, so you must specify all the fields names you are interested in.

merge_subrequests: Optional[bool]

If set to true, subrequests will be merged into the parent request. Only supported for the http_requests dataset.

output_type: Optional[Literal["ndjson", "csv"]]

Specifies the output type, such as ndjson or csv. This sets default values for the rest of the settings, depending on the chosen output type. Some formatting rules, like string quoting, are different between output types.

One of the following:
"ndjson"
"csv"
record_delimiter: Optional[str]

String to be inserted in-between the records as separator.

record_prefix: Optional[str]

String to be prepended before each record.

record_suffix: Optional[str]

String to be appended after each record.

record_template: Optional[str]

String to use as template for each record instead of the default json key value mapping. All fields used in the template must be present in field_names as well, otherwise they will end up as null. Format as a Go text/template without any standard functions, like conditionals, loops, sub-templates, etc.

sample_rate: Optional[float]

Floating number to specify sampling rate. Sampling is applied on top of filtering, and regardless of the current sample_interval of the data.

formatfloat
maximum1
minimum0
timestamp_format: Optional[Literal["unixnano", "unix", "rfc3339", 2 more]]

String to specify the format for timestamps, such as unixnano, unix, rfc3339, rfc3339ms or rfc3339ns.

One of the following:
"unixnano"
"unix"
"rfc3339"
"rfc3339ms"
"rfc3339ns"

Create Logpush job

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
logpush_job = client.logpush.jobs.create(
    destination_conf="s3://mybucket/logs?region=us-west-2",
    account_id="account_id",
    dataset="gateway_dns",
    enabled=False,
    filter="{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"},{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}",
    kind="",
    max_upload_bytes=5000000,
    max_upload_interval_seconds=30,
    max_upload_records=1000,
    name="example.com",
    output_options={
        "cve_2021_44228": False,
        "batch_prefix": "",
        "batch_suffix": "",
        "field_delimiter": ",",
        "field_names": ["Datetime", "DstIP", "SrcIP"],
        "output_type": "ndjson",
        "record_delimiter": "",
        "record_prefix": "{",
        "record_suffix": "}\n",
        "sample_rate": 1,
        "timestamp_format": "unixnano",
    },
    ownership_challenge="00000000000000000000",
)
print(logpush_job.id)
{
  "errors": [],
  "messages": [],
  "result": {
    "dataset": "gateway_dns",
    "destination_conf": "s3://mybucket/logs?region=us-west-2",
    "enabled": false,
    "error_message": null,
    "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"},{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}",
    "id": 1,
    "kind": "",
    "last_complete": null,
    "last_error": null,
    "max_upload_bytes": 5000000,
    "max_upload_interval_seconds": 30,
    "max_upload_records": 1000,
    "name": "example.com",
    "output_options": {
      "CVE-2021-44228": false,
      "batch_prefix": "",
      "batch_suffix": "",
      "field_delimiter": ",",
      "field_names": [
        "Datetime",
        "DstIP",
        "SrcIP"
      ],
      "output_type": "ndjson",
      "record_delimiter": "",
      "record_prefix": "{",
      "record_suffix": "}\n",
      "sample_rate": 1,
      "timestamp_format": "unixnano"
    }
  },
  "success": true
}
Returns Examples
{
  "errors": [],
  "messages": [],
  "result": {
    "dataset": "gateway_dns",
    "destination_conf": "s3://mybucket/logs?region=us-west-2",
    "enabled": false,
    "error_message": null,
    "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"},{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}",
    "id": 1,
    "kind": "",
    "last_complete": null,
    "last_error": null,
    "max_upload_bytes": 5000000,
    "max_upload_interval_seconds": 30,
    "max_upload_records": 1000,
    "name": "example.com",
    "output_options": {
      "CVE-2021-44228": false,
      "batch_prefix": "",
      "batch_suffix": "",
      "field_delimiter": ",",
      "field_names": [
        "Datetime",
        "DstIP",
        "SrcIP"
      ],
      "output_type": "ndjson",
      "record_delimiter": "",
      "record_prefix": "{",
      "record_suffix": "}\n",
      "sample_rate": 1,
      "timestamp_format": "unixnano"
    }
  },
  "success": true
}