Create user
curl --request POST \
--url https://api.sidenet.ai/v1/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"id": "user_4821",
"name": "Ada Lovelace",
"group_id": "grp_84f20c19",
"tools_auth": {
"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63": {
"credentials": {
"token": "the end user's CRM token"
}
}
}
}
EOFimport requests
url = "https://api.sidenet.ai/v1/users"
payload = {
"id": "user_4821",
"name": "Ada Lovelace",
"group_id": "grp_84f20c19",
"tools_auth": { "8d3b1a75-6c02-4e59-b84f-27a9d5e10c63": { "credentials": { "token": "the end user's CRM token" } } }
}
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({
id: 'user_4821',
name: 'Ada Lovelace',
group_id: 'grp_84f20c19',
tools_auth: {
'8d3b1a75-6c02-4e59-b84f-27a9d5e10c63': {credentials: {token: 'the end user\'s CRM token'}}
}
})
};
fetch('https://api.sidenet.ai/v1/users', 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.sidenet.ai/v1/users",
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([
'id' => 'user_4821',
'name' => 'Ada Lovelace',
'group_id' => 'grp_84f20c19',
'tools_auth' => [
'8d3b1a75-6c02-4e59-b84f-27a9d5e10c63' => [
'credentials' => [
'token' => 'the end user\'s CRM token'
]
]
]
]),
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.sidenet.ai/v1/users"
payload := strings.NewReader("{\n \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\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.sidenet.ai/v1/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/users")
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 \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"user": {
"id": "<string>",
"name": "<string>"
},
"group_id": "<string>",
"providers": [
"<string>"
]
}Users & Groups
Create user
Creates an end user ahead of use, so their group, display name and tool credentials are in place before their first session or scheduled workflow.
Creating explicitly is optional: minting a token (or a chat call) with an unseen user_id provisions the user automatically. A user created here is exactly what a later mint with the same id resolves to.
Requires your organization API key, from your backend.
POST
/
v1
/
users
Create user
curl --request POST \
--url https://api.sidenet.ai/v1/users \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"id": "user_4821",
"name": "Ada Lovelace",
"group_id": "grp_84f20c19",
"tools_auth": {
"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63": {
"credentials": {
"token": "the end user's CRM token"
}
}
}
}
EOFimport requests
url = "https://api.sidenet.ai/v1/users"
payload = {
"id": "user_4821",
"name": "Ada Lovelace",
"group_id": "grp_84f20c19",
"tools_auth": { "8d3b1a75-6c02-4e59-b84f-27a9d5e10c63": { "credentials": { "token": "the end user's CRM token" } } }
}
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({
id: 'user_4821',
name: 'Ada Lovelace',
group_id: 'grp_84f20c19',
tools_auth: {
'8d3b1a75-6c02-4e59-b84f-27a9d5e10c63': {credentials: {token: 'the end user\'s CRM token'}}
}
})
};
fetch('https://api.sidenet.ai/v1/users', 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.sidenet.ai/v1/users",
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([
'id' => 'user_4821',
'name' => 'Ada Lovelace',
'group_id' => 'grp_84f20c19',
'tools_auth' => [
'8d3b1a75-6c02-4e59-b84f-27a9d5e10c63' => [
'credentials' => [
'token' => 'the end user\'s CRM token'
]
]
]
]),
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.sidenet.ai/v1/users"
payload := strings.NewReader("{\n \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\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.sidenet.ai/v1/users")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/users")
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 \"id\": \"user_4821\",\n \"name\": \"Ada Lovelace\",\n \"group_id\": \"grp_84f20c19\",\n \"tools_auth\": {\n \"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63\": {\n \"credentials\": {\n \"token\": \"the end user's CRM token\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"user": {
"id": "<string>",
"name": "<string>"
},
"group_id": "<string>",
"providers": [
"<string>"
]
}Authorizations
Organization API key, generated in studio.sidenet.ai. Backend only — never in a browser.
Body
application/json
Your stable id for the end user.
Example:
"user_4821"
Example:
"Ada Lovelace"
The group the user belongs to. Omitted: the organization's Default group. An unseen id provisions the group.
Example:
"grp_84f20c19"
Per-provider credentials to store for the user, same shape as the mint.
Example:
{
"8d3b1a75-6c02-4e59-b84f-27a9d5e10c63": {
"credentials": { "token": "the end user's CRM token" }
}
}