curl --request POST \
--url https://api.onecli.sh/v1/team/provisions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"role": "member",
"skipOnboarding": true
}
'import requests
url = "https://api.onecli.sh/v1/team/provisions"
payload = {
"role": "member",
"skipOnboarding": True
}
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({role: 'member', skipOnboarding: true})
};
fetch('https://api.onecli.sh/v1/team/provisions', 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.onecli.sh/v1/team/provisions",
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([
'role' => 'member',
'skipOnboarding' => true
]),
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.onecli.sh/v1/team/provisions"
payload := strings.NewReader("{\n \"role\": \"member\",\n \"skipOnboarding\": true\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.onecli.sh/v1/team/provisions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"role\": \"member\",\n \"skipOnboarding\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/team/provisions")
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 \"role\": \"member\",\n \"skipOnboarding\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"userId": "<string>",
"projectId": "<string>",
"apiKey": "<string>",
"claimUrl": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Provision a team member
Pre-creates a user account with its own project, a usable API key, a default agent, and a claim link. The API key works immediately, so agents can make requests before the user signs up. The user later opens the claim link to bind the account to their identity. Unclaimed provisions expire after 7 days and are cleaned up automatically.
Requires an admin or owner role. Cloud only.
curl --request POST \
--url https://api.onecli.sh/v1/team/provisions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"role": "member",
"skipOnboarding": true
}
'import requests
url = "https://api.onecli.sh/v1/team/provisions"
payload = {
"role": "member",
"skipOnboarding": True
}
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({role: 'member', skipOnboarding: true})
};
fetch('https://api.onecli.sh/v1/team/provisions', 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.onecli.sh/v1/team/provisions",
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([
'role' => 'member',
'skipOnboarding' => true
]),
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.onecli.sh/v1/team/provisions"
payload := strings.NewReader("{\n \"role\": \"member\",\n \"skipOnboarding\": true\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.onecli.sh/v1/team/provisions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"role\": \"member\",\n \"skipOnboarding\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.onecli.sh/v1/team/provisions")
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 \"role\": \"member\",\n \"skipOnboarding\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"userId": "<string>",
"projectId": "<string>",
"apiKey": "<string>",
"claimUrl": "<string>",
"expiresAt": "2023-11-07T05:31:56Z"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
API key obtained from the dashboard or GET /user/api-key
Body
Response
User provisioned
Returned once when a user is provisioned. The API key is shown only here.
Provision record ID.
Placeholder user ID (becomes the real user after the claim).
Pre-created project ID.
Project-scoped API key (oc_…), usable immediately.
Link the user opens to claim the account.
When the unclaimed provision expires (7 days from creation).