Skip to main content
POST
/
api
/
v1
/
auth
/
register
Register provider
curl --request POST \
  --url https://sdp.suki.ai/api/v1/auth/register \
  --header 'Content-Type: application/json' \
  --data '
{
  "partner_id": "your-partner-id",
  "partner_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "provider_id": "provider-123",
  "provider_name": "Dr. John Smith",
  "provider_org_id": "org-123",
  "provider_specialty": "CARDIOLOGY"
}
'
import requests

url = "https://sdp.suki.ai/api/v1/auth/register"

payload = {
    "partner_id": "your-partner-id",
    "partner_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "provider_id": "provider-123",
    "provider_name": "Dr. John Smith",
    "provider_org_id": "org-123",
    "provider_specialty": "CARDIOLOGY"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: JSON.stringify({
    partner_id: 'your-partner-id',
    partner_token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
    provider_id: 'provider-123',
    provider_name: 'Dr. John Smith',
    provider_org_id: 'org-123',
    provider_specialty: 'CARDIOLOGY'
  })
};

fetch('https://sdp.suki.ai/api/v1/auth/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://sdp.suki.ai/api/v1/auth/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([
    'partner_id' => 'your-partner-id',
    'partner_token' => 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...',
    'provider_id' => 'provider-123',
    'provider_name' => 'Dr. John Smith',
    'provider_org_id' => 'org-123',
    'provider_specialty' => 'CARDIOLOGY'
  ]),
  CURLOPT_HTTPHEADER => [
    "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://sdp.suki.ai/api/v1/auth/register"

	payload := strings.NewReader("{\n  \"partner_id\": \"your-partner-id\",\n  \"partner_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"provider_id\": \"provider-123\",\n  \"provider_name\": \"Dr. John Smith\",\n  \"provider_org_id\": \"org-123\",\n  \"provider_specialty\": \"CARDIOLOGY\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	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://sdp.suki.ai/api/v1/auth/register")
  .header("Content-Type", "application/json")
  .body("{\n  \"partner_id\": \"your-partner-id\",\n  \"partner_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"provider_id\": \"provider-123\",\n  \"provider_name\": \"Dr. John Smith\",\n  \"provider_org_id\": \"org-123\",\n  \"provider_specialty\": \"CARDIOLOGY\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://sdp.suki.ai/api/v1/auth/register")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"partner_id\": \"your-partner-id\",\n  \"partner_token\": \"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"provider_id\": \"provider-123\",\n  \"provider_name\": \"Dr. John Smith\",\n  \"provider_org_id\": \"org-123\",\n  \"provider_specialty\": \"CARDIOLOGY\"\n}"

response = http.request(request)
puts response.read_body
This response has no body data.
{
  "code": 400,
  "message": "invalid request"
}
{
  "code": 401,
  "message": "invalid token"
}
{
  "code": 403,
  "message": "forbidden"
}
{
  "code": 404,
  "message": "not found"
}
{
  "code": 409,
  "message": "conflict"
}
{
  "code": 500,
  "message": "internal server error"
}
Use this endpoint to register a new healthcare in the Suki platform or to link an existing provider to a new -organization relationship. This is a one-time setup call for each provider within an organization.

Registration scenarios

This endpoint handles three different scenarios depending on the user’s status in the Suki system.
ScenarioConditionActions TakenResponse
New UserThe provider does not exist in Suki.• Creates a new organization
• Links your partner account to the organization
• Creates a new user with the provided details
201 Created
Existing User, New LinkThe provider exists but is not yet linked to your partner account.• Verifies the user and organization details
• Links your partner account to the existing organization
201 Created
Existing User, Already LinkedThe provider and organization are already linked to your partner account.• Detects the existing link409 Conflict

Code examples

import requests

url = "https://sdp.suki-stage.com/api/v1/auth/register"

payload = {
    "partner_id": "your-partner-id",
    "partner_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "provider_name": "Dr. John Smith",
    "provider_org_id": "org-123",
    "provider_id": "provider-123",  # Optional
    "provider_specialty": "CARDIOLOGY"  # Optional, defaults to FAMILY_MEDICINE
}

response = requests.post(url, json=payload)

if response.status_code == 201:
    print("Provider registered successfully")
elif response.status_code == 409:
    print("Provider already linked to this partner")
else:
    print(f"Registration failed: {response.status_code}")
    print(response.json())

Body

application/json

Provider registration details and partner credentials from onboarding.

partner_id
string
required

Unique identifier for the partner. This will be shared securely by Suki to the partner through a separate partner registration process.

Example:

"your-partner-id"

partner_token
string
required

JWT token issued by trusted authorization server. The token must include Provider Email.

Example:

"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."

provider_name
string
required

Name of the provider.

Example:

"Dr. John Smith"

provider_org_id
string
required

Health system or organization to which the provider belongs.

Example:

"org-123"

provider_id
string

Optional - Unique identifier for the provider. This is required for Bearer type partners only and will be ignored for other partner types. This must match a pre-defined expression.

Example:

"provider-123"

provider_specialty
string

Optional - Medical specialty of the provider. Defaults to FAMILY_MEDICINE if not provided.

Example:

"CARDIOLOGY"

Response

Last modified on June 16, 2026