Skip to main content
POST
/
forward-configs
Create a new forward config to archive your logs in another system
curl --request POST \
  --url https://api.eu.bronto.io/forward-configs \
  --header 'Content-Type: application/json' \
  --header 'X-BRONTO-API-KEY: <api-key>' \
  --data @- <<EOF
{
  "name": "Archive data to S3",
  "compression": "ZSTD",
  "all_logs": true,
  "destination": {
    "destination_type": "S3",
    "bucket": "my-archive-bucket",
    "prefix": "bronto/archives/",
    "storage_class": "STANDARD"
  },
  "description": "Sending data to S3 for long term store",
  "filter": "level='ERROR' or level='WARN'",
  "log_ids": [
    "<string>"
  ],
  "max_payload_size_bytes": 10000000,
  "max_payload_size_events": 1000,
  "max_buffer_time_ms": 300000
}
EOF
import requests

url = "https://api.eu.bronto.io/forward-configs"

payload = {
"name": "Archive data to S3",
"compression": "ZSTD",
"all_logs": True,
"destination": {
"destination_type": "S3",
"bucket": "my-archive-bucket",
"prefix": "bronto/archives/",
"storage_class": "STANDARD"
},
"description": "Sending data to S3 for long term store",
"filter": "level='ERROR' or level='WARN'",
"log_ids": ["<string>"],
"max_payload_size_bytes": 10000000,
"max_payload_size_events": 1000,
"max_buffer_time_ms": 300000
}
headers = {
"X-BRONTO-API-KEY": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'X-BRONTO-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Archive data to S3',
compression: 'ZSTD',
all_logs: true,
destination: {
destination_type: 'S3',
bucket: 'my-archive-bucket',
prefix: 'bronto/archives/',
storage_class: 'STANDARD'
},
description: 'Sending data to S3 for long term store',
filter: 'level=\'ERROR\' or level=\'WARN\'',
log_ids: ['<string>'],
max_payload_size_bytes: 10000000,
max_payload_size_events: 1000,
max_buffer_time_ms: 300000
})
};

