Skip to content
Start here

Create a bulk action job

client.EmailSecurity.Investigate.Bulk.New(ctx, params) (*InvestigateBulkNewResponse, error)
POST/accounts/{account_id}/email-security/investigate/bulk

Create a bulk action job

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)
Cloud Email Security: Write
ParametersExpand Collapse
params InvestigateBulkNewParams
AccountID param.Field[string]

Path param: Identifier.

maxLength32
Action param.Field[InvestigateBulkNewParamsAction]

Body param

const InvestigateBulkNewParamsActionMove InvestigateBulkNewParamsAction = "MOVE"
const InvestigateBulkNewParamsActionRelease InvestigateBulkNewParamsAction = "RELEASE"
SearchParams param.Field[InvestigateBulkNewParamsSearchParams]

Body param

DeprecatedActionLog boolOptional

Deprecated, use GET /investigate/{investigate_id}/action_log instead. End of life: November 1, 2026.

AlertID stringOptional
DeliveryStatus InvestigateBulkNewParamsSearchParamsDeliveryStatusOptional

Delivery status of the message.

One of the following:
const InvestigateBulkNewParamsSearchParamsDeliveryStatusDelivered InvestigateBulkNewParamsSearchParamsDeliveryStatus = "delivered"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusMoved InvestigateBulkNewParamsSearchParamsDeliveryStatus = "moved"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusQuarantined InvestigateBulkNewParamsSearchParamsDeliveryStatus = "quarantined"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusRejected InvestigateBulkNewParamsSearchParamsDeliveryStatus = "rejected"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusDeferred InvestigateBulkNewParamsSearchParamsDeliveryStatus = "deferred"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusBounced InvestigateBulkNewParamsSearchParamsDeliveryStatus = "bounced"
const InvestigateBulkNewParamsSearchParamsDeliveryStatusQueued InvestigateBulkNewParamsSearchParamsDeliveryStatus = "queued"
DetectionsOnly boolOptional
Domain stringOptional
End TimeOptional

End of search date range

formatdate-time
ExactSubject stringOptional
FinalDisposition InvestigateBulkNewParamsSearchParamsFinalDispositionOptional
One of the following:
const InvestigateBulkNewParamsSearchParamsFinalDispositionMalicious InvestigateBulkNewParamsSearchParamsFinalDisposition = "MALICIOUS"
const InvestigateBulkNewParamsSearchParamsFinalDispositionMaliciousBec InvestigateBulkNewParamsSearchParamsFinalDisposition = "MALICIOUS-BEC"
const InvestigateBulkNewParamsSearchParamsFinalDispositionSuspicious InvestigateBulkNewParamsSearchParamsFinalDisposition = "SUSPICIOUS"
const InvestigateBulkNewParamsSearchParamsFinalDispositionSpoof InvestigateBulkNewParamsSearchParamsFinalDisposition = "SPOOF"
const InvestigateBulkNewParamsSearchParamsFinalDispositionSpam InvestigateBulkNewParamsSearchParamsFinalDisposition = "SPAM"
const InvestigateBulkNewParamsSearchParamsFinalDispositionBulk InvestigateBulkNewParamsSearchParamsFinalDisposition = "BULK"
const InvestigateBulkNewParamsSearchParamsFinalDispositionEncrypted InvestigateBulkNewParamsSearchParamsFinalDisposition = "ENCRYPTED"
const InvestigateBulkNewParamsSearchParamsFinalDispositionExternal InvestigateBulkNewParamsSearchParamsFinalDisposition = "EXTERNAL"
const InvestigateBulkNewParamsSearchParamsFinalDispositionUnknown InvestigateBulkNewParamsSearchParamsFinalDisposition = "UNKNOWN"
const InvestigateBulkNewParamsSearchParamsFinalDispositionNone InvestigateBulkNewParamsSearchParamsFinalDisposition = "NONE"
MessageAction InvestigateBulkNewParamsSearchParamsMessageActionOptional
One of the following:
const InvestigateBulkNewParamsSearchParamsMessageActionPreview InvestigateBulkNewParamsSearchParamsMessageAction = "PREVIEW"
const InvestigateBulkNewParamsSearchParamsMessageActionQuarantineReleased InvestigateBulkNewParamsSearchParamsMessageAction = "QUARANTINE_RELEASED"
const InvestigateBulkNewParamsSearchParamsMessageActionMoved InvestigateBulkNewParamsSearchParamsMessageAction = "MOVED"
MessageID stringOptional
Metric stringOptional
Query stringOptional
Recipient stringOptional
Sender stringOptional
Start TimeOptional

