Skip to main content
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, and it is not rate limited. Platform messages are returned in German.

Body Parameters

firstName
string
required
First name.
lastName
string
required
Last name.
email
string
required
Professional email address. Validated and normalized; must be unique.
password
string
required
Account password. Minimum 6 characters (no complexity rules enforced).
specialty
string
required
Medical specialty.
ehr_system_type
string
required
EHR system category.
ehr_system_name
string
required
Specific EHR system name.
title
string
Medical title (Dr., Prof.). Optional.
anrede
string
Salutation; stored only when Herr or Frau.
teamInviteToken
string
Team invitation token. When valid, the new user joins the team and inherits its subscription.

Response

Returns 201 Created with the newly created account under result.
success
boolean
true when the account is created.
result
object
The created account.

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": "Ein Fehler ist bei der Registrierung aufgetreten."
}

Next Steps

Login

Authenticate and obtain a JWT token.

User Profile

Retrieve the authenticated user’s profile.