cURL
curl --request GET \
--url https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema', 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.brightdata.com/datasets/delivery_settings/{destination_type}/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"name": "s3",
"properties": {
"bucket": {
"type": "string",
"required": true
},
"credentials": {
"type": "object",
"required": false,
"or": [
{
"aws-access-key": {
"type": "string",
"required": true
},
"aws-secret-key": {
"type": "string",
"required": true
}
},
{
"role_arn": {
"type": "string",
"required": true
},
"external_id": {
"type": "string",
"required": true
}
}
]
},
"region": {
"type": "string",
"required": false
},
"directory": {
"type": "string",
"required": false
},
"endpoint_url": {
"type": "string",
"required": false
}
}
}{
"error": "Destination type not found"
}Delivery settings
Get destination type schema
Retrieve the exact fields and credentials required to configure a specific delivery destination type such as s3, sftp, gcs or webhook.
GET
/
datasets
/
delivery_settings
/
{destination_type}
/
schema
cURL
curl --request GET \
--url https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema', 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.brightdata.com/datasets/delivery_settings/{destination_type}/schema",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.brightdata.com/datasets/delivery_settings/{destination_type}/schema")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"name": "s3",
"properties": {
"bucket": {
"type": "string",
"required": true
},
"credentials": {
"type": "object",
"required": false,
"or": [
{
"aws-access-key": {
"type": "string",
"required": true
},
"aws-secret-key": {
"type": "string",
"required": true
}
},
{
"role_arn": {
"type": "string",
"required": true
},
"external_id": {
"type": "string",
"required": true
}
}
]
},
"region": {
"type": "string",
"required": false
},
"directory": {
"type": "string",
"required": false
},
"endpoint_url": {
"type": "string",
"required": false
}
}
}{
"error": "Destination type not found"
}Each delivery destination supported by Bright Data has its own field set. For example,
Required permissions:
Required permissions:
Required permissions:
Required SAS permissions:
Required permissions:
Required permissions:
Requirements:
s3 requires a bucket and either an access key/secret pair or an IAM role ARN plus external ID, while sftp requires host and credential fields. Call this endpoint with the destination type you plan to use, then supply the returned fields in the deliver object when you call Update view delivery settings.
Use Get delivery options first to list the valid values you can pass as
destination_type.Example credential payloads and permissions
The values shown below are sample values. Replace them with your real credentials before sending a request. Use Get delivery options to list the supporteddestination_type values. Then call this endpoint with the selected destination_type and pass the required fields in the deliver object.
For cloud storage destinations, Bright Data may validate that delivered files are readable after upload. Make sure the credentials include the provider-specific upload and read permissions listed below. If read permission is missing, delivery upload may succeed, but read-after-upload validation can fail.
Amazon S3
"credentials": {
"aws-access-key": "<AWS_ACCESS_KEY_ID>",
"aws-secret-key": "<AWS_SECRET_ACCESS_KEY>"
}
s3:PutObjects3:GetObject
s3:AbortMultipartUpload and s3:ListMultipartUploadParts.
Amazon S3 with IAM role
"credentials": {
"role_arn": "<AWS_ROLE_ARN>",
"external_id": "<EXTERNAL_ID>"
}
s3:PutObjects3:GetObject
s3:AbortMultipartUpload and s3:ListMultipartUploadParts.
The IAM role trust policy must allow Bright Data’s delivery role to assume the customer role using the provided external ID.
Azure Blob Storage
{
"container": "customer-container",
"credentials": {
"account": "<storage-account-name>",
"key": "<storage-account-key>"
}
}
- blob create/write permission for upload
- blob read permission for read-after-upload validation
Azure Blob Storage with SAS token
{
"container": "customer-container",
"credentials": {
"account": "<storage-account-name>",
"sas_token": "<sas-token>"
}
}
r, read, required for read-after-upload validationc, create, required for creating new blobsw, write, required for uploading blob content
Google Cloud Storage
{
"bucket": "customer-bucket",
"credentials": {
"client_email": "<service-account>@<project>.iam.gserviceaccount.com",
"private_key": "-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"
}
}
storage.objects.createstorage.objects.get
Ali OSS
{
"bucket": "customer-bucket",
"region": "oss-us-east-1",
"credentials": {
"access_key_id": "<ALI_OSS_ACCESS_KEY_ID>",
"access_key_secret": "<ALI_OSS_ACCESS_KEY_SECRET>"
}
}
oss:PutObjectoss:GetObject
Webhook
{
"endpoint": "https://example.com/webhook",
"auth_header": "Bearer <TOKEN>",
"compress": true
}
- the endpoint must accept
POSTrequests - the endpoint must return a
2xxresponse after receiving the payload - for webhook payloads larger than
10 MB, use cloud storage delivery instead of webhook
Authorizations
Use your Bright Data API Key as a Bearer token in the Authorization header.
How to authenticate:
- Obtain your API Key from the Bright Data account settings at https://brightdata.com/cp/setting/users
- Include the API Key in the Authorization header of your requests
- Format:
Authorization: Bearer YOUR_API_KEY
Example:
Authorization: Bearer YOUR_API_KEY
Learn how to get your Bright Data API key: https://docs.brightdata.com/api-reference/authentication
Path Parameters
The identifier of the delivery strategy. Supported values: api_pull, webhook, email, gcs, gcp_pubsub, s3, snowflake, ali_oss, sftp, azure.
Example:
"s3"
Was this page helpful?