Beginning of search date range

formatdate-time
Subject stringOptional
Submissions boolOptional
Comment param.Field[string]Optional

Body param

Destination param.Field[InvestigateBulkNewParamsDestination]Optional

Body param

const InvestigateBulkNewParamsDestinationInbox InvestigateBulkNewParamsDestination = "Inbox"
const InvestigateBulkNewParamsDestinationJunkEmail InvestigateBulkNewParamsDestination = "JunkEmail"
const InvestigateBulkNewParamsDestinationDeletedItems InvestigateBulkNewParamsDestination = "DeletedItems"
const InvestigateBulkNewParamsDestinationRecoverableItemsDeletions InvestigateBulkNewParamsDestination = "RecoverableItemsDeletions"
const InvestigateBulkNewParamsDestinationRecoverableItemsPurges InvestigateBulkNewParamsDestination = "RecoverableItemsPurges"
ExpectedDisposition param.Field[InvestigateBulkNewParamsExpectedDisposition]Optional

Body param

const InvestigateBulkNewParamsExpectedDispositionMalicious InvestigateBulkNewParamsExpectedDisposition = "MALICIOUS"
const InvestigateBulkNewParamsExpectedDispositionMaliciousBec InvestigateBulkNewParamsExpectedDisposition = "MALICIOUS-BEC"
const InvestigateBulkNewParamsExpectedDispositionSuspicious InvestigateBulkNewParamsExpectedDisposition = "SUSPICIOUS"
const InvestigateBulkNewParamsExpectedDispositionSpoof InvestigateBulkNewParamsExpectedDisposition = "SPOOF"
const InvestigateBulkNewParamsExpectedDispositionSpam InvestigateBulkNewParamsExpectedDisposition = "SPAM"
const InvestigateBulkNewParamsExpectedDispositionBulk InvestigateBulkNewParamsExpectedDisposition = "BULK"
const InvestigateBulkNewParamsExpectedDispositionEncrypted InvestigateBulkNewParamsExpectedDisposition = "ENCRYPTED"
const InvestigateBulkNewParamsExpectedDispositionExternal InvestigateBulkNewParamsExpectedDisposition = "EXTERNAL"
const InvestigateBulkNewParamsExpectedDispositionUnknown InvestigateBulkNewParamsExpectedDisposition = "UNKNOWN"
const InvestigateBulkNewParamsExpectedDispositionNone InvestigateBulkNewParamsExpectedDisposition = "NONE"
ReturnsExpand Collapse
type InvestigateBulkNewResponse struct{…}
ActionParams InvestigateBulkNewResponseActionParams
One of the following:
type InvestigateBulkNewResponseActionParamsMove struct{…}
Destination InvestigateBulkNewResponseActionParamsMoveDestination
One of the following:
const InvestigateBulkNewResponseActionParamsMoveDestinationInbox InvestigateBulkNewResponseActionParamsMoveDestination = "Inbox"
const InvestigateBulkNewResponseActionParamsMoveDestinationJunkEmail InvestigateBulkNewResponseActionParamsMoveDestination = "JunkEmail"
const InvestigateBulkNewResponseActionParamsMoveDestinationDeletedItems InvestigateBulkNewResponseActionParamsMoveDestination = "DeletedItems"
const InvestigateBulkNewResponseActionParamsMoveDestinationRecoverableItemsDeletions InvestigateBulkNewResponseActionParamsMoveDestination = "RecoverableItemsDeletions"
const InvestigateBulkNewResponseActionParamsMoveDestinationRecoverableItemsPurges InvestigateBulkNewResponseActionParamsMoveDestination = "RecoverableItemsPurges"
Type InvestigateBulkNewResponseActionParamsMoveType
ExpectedDisposition InvestigateBulkNewResponseActionParamsMoveExpectedDispositionOptional
One of the following:
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionMalicious InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "MALICIOUS"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionMaliciousBec InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "MALICIOUS-BEC"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionSuspicious InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "SUSPICIOUS"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionSpoof InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "SPOOF"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionSpam InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "SPAM"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionBulk InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "BULK"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionEncrypted InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "ENCRYPTED"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionExternal InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "EXTERNAL"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionUnknown InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "UNKNOWN"
const InvestigateBulkNewResponseActionParamsMoveExpectedDispositionNone InvestigateBulkNewResponseActionParamsMoveExpectedDisposition = "NONE"
type InvestigateBulkNewResponseActionParamsRelease struct{…}
Type InvestigateBulkNewResponseActionParamsReleaseType
ActionType InvestigateBulkNewResponseActionType
One of the following:
const InvestigateBulkNewResponseActionTypeMove InvestigateBulkNewResponseActionType = "MOVE"
const InvestigateBulkNewResponseActionTypeRelease InvestigateBulkNewResponseActionType = "RELEASE"
CreatedAt Time
formatdate-time
JobID string
formatuuid
MessagesFailed int64
MessagesPending int64
MessagesSuccessful int64
SearchParams InvestigateBulkNewResponseSearchParams
DeprecatedActionLog boolOptional

