curl --request POST \
--url https://account.sendcloud.com/oauth2/token \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data scope=api \
--data 'client_id=<string>'import requests
url = "https://account.sendcloud.com/oauth2/token"
payload = {
"grant_type": "client_credentials",
"scope": "api",
"client_id": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({grant_type: 'client_credentials', scope: 'api', client_id: '<string>'})
};
fetch('https://account.sendcloud.com/oauth2/token', 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://account.sendcloud.com/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=client_credentials&scope=api&client_id=%3Cstring%3E",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/x-www-form-urlencoded"
],
]);
$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://account.sendcloud.com/oauth2/token"
payload := strings.NewReader("grant_type=client_credentials&scope=api&client_id=%3Cstring%3E")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://account.sendcloud.com/oauth2/token")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("grant_type=client_credentials&scope=api&client_id=%3Cstring%3E")
.asString();require 'uri'
require 'net/http'
url = URI("https://account.sendcloud.com/oauth2/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/x-www-form-urlencoded'
request.body = "grant_type=client_credentials&scope=api&client_id=%3Cstring%3E"
response = http.request(request)
puts response.read_body{
"access_token": "ory_at_dK...",
"expires_in": 3599,
"scope": "api",
"token_type": "bearer"
}{
"error": "<string>",
"error_debug": "<string>",
"error_description": "<string>",
"error_hint": "The redirect URL is not allowed.",
"status_code": 401
}OAuth 2.0 token
Use this endpoint to get a new OAuth 2.0 access token.
curl --request POST \
--url https://account.sendcloud.com/oauth2/token \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data grant_type=client_credentials \
--data scope=api \
--data 'client_id=<string>'import requests
url = "https://account.sendcloud.com/oauth2/token"
payload = {
"grant_type": "client_credentials",
"scope": "api",
"client_id": "<string>"
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/x-www-form-urlencoded"
}
response = requests.post(url, data=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({grant_type: 'client_credentials', scope: 'api', client_id: '<string>'})
};
fetch('https://account.sendcloud.com/oauth2/token', 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://account.sendcloud.com/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "grant_type=client_credentials&scope=api&client_id=%3Cstring%3E",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/x-www-form-urlencoded"
],
]);
$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://account.sendcloud.com/oauth2/token"
payload := strings.NewReader("grant_type=client_credentials&scope=api&client_id=%3Cstring%3E")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://account.sendcloud.com/oauth2/token")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/x-www-form-urlencoded")
.body("grant_type=client_credentials&scope=api&client_id=%3Cstring%3E")
.asString();require 'uri'
require 'net/http'
url = URI("https://account.sendcloud.com/oauth2/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/x-www-form-urlencoded'
request.body = "grant_type=client_credentials&scope=api&client_id=%3Cstring%3E"
response = http.request(request)
puts response.read_body{
"access_token": "ory_at_dK...",
"expires_in": 3599,
"scope": "api",
"token_type": "bearer"
}{
"error": "<string>",
"error_debug": "<string>",
"error_description": "<string>",
"error_hint": "The redirect URL is not allowed.",
"status_code": 401
}grant_type=client_credentials and scope=api:
curl -X POST https://account.sendcloud.com/oauth2/token \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "scope=api"
access_token as a bearer token on subsequent API requests:
Authorization: Bearer ory_at_dK...
expires_in field, use this to cache the bearer token and refresh just before it expires.Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
The OAuth 2.0 grant type. Only client_credentials is supported.
client_credentials "client_credentials"
The scope to request for the access token. Must be set to api,
which grants access to the Sendcloud API.
"api"
Your OAuth 2.0 client ID. You can omit this field when you send your client ID and client secret using HTTP Basic authentication.
Response
OAuth2TokenExchange
OAuth2 Token Exchange Result
The access token issued by the authorization server.
"ory_at_dK..."
The lifetime in seconds of the access token. Access tokens issued
through the client credentials grant expire 1 hour after they are
issued, so this value is always close to 3600.
3599
The scope of the access token
"api"
The type of the token issued
"bearer"