fetch('https://api.eu.bronto.io/forward-configs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eu.bronto.io/forward-configs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Archive data to S3',
'compression' => 'ZSTD',
'all_logs' => true,
'destination' => [
'destination_type' => 'S3',
'bucket' => 'my-archive-bucket',
'prefix' => 'bronto/archives/',
'storage_class' => 'STANDARD'
],
'description' => 'Sending data to S3 for long term store',
'filter' => 'level=\'ERROR\' or level=\'WARN\'',
'log_ids' => [
'<string>'
],
'max_payload_size_bytes' => 10000000,
'max_payload_size_events' => 1000,
'max_buffer_time_ms' => 300000
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-BRONTO-API-KEY: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.eu.bronto.io/forward-configs"

payload := strings.NewReader("{\n \"name\": \"Archive data to S3\",\n \"compression\": \"ZSTD\",\n \"all_logs\": true,\n \"destination\": {\n \"destination_type\": \"S3\",\n \"bucket\": \"my-archive-bucket\",\n \"prefix\": \"bronto/archives/\",\n \"storage_class\": \"STANDARD\"\n },\n \"description\": \"Sending data to S3 for long term store\",\n \"filter\": \"level='ERROR' or level='WARN'\",\n \"log_ids\": [\n \"<string>\"\n ],\n \"max_payload_size_bytes\": 10000000,\n \"max_payload_size_events\": 1000,\n \"max_buffer_time_ms\": 300000\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("X-BRONTO-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.eu.bronto.io/forward-configs")
.header("X-BRONTO-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Archive data to S3\",\n \"compression\": \"ZSTD\",\n \"all_logs\": true,\n \"destination\": {\n \"destination_type\": \"S3\",\n \"bucket\": \"my-archive-bucket\",\n \"prefix\": \"bronto/archives/\",\n \"storage_class\": \"STANDARD\"\n },\n \"description\": \"Sending data to S3 for long term store\",\n \"filter\": \"level='ERROR' or level='WARN'\",\n \"log_ids\": [\n \"<string>\"\n ],\n \"max_payload_size_bytes\": 10000000,\n \"max_payload_size_events\": 1000,\n \"max_buffer_time_ms\": 300000\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.eu.bronto.io/forward-configs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-BRONTO-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Archive data to S3\",\n \"compression\": \"ZSTD\",\n \"all_logs\": true,\n \"destination\": {\n \"destination_type\": \"S3\",\n \"bucket\": \"my-archive-bucket\",\n \"prefix\": \"bronto/archives/\",\n \"storage_class\": \"STANDARD\"\n },\n \"description\": \"Sending data to S3 for long term store\",\n \"filter\": \"level='ERROR' or level='WARN'\",\n \"log_ids\": [\n \"<string>\"\n ],\n \"max_payload_size_bytes\": 10000000,\n \"max_payload_size_events\": 1000,\n \"max_buffer_time_ms\": 300000\n}"

response = http.request(request)
puts response.read_body
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "Archive data to S3",
  "compression": "ZSTD",
  "all_logs": true,
  "destination": {
    "destination_type": "S3",
    "bucket": "my-archive-bucket",
    "prefix": "bronto/archives/",
    "storage_class": "STANDARD"
  },
  "created_at": 1710948395538,
  "description": "Sending data to S3 for long term store",
  "filter": "level='ERROR' or level='WARN'",
  "log_ids": [
    "<string>"
  ],
  "max_payload_size_bytes": 10000000,
  "max_payload_size_events": 1000,
  "max_buffer_time_ms": 300000
}
{
"bad_request_validation": {
"summary": "Bad Request - Validation Error",
"description": "Example error when request validation fails",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "95c6a974e3ab01209b6b0dfedb1b16c5",
"details": "Validation failed: 'name' field is required and cannot be empty"
}
},
"bad_request_invalid_type": {
"summary": "Bad Request - Invalid Metric Type",
"description": "Example error when an invalid metric type is provided",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "00d8a51bb2874f2583670317a4fb8db7",
"details": "Invalid metric_type 'INVALID'. Must be one of: COUNTER, GAUGE, HISTOGRAM"
}
},
"forbidden": {
"summary": "Forbidden Access",
"description": "Example error when user lacks required permissions",
"value": {
"code": 403,
"type": "Forbidden",
"correlation_id": "40276639de0f49d586e32edd8c4f6b34",
"details": "Access denied. User does not have permission to create metric definition templates"
}
},
"not_found": {
"summary": "Resource Not Found",
"description": "Example error when requested resource doesn't exist",
"value": {
"code": 404,
"type": "Not Found",
"correlation_id": "605f832bcfe44a1081441691c8d42253",
"details": "Metric definition template with id '550e8400-e29b-41d4-a716-446655440000' not found"
}
},
"rate_limit": {
"summary": "Rate Limit Exceeded",
"description": "Example error when API rate limit is exceeded",
"value": {
"code": 429,
"type": "Too Many Requests",
"correlation_id": "53909ed43c544531b7a555e295960437",
"details": "Rate limit exceeded. Maximum 100 requests are allowed within a 5-minute window"
}
},
"internal_server_error": {
"summary": "Internal Server Error",
"description": "Example error for unexpected server-side failures",
"value": {
"code": 500,
"type": "Internal Server Error",
"correlation_id": "b129b8e0e66c41aa9541a30f67e38ce2",
"details": "An unexpected error occurred while processing your request"
}
}
}
{
"bad_request_validation": {
"summary": "Bad Request - Validation Error",
"description": "Example error when request validation fails",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "95c6a974e3ab01209b6b0dfedb1b16c5",
"details": "Validation failed: 'name' field is required and cannot be empty"
}
},
"bad_request_invalid_type": {
"summary": "Bad Request - Invalid Metric Type",
"description": "Example error when an invalid metric type is provided",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "00d8a51bb2874f2583670317a4fb8db7",
"details": "Invalid metric_type 'INVALID'. Must be one of: COUNTER, GAUGE, HISTOGRAM"
}
},
"forbidden": {
"summary": "Forbidden Access",
"description": "Example error when user lacks required permissions",
"value": {
"code": 403,
"type": "Forbidden",
"correlation_id": "40276639de0f49d586e32edd8c4f6b34",
"details": "Access denied. User does not have permission to create metric definition templates"
}
},
"not_found": {
"summary": "Resource Not Found",
"description": "Example error when requested resource doesn't exist",
"value": {
"code": 404,
"type": "Not Found",
"correlation_id": "605f832bcfe44a1081441691c8d42253",
"details": "Metric definition template with id '550e8400-e29b-41d4-a716-446655440000' not found"
}
},
"rate_limit": {
"summary": "Rate Limit Exceeded",
"description": "Example error when API rate limit is exceeded",
"value": {
"code": 429,
"type": "Too Many Requests",
"correlation_id": "53909ed43c544531b7a555e295960437",
"details": "Rate limit exceeded. Maximum 100 requests are allowed within a 5-minute window"
}
},
"internal_server_error": {
"summary": "Internal Server Error",
"description": "Example error for unexpected server-side failures",
"value": {
"code": 500,
"type": "Internal Server Error",
"correlation_id": "b129b8e0e66c41aa9541a30f67e38ce2",
"details": "An unexpected error occurred while processing your request"
}
}
}
{
"bad_request_validation": {
"summary": "Bad Request - Validation Error",
"description": "Example error when request validation fails",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "95c6a974e3ab01209b6b0dfedb1b16c5",
"details": "Validation failed: 'name' field is required and cannot be empty"
}
},
"bad_request_invalid_type": {
"summary": "Bad Request - Invalid Metric Type",
"description": "Example error when an invalid metric type is provided",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "00d8a51bb2874f2583670317a4fb8db7",
"details": "Invalid metric_type 'INVALID'. Must be one of: COUNTER, GAUGE, HISTOGRAM"
}
},
"forbidden": {
"summary": "Forbidden Access",
"description": "Example error when user lacks required permissions",
"value": {
"code": 403,
"type": "Forbidden",
"correlation_id": "40276639de0f49d586e32edd8c4f6b34",
"details": "Access denied. User does not have permission to create metric definition templates"
}
},
"not_found": {
"summary": "Resource Not Found",
"description": "Example error when requested resource doesn't exist",
"value": {
"code": 404,
"type": "Not Found",
"correlation_id": "605f832bcfe44a1081441691c8d42253",
"details": "Metric definition template with id '550e8400-e29b-41d4-a716-446655440000' not found"
}
},
"rate_limit": {
"summary": "Rate Limit Exceeded",
"description": "Example error when API rate limit is exceeded",
"value": {
"code": 429,
"type": "Too Many Requests",
"correlation_id": "53909ed43c544531b7a555e295960437",
"details": "Rate limit exceeded. Maximum 100 requests are allowed within a 5-minute window"
}
},
"internal_server_error": {
"summary": "Internal Server Error",
"description": "Example error for unexpected server-side failures",
"value": {
"code": 500,
"type": "Internal Server Error",
"correlation_id": "b129b8e0e66c41aa9541a30f67e38ce2",
"details": "An unexpected error occurred while processing your request"
}
}
}
{
"bad_request_validation": {
"summary": "Bad Request - Validation Error",
"description": "Example error when request validation fails",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "95c6a974e3ab01209b6b0dfedb1b16c5",
"details": "Validation failed: 'name' field is required and cannot be empty"
}
},
"bad_request_invalid_type": {
"summary": "Bad Request - Invalid Metric Type",
"description": "Example error when an invalid metric type is provided",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "00d8a51bb2874f2583670317a4fb8db7",
"details": "Invalid metric_type 'INVALID'. Must be one of: COUNTER, GAUGE, HISTOGRAM"
}
},
"forbidden": {
"summary": "Forbidden Access",
"description": "Example error when user lacks required permissions",
"value": {
"code": 403,
"type": "Forbidden",
"correlation_id": "40276639de0f49d586e32edd8c4f6b34",
"details": "Access denied. User does not have permission to create metric definition templates"
}
},
"not_found": {
"summary": "Resource Not Found",
"description": "Example error when requested resource doesn't exist",
"value": {
"code": 404,
"type": "Not Found",
"correlation_id": "605f832bcfe44a1081441691c8d42253",
"details": "Metric definition template with id '550e8400-e29b-41d4-a716-446655440000' not found"
}
},
"rate_limit": {
"summary": "Rate Limit Exceeded",
"description": "Example error when API rate limit is exceeded",
"value": {
"code": 429,
"type": "Too Many Requests",
"correlation_id": "53909ed43c544531b7a555e295960437",
"details": "Rate limit exceeded. Maximum 100 requests are allowed within a 5-minute window"
}
},
"internal_server_error": {
"summary": "Internal Server Error",
"description": "Example error for unexpected server-side failures",
"value": {
"code": 500,
"type": "Internal Server Error",
"correlation_id": "b129b8e0e66c41aa9541a30f67e38ce2",
"details": "An unexpected error occurred while processing your request"
}
}
}
{
"bad_request_validation": {
"summary": "Bad Request - Validation Error",
"description": "Example error when request validation fails",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "95c6a974e3ab01209b6b0dfedb1b16c5",
"details": "Validation failed: 'name' field is required and cannot be empty"
}
},
"bad_request_invalid_type": {
"summary": "Bad Request - Invalid Metric Type",
"description": "Example error when an invalid metric type is provided",
"value": {
"code": 400,
"type": "Bad Request",
"correlation_id": "00d8a51bb2874f2583670317a4fb8db7",
"details": "Invalid metric_type 'INVALID'. Must be one of: COUNTER, GAUGE, HISTOGRAM"
}
},
"forbidden": {
"summary": "Forbidden Access",
"description": "Example error when user lacks required permissions",
"value": {
"code": 403,
"type": "Forbidden",
"correlation_id": "40276639de0f49d586e32edd8c4f6b34",
"details": "Access denied. User does not have permission to create metric definition templates"
}
},
"not_found": {
"summary": "Resource Not Found",
"description": "Example error when requested resource doesn't exist",
"value": {
"code": 404,
"type": "Not Found",
"correlation_id": "605f832bcfe44a1081441691c8d42253",
"details": "Metric definition template with id '550e8400-e29b-41d4-a716-446655440000' not found"
}
},
"rate_limit": {
"summary": "Rate Limit Exceeded",
"description": "Example error when API rate limit is exceeded",
"value": {
"code": 429,
"type": "Too Many Requests",
"correlation_id": "53909ed43c544531b7a555e295960437",
"details": "Rate limit exceeded. Maximum 100 requests are allowed within a 5-minute window"
}
},
"internal_server_error": {
"summary": "Internal Server Error",
"description": "Example error for unexpected server-side failures",
"value": {
"code": 500,
"type": "Internal Server Error",
"correlation_id": "b129b8e0e66c41aa9541a30f67e38ce2",
"details": "An unexpected error occurred while processing your request"
}
}
}