Deprecated, use GET /investigate/{investigate_id}/action_log instead. End of life: November 1, 2026.

AlertID stringOptional
DeliveryStatus InvestigateBulkNewResponseSearchParamsDeliveryStatusOptional

Delivery status of the message.

One of the following:
const InvestigateBulkNewResponseSearchParamsDeliveryStatusDelivered InvestigateBulkNewResponseSearchParamsDeliveryStatus = "delivered"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusMoved InvestigateBulkNewResponseSearchParamsDeliveryStatus = "moved"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusQuarantined InvestigateBulkNewResponseSearchParamsDeliveryStatus = "quarantined"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusRejected InvestigateBulkNewResponseSearchParamsDeliveryStatus = "rejected"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusDeferred InvestigateBulkNewResponseSearchParamsDeliveryStatus = "deferred"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusBounced InvestigateBulkNewResponseSearchParamsDeliveryStatus = "bounced"
const InvestigateBulkNewResponseSearchParamsDeliveryStatusQueued InvestigateBulkNewResponseSearchParamsDeliveryStatus = "queued"
DetectionsOnly boolOptional
Domain stringOptional
End TimeOptional

End of search date range

formatdate-time
ExactSubject stringOptional
FinalDisposition InvestigateBulkNewResponseSearchParamsFinalDispositionOptional
One of the following:
const InvestigateBulkNewResponseSearchParamsFinalDispositionMalicious InvestigateBulkNewResponseSearchParamsFinalDisposition = "MALICIOUS"
const InvestigateBulkNewResponseSearchParamsFinalDispositionMaliciousBec InvestigateBulkNewResponseSearchParamsFinalDisposition = "MALICIOUS-BEC"
const InvestigateBulkNewResponseSearchParamsFinalDispositionSuspicious InvestigateBulkNewResponseSearchParamsFinalDisposition = "SUSPICIOUS"
const InvestigateBulkNewResponseSearchParamsFinalDispositionSpoof InvestigateBulkNewResponseSearchParamsFinalDisposition = "SPOOF"
const InvestigateBulkNewResponseSearchParamsFinalDispositionSpam InvestigateBulkNewResponseSearchParamsFinalDisposition = "SPAM"
const InvestigateBulkNewResponseSearchParamsFinalDispositionBulk InvestigateBulkNewResponseSearchParamsFinalDisposition = "BULK"
const InvestigateBulkNewResponseSearchParamsFinalDispositionEncrypted InvestigateBulkNewResponseSearchParamsFinalDisposition = "ENCRYPTED"
const InvestigateBulkNewResponseSearchParamsFinalDispositionExternal InvestigateBulkNewResponseSearchParamsFinalDisposition = "EXTERNAL"
const InvestigateBulkNewResponseSearchParamsFinalDispositionUnknown InvestigateBulkNewResponseSearchParamsFinalDisposition = "UNKNOWN"
const InvestigateBulkNewResponseSearchParamsFinalDispositionNone InvestigateBulkNewResponseSearchParamsFinalDisposition = "NONE"
MessageAction InvestigateBulkNewResponseSearchParamsMessageActionOptional
One of the following:
const InvestigateBulkNewResponseSearchParamsMessageActionPreview InvestigateBulkNewResponseSearchParamsMessageAction = "PREVIEW"
const InvestigateBulkNewResponseSearchParamsMessageActionQuarantineReleased InvestigateBulkNewResponseSearchParamsMessageAction = "QUARANTINE_RELEASED"
const InvestigateBulkNewResponseSearchParamsMessageActionMoved InvestigateBulkNewResponseSearchParamsMessageAction = "MOVED"
MessageID stringOptional
Metric stringOptional
Query stringOptional
Recipient stringOptional
Sender stringOptional
Start TimeOptional

