Sending new Signal reports via API
24 March 2025
These APIs facilitate the sending of new signal reports to the GSE using standard POST requests.
The structured data API supports the sending of signals using the minimal data format (Signal, Report Date and Abuse Type) with options to supply additional attributes for Signal Type, Confidence Score and a Predictive indicator as well as Extra Data which may be supplied for enrichment purposes as adhoc simple key/value pairs.
The image and text APIs allow for new signals to be automatically detected from the text contained in images or from raw text strings and sent to the GSE. This is particularly useful if an abuse report has come in the form of a screenshot or other image or as a scam message e.g. SMS - this API removes the need for additional conversion to structured data prior to submission. For these signals the full text extracted from the image / text block is stored as Extra Data on submission.
Sending new signal reports as structured data
Send one or more new signal reports as structured data.
Payload Attributes
Required attributes
- Name
signal- Type
- mediumstring
- Description
- The signal you want to share.
- Name
report_date- Type
- datetime
- Description
- Date & time the signal was reported. This must be supplied as a date and time in YYYY-MM-DD HH:MM:SS format.
eg. 2020-01-23 14:24:06
- Name
abuse_type- Type
- string
- Description
- The type of abuse this signal represents. Must be one of the following types...
If you would like to send us a different abuse type, please contact us
- Loading options....
Optional attributes
- Name
predictive- Type
- boolean
- Description
- An indication that this signal was generated using an algorithm rather than confirmed report.
- Name
confidence_score- Type
- integer
- Description
- Number between 0-100. A score of 100 would indicate the highest confidence in this signal
- Name
signal_type- Type
- string
- Description
- The type of signal. If supplied, must be one of the following...
If not supplied we will attempt to detect this.
If you would like to send us a different signal type, please contact us- Loading options....
- Name
extra_data- Type
- object
- Description
- Vendor specific extra data optionally supplied to further qualify the signal if desired. This allows for additional classification of data and/or additional abuse type specific fields.
This should be supplied as a standard top level JSON object with key / value pairs. Nested object and arrays are permitted.
Response Attributes
- Name
adds- Type
- number
- Description
- The number of successfully added new signal reports based on the passed request.
- Name
updates- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
replaces- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
deletes- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
rejected- Type
- number
- Description
- The number of signal reports which were not able to be added from the request (usually due to validation errors)
- Name
validationErrors- Type
- object
- Description
- An object containing validation errors generated from the passed signal reports when one or more items has been rejected.
An array of validation error objects will be returned under the add property of the returned object. This array will have a validation object for each rejected object passed in the request.
Each validation object will have the following properties:
itemNumber - identifies the numerical array item index for the rejected object within the supplied request payload array. validationErrors - An object with keys representing the fields which have failed validation. The value for each of these keys is a descriptive string identifying the reason for the field validation to have failed. It will only appear if the rejected field is > 0
Request
POST · /signal
curl -X POST https://signals.gse.live/report/signal \
-H "API-KEY: YOUR-API-KEY-HERE" \
-H "API-SECRET: YOUR-API-SECRET-HERE" \Payload
[
{
"signal": "https://somesignal.com",
"report_date": "2020-01-23 14:24:06",
"abuse_type": "phishing",
"signal_type": "url",
"predictive": false,
"confidence_score": "85",
"extra_data": {"category": "internal", "collection_method": "form_submission"}
},
// ...
]Response
[
{
"adds": 1,
"updates": 0,
"replaces": 0,
"deletes": 0,
"rejected": 2,
"validationErrors": {"add":[{"itemNumber":0,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}},{"itemNumber":1,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}}]}
},
// ...
]Sending new signal reports as image
Send one or more new signal reports as base64 encoded images. The signal and other meta data will be extracted from each image according to the other parameters supplied and then converted to structured data to be stored as signals. The whole text detected within the image will be stored as extra_data for the signal using a key of extracted_text.
Payload Attributes
Required attributes
- Name
base64_image- Type
- string
- Description
- The image string to process for signal information in base64 encoded format
Optional attributes
- Name
signal_type- Type
- string
- Description
- If supplied, this will be used to determine which signal type to extract as the signal from the image - if no signal_pattern attribute is supplied the known format for the signal type will be used to detect the signal.
e.g. url, ip address etc.
- Loading options....
- Name
signal_pattern- Type
- string
- Description
- Custom regular expression to use for detecting the signal within the image. If supplied, a signal type must also be supplied.
Response Attributes
- Name
adds- Type
- number
- Description
- The number of successfully added new signal reports based on the passed request.
- Name
updates- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
replaces- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
deletes- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
rejected- Type
- number
- Description
- The number of signal reports which were not able to be added from the request (usually due to validation errors)
- Name
validationErrors- Type
- object
- Description
- An object containing validation errors generated from the passed signal reports when one or more items has been rejected.
An array of validation error objects will be returned under the add property of the returned object. This array will have a validation object for each rejected object passed in the request.
Each validation object will have the following properties:
itemNumber - identifies the numerical array item index for the rejected object within the supplied request payload array. validationErrors - An object with keys representing the fields which have failed validation. The value for each of these keys is a descriptive string identifying the reason for the field validation to have failed. It will only appear if the rejected field is > 0
Request
POST · /image
curl -X POST https://signals.gse.live/report/image \
-H "API-KEY: YOUR-API-KEY-HERE" \
-H "API-SECRET: YOUR-API-SECRET-HERE" \Payload
[
{
"base64_image": "A435435456FFE2345",
"signal_type": "url",
"signal_pattern": "[a-z]+[0-9]"
},
// ...
]Response
[
{
"adds": 1,
"updates": 0,
"replaces": 0,
"deletes": 0,
"rejected": 2,
"validationErrors": {"add":[{"itemNumber":0,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}},{"itemNumber":1,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}}]}
},
// ...
]Sending new signal reports as text
Send one or more new signal reports as unprocessed text blocks. The signal and other meta data will be extracted from each text block according to the other parameters supplied and then converted to structured data to be stored as signals. The whole text passed will be stored as extra_data for the signal using a key of extracted_text.
Payload Attributes
Required attributes
- Name
text- Type
- string
- Description
- The text string to process for signal information
Optional attributes
- Name
signal_type- Type
- string
- Description
- If supplied, this will be used to determine which signal type to extract as the signal from the image - if no signal_pattern attribute is supplied the known format for the signal type will be used to detect the signal.
e.g. url, ip address etc.
- Loading options....
- Name
signal_pattern- Type
- string
- Description
- Custom Regular expression for detecting the signal within the text. If supplied, a signal type must also be supplied.
Response Attributes
- Name
adds- Type
- number
- Description
- The number of successfully added new signal reports based on the passed request.
- Name
updates- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
replaces- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
deletes- Type
- number
- Description
- Not used for new signal reports - always set to 0.
- Name
rejected- Type
- number
- Description
- The number of signal reports which were not able to be added from the request (usually due to validation errors)
- Name
validationErrors- Type
- object
- Description
- An object containing validation errors generated from the passed signal reports when one or more items has been rejected.
An array of validation error objects will be returned under the add property of the returned object. This array will have a validation object for each rejected object passed in the request.
Each validation object will have the following properties:
itemNumber - identifies the numerical array item index for the rejected object within the supplied request payload array. validationErrors - An object with keys representing the fields which have failed validation. The value for each of these keys is a descriptive string identifying the reason for the field validation to have failed. It will only appear if the rejected field is > 0
Request
POST · /text
curl -X POST https://signals.gse.live/report/text \
-H "API-KEY: YOUR-API-KEY-HERE" \
-H "API-SECRET: YOUR-API-SECRET-HERE" \Payload
[
{
"text": "a text block with an embedded signal https://example.com contained within it.",
"signal_type": "url",
"signal_pattern": "[a-z]+[0-9]"
},
// ...
]Response
[
{
"adds": 1,
"updates": 0,
"replaces": 0,
"deletes": 0,
"rejected": 2,
"validationErrors": {"add":[{"itemNumber":0,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}},{"itemNumber":1,"validationErrors":{"report_date":"Value required for report_date","abuse_type":"Value required for abuse_type"}}]}
},
// ...
]List all of the signals you have sent
Return all of the imported signals you have uploaded via your account.
Request Attributes
Required attributes
- Name
limit- Type
- integer
- Description
- Limit the number of results to the supplied number
- Name
offset- Type
- integer
- Description
- Offset the results by the supplied number
Defaults to 0
- Name
sort- Type
- string
- Description
- Sort the results by supplying a column name and direction. eg signal|desc
Response Attributes
- Name
signal- Type
- string
- Description
- The signal you want to share.
- Name
report_date- Type
- datetime
- Description
- Date & time the signal was reported.
- Name
abuse_type- Type
- string
- Description
- The type of abuse this signal represents. Must be one of the following types...
e.g. phishing, malware
If you would like to send us a different abuse type, please contact us- Loading options....
- Name
signal_type- Type
- string
- Description
- The type of signal. If supplied, must be one of the following.
e.g. url,hostname
If not supplied we will attempt to detect this. If you would like to send us a different signal type, please contact us
- Loading options....
- Name
predictive- Type
- boolean
- Description
- An indication that this signal was generated using an algorithm rather than confirmed report.
- Name
confidence_score- Type
- integer
- Description
- Number between 0-100. A score of 100 would indicate the highest confidence in this signal
- Name
extra_data- Type
- object
- Description
- Vendor specific extra data optionally supplied to further qualify the signal if desired. This allows for additional classification of data and/or additional abuse type specific fields.
This should be formatted as a standard top level JSON object with key / value pairs. Nested object and arrays are permitted.
Request
GET · /signal
curl -X GET https://signals.gse.live/report/signal \
-H "API-KEY: YOUR-API-KEY-HERE" \
-H "API-SECRET: YOUR-API-SECRET-HERE" \ \
-d limit=[[value]] \
-d offset=[[value]] \
-d sort=[[value]] \Response
[
{
"signal": "https://somesignal.com",
"report_date": "2020-01-23 14:24:06",
"abuse_type": "phishing",
"signal_type": "phishing",
"predictive": false,
"confidence_score": "85",
"extra_data": {"category": "internal", "collection_method": "form_submission"}
},
// ...
]