Refreshes an access session and issues a new access token without having to re-engage the authorization process. This can be used in scenarios where the API Key is kept in secure storage and it would be inconvenient or insecure to continuously retrieve it.
Header Key | Description | Example |
---|---|---|
Csc-Refresh-Token | The refresh token that was issued at the same time as the access token. | |
Content-Type | The content type for this request. | application/json |
A successful response
Field Name | Type | Description |
---|---|---|
accessToken | string | |
refreshToken | string |
curl \
-X POST "https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh" \
-H "Csc-Refresh-Token: abc123"
-H "Content-Type: application/json"
function postV3AuthTokensRefresh() {
const url = 'https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh';
const headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
fetch(url, {
method: 'POST',
headers: headers
}).then((response) => {
if (!response.ok) throw new Error(response.status);
return response.json()
}).then((json) => {
const { accessToken, refreshToken } = json;
// ...
});
}
const https = require('https');
function postV3AuthTokensRefresh() {
const headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
const options = {
hostname: 'rest.eus.canaryspeech.com',
port: 443,
path: '/v3/auth/tokens/refresh',
method: 'POST',
headers: headers
};
const request = https.request(options, (response) => {
if (response.statusCode !== 200) throw new Error(response.statusCode);
response.on('data', (d) => {
const { accessToken, refreshToken } = JSON.parse(d);
// ...
});
});
request.on('error', (err) => {
throw new Error(err);
});
request.end();
}
const axios = require('axios').default;
async function postV3AuthTokensRefresh() {
const url = 'https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh';
const headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
const response = await axios.post(url, null, { headers });
if (response.status !== 200) throw new Error(response.status);
const { accessToken, refreshToken } = response.data;
// ...
}
import * as https from 'https';
function postV3AuthTokensRefresh(): void {
const headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
const options = {
hostname: 'rest.eus.canaryspeech.com',
port: 443,
path: '/v3/auth/tokens/refresh',
method: 'POST',
headers: headers
};
const request = https.request(options, (response) => {
if (response.statusCode !== 200) throw new Error(response.statusCode);
response.on('data', (d) => {
const { accessToken, refreshToken } = JSON.parse(d) as Record<string, unknown>;
// ...
});
});
request.on('error', (err) => {
throw new Error(err);
});
request.end();
}
import axios from 'axios';
async function postV3AuthTokensRefresh(): Promise<void> {
const url = 'https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh';
const headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
const response = await axios.post(url, null, { headers });
if (response.status !== 200) throw new Error(response.status);
const { accessToken, refreshToken } = response.data;
// ...
}
import requests
def post_v3_auth_tokens_refresh():
url = 'https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh'
headers = {
'Csc-Refresh-Token': 'abc123',
'Content-Type': 'application/json'
}
response = requests.post(
url,
headers=headers,
)
if response.status_code !== 200:
raise Exception(response.status_code)
response_obj = response.json()
access_token = response_obj['accessToken']
refresh_token = response_obj['refreshToken']
# ...
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.JSONParser;
import org.json.simple.JSONValue;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
public class CanarySpeechApi {
public void postV3AuthTokensRefresh() {
URI uri = new URI("https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh");
HttpRequest request = HttpRequest.newBuilder()
.uri(uri)
.version(HttpClient.Version.HTTP_2)
.header("Csc-Refresh-Token", "abc123")
.header("Content-Type", "application/json")
.POST()
.build();
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
if (client.status != 200) {
throw new Exception(client.status.toString());
}
JSONParser parser = new JSONParser();
JSONObject responseBody = (JSONObject) parser.parse(client.body());
String accessToken = (String) responseBody.get("accessToken");
String refreshToken = (String) responseBody.get("refreshToken");
// ...
}
}
import org.json.JSONObject
import java.lang.StringBuilder
import java.net.URL
import javax.net.ssl.HttpsURLConnection
suspend fun postV3AuthTokensRefresh() = runCatching {
val url = URL.create("https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh")
with(url.openConnection() as HttpsURLConnection) {
requestMethod = "POST"
instanceFollowRedirects = true
setRequestProperty("Csc-Refresh-Token", "abc123")
setRequestProperty("Content-Type", "application/json")
doOutput = true
if (responseCode != 200) throw Error(responseMessage)
val buffer = StringBuilder()
var line: String?
inputStream.bufferedReader(Charsets.UTF-8).use {
do {
line = it.readLine()
if (line != null) buffer.appendLine(line)
} while (line != null)
}
val responseBody = JSONObject(buffer.toString())
val accessToken = responseBody.get("accessToken") as String
val refreshToken = responseBody.get("refreshToken") as String
// ...
}
}
import UIKit
func postV3AuthTokensRefresh() -> void {
let url = URL("https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh")
let headers: [String: String] = [ "Csc-Refresh-Token": "abc123", "Content-Type": "application/json" ]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard
let data = data,
let response = response as? HTTPURLResponse,
error == nil
else {
print("error", error ?? URLError(.badServerResponse)
return
}
guard (200 ... 299) ~= response.statusCode else {
print("statusCode = \(response.statusCode)")
print("response = \(response)")
return
}
do {
let responseObj = try JSONDecoder().decode(PostV3AuthTokensRefreshResponse.self, data)
// ...
} catch {
print(error)
}
}
}
}
struct PostV3AuthTokensRefreshResponse: Decodable {
let accessToken: String
let refreshToken: String
}
using System.Collections.Generic;
using System.Net.Http;
using System.Text.Encoding;
using System.Text.Json;
using System.Text.Json.Serialization;
public static class CanarySpeechAPI
{
public static readonly HttpClient client = new HttpClient();
public static async Task postV3AuthTokensRefresh()
{
var url = "https://rest.eus.canaryspeech.com/v3/auth/tokens/refresh\"";
var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.Add("Csc-Refresh-Token", "abc123");
request.Headers.Add("Content-Type", "application/json");
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
var responseJson = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(responseBody);
var accessToken = (String)responseJson["accessToken"];
var refreshToken = (String)responseJson["refreshToken"];
// ...
}
}
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<void> function postV3AuthTokensRefresh() async {
final uri = Uri.https('rest.eus.canaryspeech.com', 'v3/auth/tokens/refresh', queryParams);
final headers = { 'Csc-Refresh-Token': 'abc123', 'Content-Type': 'application/json' };
final request = http.Request('POST', uri);
request.headers.addAll(headers)
final client = http.Client();
try {
final responseStream = await client.send(request);
final statusCode = responseStream.statusCode;
if (statusCode < 200 || statusCode >= 300) {
throw Error(statusCode.toString());
}
final responseBytes = await responseStream.stream.toBytes();
final responseString = utf8.decode(responseBytes);
final response = json.decode(responseString);
final accessToken = response['accessToken'] as String;
final refreshToken = response['refreshToken'] as String;
// ...
} catch (e) {
print(e);
}
}