Beginning of search date range

formatdate-time
Subject stringOptional
Submissions boolOptional
Status InvestigateBulkNewResponseStatus
One of the following:
const InvestigateBulkNewResponseStatusPending InvestigateBulkNewResponseStatus = "PENDING"
const InvestigateBulkNewResponseStatusDiscovering InvestigateBulkNewResponseStatus = "DISCOVERING"
const InvestigateBulkNewResponseStatusProcessing InvestigateBulkNewResponseStatus = "PROCESSING"
const InvestigateBulkNewResponseStatusCompleted InvestigateBulkNewResponseStatus = "COMPLETED"
const InvestigateBulkNewResponseStatusFailed InvestigateBulkNewResponseStatus = "FAILED"
const InvestigateBulkNewResponseStatusCancelled InvestigateBulkNewResponseStatus = "CANCELLED"
const InvestigateBulkNewResponseStatusSkipped InvestigateBulkNewResponseStatus = "SKIPPED"
TotalMessagesDiscovered int64
Comment stringOptional
CompletedAt TimeOptional
formatdate-time
StartedAt TimeOptional
formatdate-time
StatusMessage stringOptional

Create a bulk action job

package main

import (
  "context"
  "fmt"

  "github.com/stainless-sdks/cloudflare-go"
  "github.com/stainless-sdks/cloudflare-go/email_security"
  "github.com/stainless-sdks/cloudflare-go/option"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  bulk, err := client.EmailSecurity.Investigate.Bulk.New(context.TODO(), email_security.InvestigateBulkNewParams{
    AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
    Action: cloudflare.F(email_security.InvestigateBulkNewParamsActionMove),
    SearchParams: cloudflare.F(email_security.InvestigateBulkNewParamsSearchParams{

    }),
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", bulk.JobID)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "action_params": {
      "destination": "Inbox",
      "type": "MOVE",
      "expected_disposition": "MALICIOUS"
    },
    "action_type": "MOVE",
    "created_at": "2019-12-27T18:11:19.117Z",
    "job_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "messages_failed": 0,
    "messages_pending": 0,
    "messages_successful": 0,
    "search_params": {
      "action_log": true,
      "alert_id": "alert_id",
      "delivery_status": "delivered",
      "detections_only": true,
      "domain": "domain",
      "end": "2022-07-25T14:30:00Z",
      "exact_subject": "exact_subject",
      "final_disposition": "MALICIOUS",
      "message_action": "PREVIEW",
      "message_id": "message_id",
      "metric": "metric",
      "query": "query",
      "recipient": "recipient",
      "sender": "sender",
      "start": "2022-06-25T14:30:00Z",
      "subject": "subject",
      "submissions": true
    },
    "status": "PENDING",
    "total_messages_discovered": 0,
    "comment": "comment",
    "completed_at": "2019-12-27T18:11:19.117Z",
    "started_at": "2019-12-27T18:11:19.117Z",
    "status_message": "status_message"
  },
  "success": true
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "action_params": {
      "destination": "Inbox",
      "type": "MOVE",
      "expected_disposition": "MALICIOUS"
    },
    "action_type": "MOVE",
    "created_at": "2019-12-27T18:11:19.117Z",
    "job_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
    "messages_failed": 0,
    "messages_pending": 0,
    "messages_successful": 0,
    "search_params": {
      "action_log": true,
      "alert_id": "alert_id",
      "delivery_status": "delivered",
      "detections_only": true,
      "domain": "domain",
      "end": "2022-07-25T14:30:00Z",
      "exact_subject": "exact_subject",
      "final_disposition": "MALICIOUS",
      "message_action": "PREVIEW",
      "message_id": "message_id",
      "metric": "metric",
      "query": "query",
      "recipient": "recipient",
      "sender": "sender",
      "start": "2022-06-25T14:30:00Z",
      "subject": "subject",
      "submissions": true
    },
    "status": "PENDING",
    "total_messages_discovered": 0,
    "comment": "comment",
    "completed_at": "2019-12-27T18:11:19.117Z",
    "started_at": "2019-12-27T18:11:19.117Z",
    "status_message": "status_message"
  },
  "success": true
}