User Registration
curl --request POST \
--url https://api.example.com/register \
--header 'Content-Type: application/json' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"password": "<string>",
"specialty": "<string>",
"ehr_system_type": "<string>",
"ehr_system_name": "<string>",
"title": "<string>",
"anrede": "<string>",
"teamInviteToken": "<string>"
}
'import requests
url = "https://api.example.com/register"
payload = {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"password": "<string>",
"specialty": "<string>",
"ehr_system_type": "<string>",
"ehr_system_name": "<string>",
"title": "<string>",
"anrede": "<string>",
"teamInviteToken": "<string>"
}
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({
firstName: '<string>',
lastName: '<string>',
email: '<string>',
password: '<string>',
specialty: '<string>',
ehr_system_type: '<string>',
ehr_system_name: '<string>',
title: '<string>',
anrede: '<string>',
teamInviteToken: '<string>'
})
};
fetch('https://api.example.com/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.example.com/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([
'firstName' => '<string>',
'lastName' => '<string>',
'email' => '<string>',
'password' => '<string>',
'specialty' => '<string>',
'ehr_system_type' => '<string>',
'ehr_system_name' => '<string>',
'title' => '<string>',
'anrede' => '<string>',
'teamInviteToken' => '<string>'
]),
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://api.example.com/register"
payload := strings.NewReader("{\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\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://api.example.com/register")
.header("Content-Type", "application/json")
.body("{\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/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 \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"result": {
"_id": "6578a1b2c3d4e5f601234567",
"title": "Dr.",
"firstName": "John",
"lastName": "Doe",
"email": "doctor@example.com",
"specialty": "Cardiology",
"ehr_system_type": "Epic",
"ehr_system_name": "Epic MyChart",
"isVerified": false
}
}
Authentication
User Registration
Create a new healthcare-professional account
POST
/
register
User Registration
curl --request POST \
--url https://api.example.com/register \
--header 'Content-Type: application/json' \
--data '
{
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"password": "<string>",
"specialty": "<string>",
"ehr_system_type": "<string>",
"ehr_system_name": "<string>",
"title": "<string>",
"anrede": "<string>",
"teamInviteToken": "<string>"
}
'import requests
url = "https://api.example.com/register"
payload = {
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"password": "<string>",
"specialty": "<string>",
"ehr_system_type": "<string>",
"ehr_system_name": "<string>",
"title": "<string>",
"anrede": "<string>",
"teamInviteToken": "<string>"
}
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({
firstName: '<string>',
lastName: '<string>',
email: '<string>',
password: '<string>',
specialty: '<string>',
ehr_system_type: '<string>',
ehr_system_name: '<string>',
title: '<string>',
anrede: '<string>',
teamInviteToken: '<string>'
})
};
fetch('https://api.example.com/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.example.com/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([
'firstName' => '<string>',
'lastName' => '<string>',
'email' => '<string>',
'password' => '<string>',
'specialty' => '<string>',
'ehr_system_type' => '<string>',
'ehr_system_name' => '<string>',
'title' => '<string>',
'anrede' => '<string>',
'teamInviteToken' => '<string>'
]),
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://api.example.com/register"
payload := strings.NewReader("{\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\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://api.example.com/register")
.header("Content-Type", "application/json")
.body("{\n \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/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 \"firstName\": \"<string>\",\n \"lastName\": \"<string>\",\n \"email\": \"<string>\",\n \"password\": \"<string>\",\n \"specialty\": \"<string>\",\n \"ehr_system_type\": \"<string>\",\n \"ehr_system_name\": \"<string>\",\n \"title\": \"<string>\",\n \"anrede\": \"<string>\",\n \"teamInviteToken\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"result": {
"_id": "6578a1b2c3d4e5f601234567",
"title": "Dr.",
"firstName": "John",
"lastName": "Doe",
"email": "doctor@example.com",
"specialty": "Cardiology",
"ehr_system_type": "Epic",
"ehr_system_name": "Epic MyChart",
"isVerified": false
}
}
Overview
Registers a new healthcare-professional account. New accounts are created unverified; a verification email is sent, and email verification is enforced at login. No authentication is required to call this endpoint. Platform messages are returned in German.Body Parameters
string
required
First name.
string
required
Last name.
string
required
Professional email address. Validated and normalized; must be unique.
string
required
Account password. Minimum 6 characters.
string
required
Medical specialty.
string
required
EHR system category.
string
required
Specific EHR system name.
string
Medical title (Dr., Prof.). Optional.
string
Salutation; stored only when
Herr or Frau.string
Team invitation token. When valid, the new user joins the team and inherits its subscription.
Response
Returns201 Created with the newly created account under result.
boolean
true when the account is created.object
Example Request
curl -X POST https://app.medisync.me/api/register \
-H "Content-Type: application/json" \
-d '{
"title": "Dr.",
"firstName": "John",
"lastName": "Doe",
"email": "doctor@example.com",
"password": "your_password",
"specialty": "Cardiology",
"ehr_system_type": "Epic",
"ehr_system_name": "Epic MyChart"
}'
Example Response
{
"success": true,
"result": {
"_id": "6578a1b2c3d4e5f601234567",
"title": "Dr.",
"firstName": "John",
"lastName": "Doe",
"email": "doctor@example.com",
"specialty": "Cardiology",
"ehr_system_type": "Epic",
"ehr_system_name": "Epic MyChart",
"isVerified": false
}
}
A new account cannot log in until its email address is verified. Registration itself still succeeds even if the verification email cannot be delivered.
Error Responses
{
"error": "Bitte geben Sie ein Passwort mit mindestens 6 Zeichen ein."
}
{
"error": "Diese E-Mail-Adresse ist bereits registriert."
}
{
"error": "Ungültiger Einladungstoken."
}
{
"error": "Zu viele Registrierungsversuche. Bitte versuchen Sie es später erneut."
}
{
"error": "Ein Fehler ist bei der Registrierung aufgetreten."
}
Rate Limiting
Registration is rate limited. Exceeding the limit returns429 with standard RateLimit-* headers and Retry-After.
Next Steps
Login
Authenticate and obtain a JWT token.
User Profile
Retrieve the authenticated user’s profile.
⌘I