Authorizations

X-BRONTO-API-KEY
string
header
required

Body

application/json
name
string
required

The name of the config

Required string length: 1 - 255
Example:

"Archive data to S3"

compression
enum<string>
default:ZSTD
required

The compression algorithm to use, to reduce the payload size (ZSTD recommended)

Available options:
ZSTD,
GZIP,
NONE
all_logs
boolean
required

True to forward all logs, logs created in future will be automatically forwarded

destination
object
required
description
string

Extra contextual information to add to the forward config.

Maximum string length: 1000
Example:

"Sending data to S3 for long term store"

filter
string

Optional filter, to forward only some events and discard others

Maximum string length: 2000
Example:

"level='ERROR' or level='WARN'"

log_ids
string[]

The list of log ids to forward. Required if all_logs is set to false, ignored if all_logs is set to true

max_payload_size_bytes
number<int32>
default:10000000

The max size of the payload in bytes, before compression. Payload of smaller size can be delivered by the system

Required range: 1000000 <= x <= 1000000000
Example:

10000000

max_payload_size_events
number<int32>
default:1000000

The max number of log events in a payload. Payloads with less events can be delivered by the system

Required range: 1000 <= x <= 1000000000
Example:

1000

max_buffer_time_ms
number<int32>
default:300000

The maximum time waited by the system while buffering events to build a payload

