Skip to content

SIE Batch endpoints and examples

All API requests must:

  • Use HTTP POST method
  • Include Content-Type: application/json header
  • Send parameters as JSON in the request body

All endpoints require authentication via the apikey parameter:

  • Include apikey in the JSON request body (not in headers or query string)
  • API keys are in UUID format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • Obtain your API key from DomainTools Enterprise Support
  • Use the validate endpoint (below) to verify your API key and check provisioned channels

For information about rate limits and quotas, contact enterprisesupport@domaintools.com.

Every response from the SIE Batch API contains two status indicating keys:

  • _status: A string containing either OK or NOK indicating whether the API call was successful
  • _message: A string containing a description of what went wrong (empty string if _status is OK)

If _status is NOK, additional fields giving details of the exception are present, conforming to RFC 7807.

Exception response examples are provided for each API endpoint.

Validates a given API Key, returns profile information associated with it.

https://batch.sie-remote.net/siebatchd/v1/validate

APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
curl -d '{"apikey":"'$APIKEY'"}' \
-H "Content-Type: application/json" \
https://batch.sie-remote.net/siebatchd/v1/validate
{
"apikey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
FieldTypeDescription
apikeyStringYour Farsight SIE Batch API Key
FieldTypeDescription
profileDictionaryA dictionary containing user profile information (provisioning). The following keys are only some of the possible keys available.
usernameStringThe username associated with your API Key.
siebatchDictionaryThe SIE batch channels you have access to.
_statusStringOK
_messageStringAn account status message ("" [empty] if no message).
HTTP/1.1 200 OK
{
"profile": {
"username": "siebatch-customer",
"siebatch": {
"ch212": {
"description": "Newly Observed Domains"
},
"ch213": {
"description": "Newly Observed Fully Qualified Domain Names"
},
}
},
"_status": "OK",
"_message": ""
}
FieldTypeDescription
apikeyStringYour Farsight SIE Batch API Key
channelsListList (array) of one or more channel numbers (integers). Valid channels are 1-255.
HTTP/1.1 403
{
"_message": "API key not present",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "missing-api-key"
}

Request the details of a channel such as possible datetime ranges, download filetype, and the size of data available.

These details will update as data is stored and pruned on the server every minute; channel data is always in motion so the details represent a moving window of data that is available for download. This means that the size and earliest/latest times will change frequently. Because channels are continuously recording new data it’s not possible to always be up to date if you were to repeatedly request the latest “earliest” and “latest” details for a channel; it’s an archival reference only.

https://batch.sie-remote.net/siebatchd/v1/siebatch/chdetails

APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
curl -d '{"apikey":"'$APIKEY'","channels":[212, 213]}' \
-H "Content-Type: application/json" \
-X POST https://batch.sie-remote.net/siebatchd/v1/siebatch/chdetails
{
"apikey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"channels": [212, 213]
}
FieldTypeDescription
apikeyStringYour Farsight SIE Batch API Key
channelsListList (array) of one or more channel numbers (integers). Valid channels are 1-255.
FieldTypeDescription
channelsDictionaryDictionary of channel objects keyed by channel name (e.g., “ch212”)
earliestStringEarliest available data timestamp in “YYYY-MM-DD HH:MM:SS” format
latestStringLatest available data timestamp in “YYYY-MM-DD HH:MM:SS” format
sizeIntegerSize of available data in bytes
mimetypeStringMIME type of the data (e.g., “application/x-ndjson”)
_statusStringOK
_messageString"" (empty if no message)
HTTP/1.1 200 OK
{
"channels": {
"ch212": {
"earliest":"2020-01-28 00:40:00",
"latest":"2020-01-28 20:06:00",
"size":83837922,
"mimetype": "application/x-ndjson"
},
"ch213": {
"earliest":"2020-01-28 00:40:00",
"latest": "2020-01-28 20:06:01",
"size":10397567992,
"mimetype": "application/x-ndjson"
}
},
"_status": "OK",
"_message":""
}
NameTypeDescription
_statusStringNOK
_messageStringA short description of what went wrong.
statusIntegerHTTP status code
typeStringA hyphenated mnemonic for the error. Use this to key on a local i18n translation.
detailStringOptional String that contains more details about the specific error.
HTTP/1.1 403
{
"_message": "<Message will contain details>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "session-failure"
}
HTTP/1.1 403
{
"_message": "<message will be specific wrt to which parameter(s) is missing>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "invalid-parameters",
"invalid_parameters": {
"name": "foobar",
"reason": "should be an integer but received a string"
}
}
HTTP/1.1 403
{
"_message": "API key not present",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "missing-api-key"
}

Download data associated with a given channel.

As mentioned in chdetails, the earliest data available is pruned frequently, so you are not guaranteed to retrieve that data if you request it.

The seconds portion of the start/end times are ignored, but for API consistency, we require seconds to be given. This means that if you ask for “12:10:30” through “12:45:30”, you get “12:10:00” through “12:45:00”.

If no data is available then an HTTP 404 is returned - otherwise it returns 200, sets the appropriate HTTP headers, and the download begins.

https://batch.sie-remote.net/siebatchd/v1/siebatch/chfetch

APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
curl -d '{"apikey":"'$APIKEY'","channel":213,"start_time":"2020-01-28 12:00:00","end_time":"2020-01-28 12:01:00"}' \
-H "Content-Type: application/json" \
-X POST https://batch.sie-remote.net/siebatchd/v1/siebatch/chfetch
{
"apikey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"channel": 213,
"start_time": "2020-01-28 12:00:00",
"end_time": "2020-01-28 12:01:00"
}
FieldTypeDescription
apikeyStringYour Farsight SIE Batch API Key
channelIntegerChannel Number
start_timeStringA Start Date, “YYYY-mm-dd HH:MM:SS” in UTC
end_timeStringAn End Date, “YYYY-mm-dd HH:MM:SS” in UTC
NameTypeDescription
_statusStringNOK
_messageStringA short description of what went wrong.
statusIntegerHTTP status code
typeStringA hyphenated mnemonic for the error. Use this to key on a local i18n translation.
detailStringOptional String that contains more details about the specific error.
HTTP/1.1 403
{
"_message": "<Message will contain details>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "session-failure"
}
HTTP/1.1 403
{
"_message": "<message will be specific wrt to which parameter(s) is missing>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "invalid-parameters",
"invalid_parameters": {
"name": "foobar",
"reason": "should be an integer but received a string"
}
}
HTTP/1.1 403
{
"_message": "API key not present",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "missing-api-key"
}

Generate a URL to download data associated with a channel later or independently of the SIE Batch webserver.

As mentioned in chdetails, the earliest data available is pruned frequently, so you are not guaranteed to retrieve it if it is about to be pruned.

The seconds portion of the start/end times are ignored, but for API consistency, we require seconds to be given. This means that if you ask for “12:10:30” through “12:45:30”, you get “12:10:00” through “12:45:00”.

Using makeurl as opposed to chfetch is advantageous because generated URLs are more easily shared and accessed later on different computers and by fellow users, independently of the user that originally requested them and without revealing credentials. Generated URLs are the preferred method for sharing snippets of channel data.

The server retains a rolling window of data per channel, typically 12-18 hours depending on the channel’s data rate. Use chdetails to check a channel’s earliest and latest timestamps before generating a URL.

The makeurl call itself succeeds even if the requested time range extends beyond the retention window. The error occurs when you download from the returned URL:

HTTP StatusErrorCause
404NoSuchKeyRequested data is outside the channel’s retention window.
403Unable to authenticateThe generated URL has expired. Generate a new one.

https://batch.sie-remote.net/siebatchd/v1/siebatch/makeurl

APIKEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
curl -d '{"apikey":"'$APIKEY'","channel":213,"start_time":"2020-01-28 12:00:00","end_time":"2020-01-28 12:01:00"}' \
-H "Content-Type: application/json" \
-X POST https://batch.sie-remote.net/siebatchd/v1/siebatch/makeurl
{
"apikey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"channel": 213,
"start_time": "2020-01-28 12:00:00",
"end_time": "2020-01-28 12:01:00"
}
FieldTypeDescription
apikeyStringYour Farsight SIE Batch API Key
channelIntegerChannel Number
start_timeStringA Start Date, “YYYY-mm-dd HH:MM:SS” in UTC
end_timeStringAn End Date, “YYYY-mm-dd HH:MM:SS” in UTC
FieldTypeDescription
_statusStringOK
_messageString"" (empty if no message)
urlStringThe presigned shareable URL to the specified SIE data
HTTP/1.1 200 OK
{"_status": "OK",
"_message": "",
"url": "https://batch-dl.sie-remote.net/range/ch213/20200128.1200.20200128.1201?
X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=..."
}
NameTypeDescription
_statusStringNOK
_messageStringA short description of what went wrong.
statusIntegerHTTP status code
typeStringA hyphenated mnemonic for the error. Use this to key on a local i18n translation.
detailStringOptional String that contains more details about the specific error.
HTTP/1.1 403
{
"_message": "<Message will contain details>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "session-failure"
}
HTTP/1.1 403
{
"_message": "<message will be specific wrt to which parameter(s) is missing>",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "invalid-parameters",
"invalid_parameters": {
"name": "foobar",
"reason": "should be an integer but received a string"
}
}
HTTP/1.1 403
{
"_message": "API key not present",
"_status": "NOK",
"logid": "30fd25e0-0130-4ab1-a375-fabf1d57430e",
"status": 403,
"type": "missing-api-key"
}