curl --request POST \
--url https://api.hyperline.co/oauth/register \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"redirect_uris": [
"http://localhost:3000/callback"
],
"client_name": "Claude Desktop",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "read write",
"grant_types": [
"authorization_code",
"refresh_token"
],
"response_types": [
"code"
],
"software_id": "<string>",
"software_version": "<string>",
"contacts": [
"jsmith@example.com"
],
"tos_uri": "<string>",
"policy_uri": "<string>"
}
'import requests
url = "https://api.hyperline.co/oauth/register"
payload = {
"redirect_uris": ["http://localhost:3000/callback"],
"client_name": "Claude Desktop",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "read write",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"software_id": "<string>",
"software_version": "<string>",
"contacts": ["jsmith@example.com"],
"tos_uri": "<string>",
"policy_uri": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
redirect_uris: ['http://localhost:3000/callback'],
client_name: 'Claude Desktop',
client_uri: '<string>',
logo_uri: '<string>',
scope: 'read write',
grant_types: ['authorization_code', 'refresh_token'],
response_types: ['code'],
software_id: '<string>',
software_version: '<string>',
contacts: ['jsmith@example.com'],
tos_uri: '<string>',
policy_uri: '<string>'
})
};
fetch('https://api.hyperline.co/oauth/register', 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.hyperline.co/oauth/register",
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([
'redirect_uris' => [
'http://localhost:3000/callback'
],
'client_name' => 'Claude Desktop',
'client_uri' => '<string>',
'logo_uri' => '<string>',
'scope' => 'read write',
'grant_types' => [
'authorization_code',
'refresh_token'
],
'response_types' => [
'code'
],
'software_id' => '<string>',
'software_version' => '<string>',
'contacts' => [
'jsmith@example.com'
],
'tos_uri' => '<string>',
'policy_uri' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hyperline.co/oauth/register"
payload := strings.NewReader("{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.hyperline.co/oauth/register")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperline.co/oauth/register")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"client_id": "dyn_abc123xyz789",
"client_id_issued_at": 123,
"redirect_uris": [
"<string>"
],
"grant_types": [
"<string>"
],
"response_types": [
"<string>"
],
"client_name": "<string>",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "<string>"
}{
"error": "invalid_redirect_uri",
"error_description": "Redirect URI must use HTTPS."
}Register OAuth client
Register a dynamic OAuth client per RFC 7591.
curl --request POST \
--url https://api.hyperline.co/oauth/register \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"redirect_uris": [
"http://localhost:3000/callback"
],
"client_name": "Claude Desktop",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "read write",
"grant_types": [
"authorization_code",
"refresh_token"
],
"response_types": [
"code"
],
"software_id": "<string>",
"software_version": "<string>",
"contacts": [
"jsmith@example.com"
],
"tos_uri": "<string>",
"policy_uri": "<string>"
}
'import requests
url = "https://api.hyperline.co/oauth/register"
payload = {
"redirect_uris": ["http://localhost:3000/callback"],
"client_name": "Claude Desktop",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "read write",
"grant_types": ["authorization_code", "refresh_token"],
"response_types": ["code"],
"software_id": "<string>",
"software_version": "<string>",
"contacts": ["jsmith@example.com"],
"tos_uri": "<string>",
"policy_uri": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
redirect_uris: ['http://localhost:3000/callback'],
client_name: 'Claude Desktop',
client_uri: '<string>',
logo_uri: '<string>',
scope: 'read write',
grant_types: ['authorization_code', 'refresh_token'],
response_types: ['code'],
software_id: '<string>',
software_version: '<string>',
contacts: ['jsmith@example.com'],
tos_uri: '<string>',
policy_uri: '<string>'
})
};
fetch('https://api.hyperline.co/oauth/register', 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.hyperline.co/oauth/register",
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([
'redirect_uris' => [
'http://localhost:3000/callback'
],
'client_name' => 'Claude Desktop',
'client_uri' => '<string>',
'logo_uri' => '<string>',
'scope' => 'read write',
'grant_types' => [
'authorization_code',
'refresh_token'
],
'response_types' => [
'code'
],
'software_id' => '<string>',
'software_version' => '<string>',
'contacts' => [
'jsmith@example.com'
],
'tos_uri' => '<string>',
'policy_uri' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.hyperline.co/oauth/register"
payload := strings.NewReader("{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.hyperline.co/oauth/register")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperline.co/oauth/register")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"redirect_uris\": [\n \"http://localhost:3000/callback\"\n ],\n \"client_name\": \"Claude Desktop\",\n \"client_uri\": \"<string>\",\n \"logo_uri\": \"<string>\",\n \"scope\": \"read write\",\n \"grant_types\": [\n \"authorization_code\",\n \"refresh_token\"\n ],\n \"response_types\": [\n \"code\"\n ],\n \"software_id\": \"<string>\",\n \"software_version\": \"<string>\",\n \"contacts\": [\n \"jsmith@example.com\"\n ],\n \"tos_uri\": \"<string>\",\n \"policy_uri\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"client_id": "dyn_abc123xyz789",
"client_id_issued_at": 123,
"redirect_uris": [
"<string>"
],
"grant_types": [
"<string>"
],
"response_types": [
"<string>"
],
"client_name": "<string>",
"client_uri": "<string>",
"logo_uri": "<string>",
"scope": "<string>"
}{
"error": "invalid_redirect_uri",
"error_description": "Redirect URI must use HTTPS."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Array of redirect URIs for the client. HTTPS, localhost, and supported native app callback URIs are accepted.
1["http://localhost:3000/callback"]
Human-readable name of the client.
"Claude Desktop"
URL of the client's home page.
URL of the client's logo.
Space-separated list of requested scopes.
"read write"
Grant types the client will use.
authorization_code, refresh_token ["authorization_code", "refresh_token"]
Response types the client will use.
code ["code"]
Authentication method for token endpoint. All clients are treated as public (no secret issued).
none, client_secret_post Unique identifier for the client software.
Version of the client software.
Contact emails for the client developers.
URL to the client's terms of service.
URL to the client's privacy policy.
Response
Unique client identifier.
"dyn_abc123xyz789"
Unix timestamp when client_id was issued.
Registered redirect URIs.
Grant types the client can use.
Response types the client can use.
Authentication method for token endpoint.
none, client_secret_post Human-readable name of the client.
URL of the client's home page.
URL of the client's logo.
Space-separated list of granted scopes.
Was this page helpful?