Required range: 60000 <= x <= 86400000
Example:

300000

Response

Forward config is created successfully

id
string<uuid>
required

unique identifier for the config

name
string
required

The name of the config

Required string length: 1 - 255
Example:

"Archive data to S3"

compression
enum<string>
default:ZSTD
required

The compression to use to reduce the payload size

Available options:
ZSTD,
GZIP,
NONE
all_logs
boolean
required

True to forward all logs, logs created in future will be automatically forwarded

destination
object
required
created_at
integer<int64>
required

The timestamp when the config was created

Example:

1710948395538

description
string

Extra contextual information to add to the forward config.

Maximum string length: 1000
Example:

"Sending data to S3 for long term store"

filter
string

Optional filter to forward only some events and discard others

Maximum string length: 2000
Example:

"level='ERROR' or level='WARN'"

log_ids
string[]

The list of log ids to forward. Required if all_logs is set to false, ignored if all_logs is set to true

max_payload_size_bytes
number<int32>
default:10000000

The max size of the payload in bytes, before compression. Payload of smaller size can be delivered by the system

Required range: 1000000 <= x <= 1000000000
Example:

10000000

max_payload_size_events
number<int32>
default:1000000

The max number of log events in a payload. Payloads with less events can be delivered by the system

Required range: 1000 <= x <= 1000000000
Example:

1000

max_buffer_time_ms
number<int32>
default:300000

The maximum time waited by the system while buffering events to build a payload.

Required range: 60000 <= x <= 86400000
Example:

300000