MENU navbar-image

Introduction

REST API for integration partners to create and manage TapMedID medical profiles, records and bracelets.

The TapMedID Partner API lets your platform manage TapMedID medical profiles, their medical records, and the bracelets you assign to them — everything you can do from the TapMedID console, available programmatically from your own system.

Environments

Environment Base URL Use it for
Sandbox https://sandbox.tapmedid.com/api/v1 Building and testing your integration against disposable data.
Production https://api.tapmedid.com/api/v1 Live profiles and real bracelets.

Each environment has its own API keys. A sandbox key never touches production data, so you can test freely.

Authentication

Every request is authenticated with your API key sent as a Bearer token:

Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Sandbox keys are prefixed tmid_test_, production keys tmid_live_. Your TapMedID account manager issues and revokes keys for you. Keep them secret — anyone with a key can read and modify the profiles it manages.

A key only ever sees the profiles your organization manages; another partner's data is never reachable and returns 404. Profiles you create through the API are, by that act, consented for your management.

Rate limiting

Requests are limited to 120 per minute per key. Exceeding it returns 429 with a Retry-After header.

Errors

Errors return a consistent JSON envelope with the HTTP status set accordingly:

{
  "error": {
    "type": "validation",
    "message": "The given data was invalid.",
    "fields": { "first_name": ["The first name field is required."] }
  }
}

type is one of unauthenticated, forbidden, not_found, validation, rate_limited, or server_error. fields is present only for validation errors.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Your TapMedID account manager issues your API keys. Sandbox keys are prefixed tmidtest, production keys tmidlive. Send the key as a Bearer token in the Authorization header.

Getting started

Endpoints to verify your integration is wired up correctly.

Ping / verify your key

requires authentication

Confirms your API key works and echoes which partner and environment it is bound to. A good first call when setting up — if this returns 200, your key and base URL are correct.

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/ping" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/ping"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/ping';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/ping'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "ok": true,
    "environment": "sandbox",
    "partner": {
        "id": 12,
        "name": "Sunrise Senior Living"
    },
    "time": "2026-07-23T18:04:00+00:00"
}
 

Request      

GET api/v1/ping

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

Profiles

Medical profiles the partner manages. Every action is scoped to the partner's own profiles, so ids outside your tenant return 404. Creating a profile through the API consents it for your management.

List profiles

requires authentication

Returns your managed profiles, newest first, paginated.

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles?per_page=25" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles"
);

const params = {
    "per_page": "25",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'per_page' => '25',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles'
params = {
  'per_page': '25',
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Example response (200):


{
    "data": [
        {
            "id": 42,
            "full_name": "Rosa Diaz",
            "blood_type": "O+",
            "devices": []
        }
    ],
    "links": {
        "first": "...",
        "last": "...",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1
    }
}
 

Request      

GET api/v1/profiles

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

per_page   integer  optional    

Results per page (max 100). Defaults to 25. Example: 25

Create a profile

requires authentication

Creates a managed medical profile. Optionally assign a bracelet in the same call by including a device object with the serial and PIN of a bracelet allocated to you.

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"b\",
    \"last_name\": \"n\",
    \"middle_name\": \"g\",
    \"gender\": \"unspecified\",
    \"birth_date\": \"2026-07-23T17:26:31\",
    \"blood_type\": \"O+\",
    \"organ_donor\": false,
    \"living_will\": \"z\",
    \"religion\": \"m\",
    \"ssn\": \"i\",
    \"phone\": \"y\",
    \"alternate_email\": \"justina.gaylord@example.org\",
    \"address1\": \"i\",
    \"address2\": \"k\",
    \"city\": \"h\",
    \"state\": \"w\",
    \"zip\": \"aykcmyuwpwlvqwrs\",
    \"country\": \"it\",
    \"device\": {
        \"serial\": \"architecto\",
        \"pin\": \"architecto\",
        \"name\": \"n\"
    }
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "b",
    "last_name": "n",
    "middle_name": "g",
    "gender": "unspecified",
    "birth_date": "2026-07-23T17:26:31",
    "blood_type": "O+",
    "organ_donor": false,
    "living_will": "z",
    "religion": "m",
    "ssn": "i",
    "phone": "y",
    "alternate_email": "justina.gaylord@example.org",
    "address1": "i",
    "address2": "k",
    "city": "h",
    "state": "w",
    "zip": "aykcmyuwpwlvqwrs",
    "country": "it",
    "device": {
        "serial": "architecto",
        "pin": "architecto",
        "name": "n"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'b',
            'last_name' => 'n',
            'middle_name' => 'g',
            'gender' => 'unspecified',
            'birth_date' => '2026-07-23T17:26:31',
            'blood_type' => 'O+',
            'organ_donor' => false,
            'living_will' => 'z',
            'religion' => 'm',
            'ssn' => 'i',
            'phone' => 'y',
            'alternate_email' => 'justina.gaylord@example.org',
            'address1' => 'i',
            'address2' => 'k',
            'city' => 'h',
            'state' => 'w',
            'zip' => 'aykcmyuwpwlvqwrs',
            'country' => 'it',
            'device' => ['serial' => 'architecto', 'pin' => 'architecto', 'name' => 'n'],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles'
payload = {
    "first_name": "b",
    "last_name": "n",
    "middle_name": "g",
    "gender": "unspecified",
    "birth_date": "2026-07-23T17:26:31",
    "blood_type": "O+",
    "organ_donor": false,
    "living_will": "z",
    "religion": "m",
    "ssn": "i",
    "phone": "y",
    "alternate_email": "justina.gaylord@example.org",
    "address1": "i",
    "address2": "k",
    "city": "h",
    "state": "w",
    "zip": "aykcmyuwpwlvqwrs",
    "country": "it",
    "device": {
        "serial": "architecto",
        "pin": "architecto",
        "name": "n"
    }
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 42,
        "full_name": "Rosa Diaz",
        "blood_type": "O+",
        "devices": [
            {
                "id": 7,
                "serial": "TMID-0001",
                "activated": true,
                "emergency_url": "https://api.tapmedid.com/p/abc123"
            }
        ]
    }
}
 

Request      

POST api/v1/profiles

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

Body Parameters

first_name   string     

Must not be greater than 255 characters. Example: b

last_name   string     

Must not be greater than 255 characters. Example: n

middle_name   string  optional    

Must not be greater than 255 characters. Example: g

gender   string  optional    

Example: unspecified

Must be one of:
  • male
  • female
  • other
  • unspecified
birth_date   string  optional    

Must be a valid date. Example: 2026-07-23T17:26:31

blood_type   string  optional    

Example: O+

Must be one of:
  • A+
  • A-
  • B+
  • B-
  • AB+
  • AB-
  • O+
  • O-
organ_donor   boolean  optional    

Example: false

living_will   string  optional    

Must not be greater than 255 characters. Example: z

religion   string  optional    

Must not be greater than 255 characters. Example: m

ssn   string  optional    

Must not be greater than 64 characters. Example: i

phone   string  optional    

Must not be greater than 40 characters. Example: y

alternate_email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: justina.gaylord@example.org

address1   string  optional    

Must not be greater than 255 characters. Example: i

address2   string  optional    

Must not be greater than 255 characters. Example: k

city   string  optional    

Must not be greater than 120 characters. Example: h

state   string  optional    

Must not be greater than 120 characters. Example: w

zip   string  optional    

Must not be greater than 20 characters. Example: aykcmyuwpwlvqwrs

country   string  optional    

Must be 2 characters. Example: it

device   object  optional    
serial   string  optional    

This field is required when device is present. Example: architecto

pin   string  optional    

This field is required when device is present. Example: architecto

name   string  optional    

Must not be greater than 120 characters. Example: n

Get a profile

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": {
        "id": 42,
        "full_name": "Rosa Diaz",
        "blood_type": "O+",
        "devices": []
    }
}
 

Request      

GET api/v1/profiles/{id}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the profile. Example: architecto

profile   integer     

The profile id. Example: 42

Update a profile

requires authentication

Send any subset of the profile fields — all are optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"b\",
    \"last_name\": \"n\",
    \"middle_name\": \"g\",
    \"gender\": \"unspecified\",
    \"birth_date\": \"2026-07-23T17:26:31\",
    \"blood_type\": \"B+\",
    \"organ_donor\": false,
    \"living_will\": \"z\",
    \"religion\": \"m\",
    \"ssn\": \"i\",
    \"phone\": \"y\",
    \"alternate_email\": \"justina.gaylord@example.org\",
    \"address1\": \"i\",
    \"address2\": \"k\",
    \"city\": \"h\",
    \"state\": \"w\",
    \"zip\": \"aykcmyuwpwlvqwrs\",
    \"country\": \"it\"
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "b",
    "last_name": "n",
    "middle_name": "g",
    "gender": "unspecified",
    "birth_date": "2026-07-23T17:26:31",
    "blood_type": "B+",
    "organ_donor": false,
    "living_will": "z",
    "religion": "m",
    "ssn": "i",
    "phone": "y",
    "alternate_email": "justina.gaylord@example.org",
    "address1": "i",
    "address2": "k",
    "city": "h",
    "state": "w",
    "zip": "aykcmyuwpwlvqwrs",
    "country": "it"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'b',
            'last_name' => 'n',
            'middle_name' => 'g',
            'gender' => 'unspecified',
            'birth_date' => '2026-07-23T17:26:31',
            'blood_type' => 'B+',
            'organ_donor' => false,
            'living_will' => 'z',
            'religion' => 'm',
            'ssn' => 'i',
            'phone' => 'y',
            'alternate_email' => 'justina.gaylord@example.org',
            'address1' => 'i',
            'address2' => 'k',
            'city' => 'h',
            'state' => 'w',
            'zip' => 'aykcmyuwpwlvqwrs',
            'country' => 'it',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto'
payload = {
    "first_name": "b",
    "last_name": "n",
    "middle_name": "g",
    "gender": "unspecified",
    "birth_date": "2026-07-23T17:26:31",
    "blood_type": "B+",
    "organ_donor": false,
    "living_will": "z",
    "religion": "m",
    "ssn": "i",
    "phone": "y",
    "alternate_email": "justina.gaylord@example.org",
    "address1": "i",
    "address2": "k",
    "city": "h",
    "state": "w",
    "zip": "aykcmyuwpwlvqwrs",
    "country": "it"
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "data": {
        "id": 42,
        "full_name": "Rosa Diaz",
        "blood_type": "AB-",
        "address": {
            "city": "Madrid"
        }
    }
}
 

Request      

PUT api/v1/profiles/{id}

PATCH api/v1/profiles/{id}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the profile. Example: architecto

profile   integer     

The profile id. Example: 42

Body Parameters

first_name   string  optional    

Must not be greater than 255 characters. Example: b

last_name   string  optional    

Must not be greater than 255 characters. Example: n

middle_name   string  optional    

Must not be greater than 255 characters. Example: g

gender   string  optional    

Example: unspecified

Must be one of:
  • male
  • female
  • other
  • unspecified
birth_date   string  optional    

Must be a valid date. Example: 2026-07-23T17:26:31

blood_type   string  optional    

Example: B+

Must be one of:
  • A+
  • A-
  • B+
  • B-
  • AB+
  • AB-
  • O+
  • O-
organ_donor   boolean  optional    

Example: false

living_will   string  optional    

Must not be greater than 255 characters. Example: z

religion   string  optional    

Must not be greater than 255 characters. Example: m

ssn   string  optional    

Must not be greater than 64 characters. Example: i

phone   string  optional    

Must not be greater than 40 characters. Example: y

alternate_email   string  optional    

Must be a valid email address. Must not be greater than 255 characters. Example: justina.gaylord@example.org

address1   string  optional    

Must not be greater than 255 characters. Example: i

address2   string  optional    

Must not be greater than 255 characters. Example: k

city   string  optional    

Must not be greater than 120 characters. Example: h

state   string  optional    

Must not be greater than 120 characters. Example: w

zip   string  optional    

Must not be greater than 20 characters. Example: aykcmyuwpwlvqwrs

country   string  optional    

Must be 2 characters. Example: it

Delete a profile

requires authentication

Soft-deletes the profile and returns any bracelets linked to it back to your stock so they can be re-issued. Staff can recover a deleted profile if needed.

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (204):

Empty response
 

Request      

DELETE api/v1/profiles/{id}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

id   string     

The ID of the profile. Example: architecto

profile   integer     

The profile id. Example: 42

Bracelets

Bracelets linked to your profiles: list, assign (activate a bracelet allocated to you by serial + PIN), update (enable/disable, lost mode, name) and unassign (return to your stock). You can only activate bracelets that were allocated to your organization.

List a profile's bracelets

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/42/devices" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/42/devices"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/42/devices';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/42/devices'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "data": [
        {
            "id": 7,
            "serial": "TMID-0001",
            "activated": true,
            "enabled": true,
            "is_lost": false,
            "emergency_url": "https://api.tapmedid.com/p/abc123"
        }
    ]
}
 

Request      

GET api/v1/profiles/{profile}/devices

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   integer     

The profile id. Example: 42

Assign a bracelet

requires authentication

Activates a bracelet (matched by serial + PIN) and links it to the profile. The bracelet must be one allocated to your organization and not already linked to another profile.

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/42/devices" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"serial\": \"TMID-0001\",
    \"pin\": \"4821\",
    \"name\": \"Room 12\"
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/42/devices"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "serial": "TMID-0001",
    "pin": "4821",
    "name": "Room 12"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/42/devices';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'serial' => 'TMID-0001',
            'pin' => '4821',
            'name' => 'Room 12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/42/devices'
payload = {
    "serial": "TMID-0001",
    "pin": "4821",
    "name": "Room 12"
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 7,
        "serial": "TMID-0001",
        "activated": true,
        "enabled": true,
        "emergency_url": "https://api.tapmedid.com/p/abc123"
    }
}
 

Request      

POST api/v1/profiles/{profile}/devices

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   integer     

The profile id. Example: 42

Body Parameters

serial   string     

The bracelet serial (printed on the device). Example: TMID-0001

pin   string     

The bracelet PIN. Example: 4821

name   string  optional    

An optional label, e.g. the room or wearer. Example: Room 12

Update a bracelet

requires authentication

Example request:
curl --request PATCH \
    "https://api.tapmedid.com/api/v1/devices/7" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"enabled\": true,
    \"view_medical_profile\": true,
    \"name\": \"Room 12\",
    \"is_lost\": false,
    \"lost_message\": \"Please call the front desk.\"
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/devices/7"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "enabled": true,
    "view_medical_profile": true,
    "name": "Room 12",
    "is_lost": false,
    "lost_message": "Please call the front desk."
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/devices/7';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'enabled' => true,
            'view_medical_profile' => true,
            'name' => 'Room 12',
            'is_lost' => false,
            'lost_message' => 'Please call the front desk.',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/devices/7'
payload = {
    "enabled": true,
    "view_medical_profile": true,
    "name": "Room 12",
    "is_lost": false,
    "lost_message": "Please call the front desk."
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()

Example response (200):


{
    "data": {
        "id": 7,
        "serial": "TMID-0001",
        "enabled": true,
        "is_lost": false
    }
}
 

Request      

PATCH api/v1/devices/{device}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

device   integer     

The bracelet id. Example: 7

Body Parameters

enabled   boolean  optional    

Turn the bracelet on/off. Example: true

view_medical_profile   boolean  optional    

Whether scanning shows the full medical profile. Example: true

name   string  optional    

A label for the bracelet. Example: Room 12

is_lost   boolean  optional    

Put the bracelet into lost mode. Example: false

lost_message   string  optional    

Message shown when the bracelet is scanned in lost mode. Example: Please call the front desk.

Unassign a bracelet

requires authentication

Deactivates the bracelet and returns it to your stock so it can be re-issued to another profile.

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/devices/7" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/devices/7"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/devices/7';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/devices/7'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Example response (204):

Empty response
 

Request      

DELETE api/v1/devices/{device}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

device   integer     

The bracelet id. Example: 7

Emergency view

The at-a-glance emergency view of a profile — exactly what a first responder sees on the public /p/{hash} page: only NON-private records, so the partner can surface the same critical info inside their own app without exposing anything the patient marked private.

Get a profile's emergency view

requires authentication

Returns the profile header plus its non-private allergies, conditions, medications, vaccinations and emergency contacts — safe to display to first responders.

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/42/emergency" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/42/emergency"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/42/emergency';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/42/emergency'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Example response (200):


{
    "profile": {
        "id": 42,
        "full_name": "Rosa Diaz",
        "blood_type": "O+",
        "organ_donor": true
    },
    "allergies": [
        {
            "name": "Penicillin",
            "reaction": "Anaphylaxis"
        }
    ],
    "conditions": [],
    "medications": [],
    "vaccinations": [],
    "emergency_contacts": [
        {
            "name": "Dr. House",
            "mobile": "+34600111222",
            "is_doctor": true
        }
    ]
}
 

Request      

GET api/v1/profiles/{profile}/emergency

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   integer     

The profile id. Example: 42

Allergies

A profile's allergies and the reactions they cause. Setting is_private to true keeps the allergy out of the public emergency view while still storing it on the record.

GET api/v1/profiles/{profile}/allergies

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/allergies" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/allergies

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add an allergy

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Penicillin\",
    \"reaction\": \"Hives and swelling\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Penicillin",
    "reaction": "Hives and swelling",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Penicillin',
            'reaction' => 'Hives and swelling',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies'
payload = {
    "name": "Penicillin",
    "reaction": "Hives and swelling",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "name": "Penicillin",
        "reaction": "Hives and swelling",
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/allergies

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

name   string     

The allergen name. Example: Penicillin

reaction   string  optional    

The reaction it triggers. Example: Hives and swelling

is_private   boolean  optional    

Hide this allergy from the public emergency view. Example: false

GET api/v1/profiles/{profile}/allergies/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/allergies/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update an allergy

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Penicillin\",
    \"reaction\": \"Hives and swelling\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Penicillin",
    "reaction": "Hives and swelling",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Penicillin',
            'reaction' => 'Hives and swelling',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto'
payload = {
    "name": "Penicillin",
    "reaction": "Hives and swelling",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/allergies/{record}

PATCH api/v1/profiles/{profile}/allergies/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

name   string  optional    

The allergen name. Example: Penicillin

reaction   string  optional    

The reaction it triggers. Example: Hives and swelling

is_private   boolean  optional    

Hide this allergy from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/allergies/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/allergies/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/allergies/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Conditions

Ongoing or past medical conditions and diagnoses for a profile. Setting is_private to true keeps the condition out of the public emergency view.

GET api/v1/profiles/{profile}/conditions

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/conditions" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/conditions

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add a condition

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Type 2 diabetes\",
    \"notes\": \"Diagnosed 2019, diet controlled\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Type 2 diabetes",
    "notes": "Diagnosed 2019, diet controlled",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Type 2 diabetes',
            'notes' => 'Diagnosed 2019, diet controlled',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions'
payload = {
    "name": "Type 2 diabetes",
    "notes": "Diagnosed 2019, diet controlled",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "name": "Type 2 diabetes",
        "notes": "Diagnosed 2019, diet controlled",
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/conditions

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

name   string     

The condition name. Example: Type 2 diabetes

notes   string  optional    

Additional notes about the condition. Example: Diagnosed 2019, diet controlled

is_private   boolean  optional    

Hide this condition from the public emergency view. Example: false

GET api/v1/profiles/{profile}/conditions/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/conditions/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update a condition

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Type 2 diabetes\",
    \"notes\": \"Diagnosed 2019, diet controlled\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Type 2 diabetes",
    "notes": "Diagnosed 2019, diet controlled",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Type 2 diabetes',
            'notes' => 'Diagnosed 2019, diet controlled',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto'
payload = {
    "name": "Type 2 diabetes",
    "notes": "Diagnosed 2019, diet controlled",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/conditions/{record}

PATCH api/v1/profiles/{profile}/conditions/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

name   string  optional    

The condition name. Example: Type 2 diabetes

notes   string  optional    

Additional notes about the condition. Example: Diagnosed 2019, diet controlled

is_private   boolean  optional    

Hide this condition from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/conditions/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/conditions/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/conditions/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Medications

Medications a profile takes, with dosage and whether they are taken as needed. Setting is_private to true keeps the medication out of the public emergency view.

GET api/v1/profiles/{profile}/medications

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/medications" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/medications

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add a medication

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Enalapril\",
    \"dosage\": \"10mg\",
    \"year\": 2021,
    \"as_needed\": false,
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Enalapril",
    "dosage": "10mg",
    "year": 2021,
    "as_needed": false,
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Enalapril',
            'dosage' => '10mg',
            'year' => 2021,
            'as_needed' => false,
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications'
payload = {
    "name": "Enalapril",
    "dosage": "10mg",
    "year": 2021,
    "as_needed": false,
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "name": "Enalapril",
        "dosage": "10mg",
        "as_needed": false,
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/medications

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

name   string     

The medication name. Example: Enalapril

dosage   string  optional    

The dosage taken. Example: 10mg

year   integer  optional    

The year the medication was started. Example: 2021

as_needed   boolean  optional    

Whether the medication is taken only as needed. Example: false

is_private   boolean  optional    

Hide this medication from the public emergency view. Example: false

GET api/v1/profiles/{profile}/medications/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/medications/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update a medication

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Enalapril\",
    \"dosage\": \"10mg\",
    \"year\": 2021,
    \"as_needed\": false,
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Enalapril",
    "dosage": "10mg",
    "year": 2021,
    "as_needed": false,
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Enalapril',
            'dosage' => '10mg',
            'year' => 2021,
            'as_needed' => false,
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto'
payload = {
    "name": "Enalapril",
    "dosage": "10mg",
    "year": 2021,
    "as_needed": false,
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/medications/{record}

PATCH api/v1/profiles/{profile}/medications/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

name   string  optional    

The medication name. Example: Enalapril

dosage   string  optional    

The dosage taken. Example: 10mg

year   integer  optional    

The year the medication was started. Example: 2021

as_needed   boolean  optional    

Whether the medication is taken only as needed. Example: false

is_private   boolean  optional    

Hide this medication from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/medications/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medications/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/medications/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Vaccinations

Vaccinations a profile has received, with the year and optional notes. Setting is_private to true keeps the vaccination out of the public emergency view.

GET api/v1/profiles/{profile}/vaccinations

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/vaccinations

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add a vaccination

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Tetanus\",
    \"year\": 2022,
    \"notes\": \"Booster dose\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Tetanus",
    "year": 2022,
    "notes": "Booster dose",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Tetanus',
            'year' => 2022,
            'notes' => 'Booster dose',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations'
payload = {
    "name": "Tetanus",
    "year": 2022,
    "notes": "Booster dose",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "name": "Tetanus",
        "year": 2022,
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/vaccinations

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

name   string     

The vaccine name. Example: Tetanus

year   integer  optional    

The year it was administered. Example: 2022

notes   string  optional    

Additional notes about the vaccination. Example: Booster dose

is_private   boolean  optional    

Hide this vaccination from the public emergency view. Example: false

GET api/v1/profiles/{profile}/vaccinations/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/vaccinations/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update a vaccination

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Tetanus\",
    \"year\": 2022,
    \"notes\": \"Booster dose\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Tetanus",
    "year": 2022,
    "notes": "Booster dose",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Tetanus',
            'year' => 2022,
            'notes' => 'Booster dose',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto'
payload = {
    "name": "Tetanus",
    "year": 2022,
    "notes": "Booster dose",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/vaccinations/{record}

PATCH api/v1/profiles/{profile}/vaccinations/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

name   string  optional    

The vaccine name. Example: Tetanus

year   integer  optional    

The year it was administered. Example: 2022

notes   string  optional    

Additional notes about the vaccination. Example: Booster dose

is_private   boolean  optional    

Hide this vaccination from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/vaccinations/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/vaccinations/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/vaccinations/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Emergency contacts

People to reach in an emergency — relatives, doctors, or attorneys — with phone, mobile and email details and whether they should be notified. Setting is_private to true keeps the contact out of the public emergency view.

GET api/v1/profiles/{profile}/emergency-contacts

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/emergency-contacts

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add an emergency contact

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Dr. House\",
    \"relation\": \"Primary physician\",
    \"is_doctor\": true,
    \"speciality\": \"Cardiology\",
    \"phone\": \"+34910111222\",
    \"phone_ext\": \"204\",
    \"mobile\": \"+34600111222\",
    \"email\": \"doctor@example.com\",
    \"is_attorney\": false,
    \"notify\": true,
    \"lang\": \"es\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Dr. House",
    "relation": "Primary physician",
    "is_doctor": true,
    "speciality": "Cardiology",
    "phone": "+34910111222",
    "phone_ext": "204",
    "mobile": "+34600111222",
    "email": "doctor@example.com",
    "is_attorney": false,
    "notify": true,
    "lang": "es",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Dr. House',
            'relation' => 'Primary physician',
            'is_doctor' => true,
            'speciality' => 'Cardiology',
            'phone' => '+34910111222',
            'phone_ext' => '204',
            'mobile' => '+34600111222',
            'email' => 'doctor@example.com',
            'is_attorney' => false,
            'notify' => true,
            'lang' => 'es',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts'
payload = {
    "name": "Dr. House",
    "relation": "Primary physician",
    "is_doctor": true,
    "speciality": "Cardiology",
    "phone": "+34910111222",
    "phone_ext": "204",
    "mobile": "+34600111222",
    "email": "doctor@example.com",
    "is_attorney": false,
    "notify": true,
    "lang": "es",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "name": "Dr. House",
        "is_doctor": true,
        "mobile": "+34600111222",
        "email": "doctor@example.com",
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/emergency-contacts

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

name   string     

The contact's full name. Example: Dr. House

relation   string  optional    

Relationship to the profile owner. Example: Primary physician

is_doctor   boolean  optional    

Whether this contact is a doctor. Example: true

speciality   string  optional    

The doctor's speciality, if applicable. Example: Cardiology

phone   string  optional    

Landline phone number. Example: +34910111222

phone_ext   string  optional    

Landline extension. Example: 204

mobile   string  optional    

Mobile phone number. Example: +34600111222

email   string  optional    

Contact email address. Example: doctor@example.com

is_attorney   boolean  optional    

Whether this contact is a legal attorney. Example: false

notify   boolean  optional    

Whether this contact should be notified on emergency access. Example: true

lang   string  optional    

Preferred language code for notifications. Example: es

is_private   boolean  optional    

Hide this contact from the public emergency view. Example: false

GET api/v1/profiles/{profile}/emergency-contacts/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/emergency-contacts/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update an emergency contact

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"Dr. House\",
    \"relation\": \"Primary physician\",
    \"is_doctor\": true,
    \"speciality\": \"Cardiology\",
    \"phone\": \"+34910111222\",
    \"phone_ext\": \"204\",
    \"mobile\": \"+34600111222\",
    \"email\": \"doctor@example.com\",
    \"is_attorney\": false,
    \"notify\": true,
    \"lang\": \"es\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "Dr. House",
    "relation": "Primary physician",
    "is_doctor": true,
    "speciality": "Cardiology",
    "phone": "+34910111222",
    "phone_ext": "204",
    "mobile": "+34600111222",
    "email": "doctor@example.com",
    "is_attorney": false,
    "notify": true,
    "lang": "es",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'name' => 'Dr. House',
            'relation' => 'Primary physician',
            'is_doctor' => true,
            'speciality' => 'Cardiology',
            'phone' => '+34910111222',
            'phone_ext' => '204',
            'mobile' => '+34600111222',
            'email' => 'doctor@example.com',
            'is_attorney' => false,
            'notify' => true,
            'lang' => 'es',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto'
payload = {
    "name": "Dr. House",
    "relation": "Primary physician",
    "is_doctor": true,
    "speciality": "Cardiology",
    "phone": "+34910111222",
    "phone_ext": "204",
    "mobile": "+34600111222",
    "email": "doctor@example.com",
    "is_attorney": false,
    "notify": true,
    "lang": "es",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/emergency-contacts/{record}

PATCH api/v1/profiles/{profile}/emergency-contacts/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

name   string  optional    

The contact's full name. Example: Dr. House

relation   string  optional    

Relationship to the profile owner. Example: Primary physician

is_doctor   boolean  optional    

Whether this contact is a doctor. Example: true

speciality   string  optional    

The doctor's speciality, if applicable. Example: Cardiology

phone   string  optional    

Landline phone number. Example: +34910111222

phone_ext   string  optional    

Landline extension. Example: 204

mobile   string  optional    

Mobile phone number. Example: +34600111222

email   string  optional    

Contact email address. Example: doctor@example.com

is_attorney   boolean  optional    

Whether this contact is a legal attorney. Example: false

notify   boolean  optional    

Whether this contact should be notified on emergency access. Example: true

lang   string  optional    

Preferred language code for notifications. Example: es

is_private   boolean  optional    

Hide this contact from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/emergency-contacts/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/emergency-contacts/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/emergency-contacts/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Insurances

Health insurance policies held by a profile, including company, policy numbers and validity dates. Setting is_private to true keeps the policy out of the public emergency view.

GET api/v1/profiles/{profile}/insurances

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/insurances" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/insurances

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Add an insurance policy

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company\": \"Aetna\",
    \"policy_name\": \"PPO Gold\",
    \"policy_number\": \"A-12345\",
    \"medicare\": \"1EG4-TE5-MK73\",
    \"medicaid\": \"MD-998877\",
    \"hmo\": \"HMO-4521\",
    \"agent_name\": \"Sarah Connor\",
    \"valid_from\": \"2025-01-01\",
    \"expires_at\": \"2025-12-31\",
    \"description\": \"Covers dental and vision\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company": "Aetna",
    "policy_name": "PPO Gold",
    "policy_number": "A-12345",
    "medicare": "1EG4-TE5-MK73",
    "medicaid": "MD-998877",
    "hmo": "HMO-4521",
    "agent_name": "Sarah Connor",
    "valid_from": "2025-01-01",
    "expires_at": "2025-12-31",
    "description": "Covers dental and vision",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'company' => 'Aetna',
            'policy_name' => 'PPO Gold',
            'policy_number' => 'A-12345',
            'medicare' => '1EG4-TE5-MK73',
            'medicaid' => 'MD-998877',
            'hmo' => 'HMO-4521',
            'agent_name' => 'Sarah Connor',
            'valid_from' => '2025-01-01',
            'expires_at' => '2025-12-31',
            'description' => 'Covers dental and vision',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances'
payload = {
    "company": "Aetna",
    "policy_name": "PPO Gold",
    "policy_number": "A-12345",
    "medicare": "1EG4-TE5-MK73",
    "medicaid": "MD-998877",
    "hmo": "HMO-4521",
    "agent_name": "Sarah Connor",
    "valid_from": "2025-01-01",
    "expires_at": "2025-12-31",
    "description": "Covers dental and vision",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "company": "Aetna",
        "policy_number": "A-12345",
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/insurances

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

company   string     

The insurance company. Example: Aetna

policy_name   string  optional    

The policy name or plan. Example: PPO Gold

policy_number   string  optional    

The policy number. Example: A-12345

medicare   string  optional    

Medicare identifier, if any. Example: 1EG4-TE5-MK73

medicaid   string  optional    

Medicaid identifier, if any. Example: MD-998877

hmo   string  optional    

HMO identifier, if any. Example: HMO-4521

agent_name   string  optional    

The insurance agent's name. Example: Sarah Connor

valid_from   string  optional    

The date the policy takes effect (YYYY-MM-DD). Example: 2025-01-01

expires_at   string  optional    

The date the policy expires (YYYY-MM-DD). Example: 2025-12-31

description   string  optional    

Additional notes about the policy. Example: Covers dental and vision

is_private   boolean  optional    

Hide this policy from the public emergency view. Example: false

GET api/v1/profiles/{profile}/insurances/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/insurances/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update an insurance policy

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"company\": \"Aetna\",
    \"policy_name\": \"PPO Gold\",
    \"policy_number\": \"A-12345\",
    \"medicare\": \"1EG4-TE5-MK73\",
    \"medicaid\": \"MD-998877\",
    \"hmo\": \"HMO-4521\",
    \"agent_name\": \"Sarah Connor\",
    \"valid_from\": \"2025-01-01\",
    \"expires_at\": \"2025-12-31\",
    \"description\": \"Covers dental and vision\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "company": "Aetna",
    "policy_name": "PPO Gold",
    "policy_number": "A-12345",
    "medicare": "1EG4-TE5-MK73",
    "medicaid": "MD-998877",
    "hmo": "HMO-4521",
    "agent_name": "Sarah Connor",
    "valid_from": "2025-01-01",
    "expires_at": "2025-12-31",
    "description": "Covers dental and vision",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'company' => 'Aetna',
            'policy_name' => 'PPO Gold',
            'policy_number' => 'A-12345',
            'medicare' => '1EG4-TE5-MK73',
            'medicaid' => 'MD-998877',
            'hmo' => 'HMO-4521',
            'agent_name' => 'Sarah Connor',
            'valid_from' => '2025-01-01',
            'expires_at' => '2025-12-31',
            'description' => 'Covers dental and vision',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto'
payload = {
    "company": "Aetna",
    "policy_name": "PPO Gold",
    "policy_number": "A-12345",
    "medicare": "1EG4-TE5-MK73",
    "medicaid": "MD-998877",
    "hmo": "HMO-4521",
    "agent_name": "Sarah Connor",
    "valid_from": "2025-01-01",
    "expires_at": "2025-12-31",
    "description": "Covers dental and vision",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/insurances/{record}

PATCH api/v1/profiles/{profile}/insurances/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

company   string  optional    

The insurance company. Example: Aetna

policy_name   string  optional    

The policy name or plan. Example: PPO Gold

policy_number   string  optional    

The policy number. Example: A-12345

medicare   string  optional    

Medicare identifier, if any. Example: 1EG4-TE5-MK73

medicaid   string  optional    

Medicaid identifier, if any. Example: MD-998877

hmo   string  optional    

HMO identifier, if any. Example: HMO-4521

agent_name   string  optional    

The insurance agent's name. Example: Sarah Connor

valid_from   string  optional    

The date the policy takes effect (YYYY-MM-DD). Example: 2025-01-01

expires_at   string  optional    

The date the policy expires (YYYY-MM-DD). Example: 2025-12-31

description   string  optional    

Additional notes about the policy. Example: Covers dental and vision

is_private   boolean  optional    

Hide this policy from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/insurances/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/insurances/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/insurances/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Medical history

Medical history entries. One table backs several record kinds via type: general | test | hospitalization | implanted_device | additional_info. GET supports ?type= to filter (e.g. only implanted devices). Setting is_private to true keeps the entry out of the public emergency view.

List medical history entries

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history?type=implanted_device" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history"
);

const params = {
    "type": "implanted_device",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type' => 'implanted_device',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history'
params = {
  'type': 'implanted_device',
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Request      

GET api/v1/profiles/{profile}/medical-history

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Query Parameters

type   string  optional    

Filter by kind: general, test, hospitalization, implanted_device, additional_info. Example: implanted_device

Add a medical history entry

requires authentication

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"hospitalization\",
    \"name\": \"Appendectomy\",
    \"description\": \"Laparoscopic appendix removal\",
    \"test_date\": \"2024-03-15\",
    \"hospital_from\": \"2024-03-14\",
    \"hospital_to\": \"2024-03-16\",
    \"hospital_reason\": \"Acute appendicitis\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "hospitalization",
    "name": "Appendectomy",
    "description": "Laparoscopic appendix removal",
    "test_date": "2024-03-15",
    "hospital_from": "2024-03-14",
    "hospital_to": "2024-03-16",
    "hospital_reason": "Acute appendicitis",
    "is_private": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'hospitalization',
            'name' => 'Appendectomy',
            'description' => 'Laparoscopic appendix removal',
            'test_date' => '2024-03-15',
            'hospital_from' => '2024-03-14',
            'hospital_to' => '2024-03-16',
            'hospital_reason' => 'Acute appendicitis',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history'
payload = {
    "type": "hospitalization",
    "name": "Appendectomy",
    "description": "Laparoscopic appendix removal",
    "test_date": "2024-03-15",
    "hospital_from": "2024-03-14",
    "hospital_to": "2024-03-16",
    "hospital_reason": "Acute appendicitis",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "type": "hospitalization",
        "name": "Appendectomy",
        "is_private": false
    }
}
 

Request      

POST api/v1/profiles/{profile}/medical-history

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

type   string     

The kind of entry: general, test, hospitalization, implanted_device, additional_info. Example: hospitalization

name   string  optional    

A short label for the entry. Example: Appendectomy

description   string  optional    

A fuller description of the entry. Example: Laparoscopic appendix removal

test_date   string  optional    

For test entries, the date of the test (YYYY-MM-DD). Example: 2024-03-15

hospital_from   string  optional    

For hospitalizations, the admission date (YYYY-MM-DD). Example: 2024-03-14

hospital_to   string  optional    

For hospitalizations, the discharge date (YYYY-MM-DD). Example: 2024-03-16

hospital_reason   string  optional    

For hospitalizations, the reason for admission. Example: Acute appendicitis

is_private   boolean  optional    

Hide this entry from the public emergency view. Example: false

GET api/v1/profiles/{profile}/medical-history/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/medical-history/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update a medical history entry

requires authentication

Send any subset of the create fields — all optional here.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"hospitalization\",
    \"name\": \"Appendectomy\",
    \"description\": \"Laparoscopic appendix removal\",
    \"test_date\": \"2024-03-15\",
    \"hospital_from\": \"2024-03-14\",
    \"hospital_to\": \"2024-03-16\",
    \"hospital_reason\": \"Acute appendicitis\",
    \"is_private\": false
}"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "type": "hospitalization",
    "name": "Appendectomy",
    "description": "Laparoscopic appendix removal",
    "test_date": "2024-03-15",
    "hospital_from": "2024-03-14",
    "hospital_to": "2024-03-16",
    "hospital_reason": "Acute appendicitis",
    "is_private": false
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'hospitalization',
            'name' => 'Appendectomy',
            'description' => 'Laparoscopic appendix removal',
            'test_date' => '2024-03-15',
            'hospital_from' => '2024-03-14',
            'hospital_to' => '2024-03-16',
            'hospital_reason' => 'Acute appendicitis',
            'is_private' => false,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto'
payload = {
    "type": "hospitalization",
    "name": "Appendectomy",
    "description": "Laparoscopic appendix removal",
    "test_date": "2024-03-15",
    "hospital_from": "2024-03-14",
    "hospital_to": "2024-03-16",
    "hospital_reason": "Acute appendicitis",
    "is_private": false
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()

Request      

PUT api/v1/profiles/{profile}/medical-history/{record}

PATCH api/v1/profiles/{profile}/medical-history/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

type   string  optional    

The kind of entry: general, test, hospitalization, implanted_device, additional_info. Example: hospitalization

name   string  optional    

A short label for the entry. Example: Appendectomy

description   string  optional    

A fuller description of the entry. Example: Laparoscopic appendix removal

test_date   string  optional    

For test entries, the date of the test (YYYY-MM-DD). Example: 2024-03-15

hospital_from   string  optional    

For hospitalizations, the admission date (YYYY-MM-DD). Example: 2024-03-14

hospital_to   string  optional    

For hospitalizations, the discharge date (YYYY-MM-DD). Example: 2024-03-16

hospital_reason   string  optional    

For hospitalizations, the reason for admission. Example: Acute appendicitis

is_private   boolean  optional    

Hide this entry from the public emergency view. Example: false

DELETE api/v1/profiles/{profile}/medical-history/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/medical-history/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/medical-history/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Documents

Vault documents. Files are uploaded as multipart (file) and stored on the PRIVATE disk; they are never publicly served — the API exposes a metadata record plus a signed download link generated on read. Documents default to private, and setting is_private to true keeps a document out of the public emergency view.

GET api/v1/profiles/{profile}/documents

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/documents" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/documents

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Upload a document

requires authentication

Send as multipart/form-data. The file is stored on the private disk and a signed download URL is returned in the response.

Example request:
curl --request POST \
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "title=Insurance card"\
    --form "category=Insurance"\
    --form "is_private=1"\
    --form "file=@/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplfb6jelehn4sfykW81q" 
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('title', 'Insurance card');
body.append('category', 'Insurance');
body.append('is_private', '1');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'title',
                'contents' => 'Insurance card'
            ],
            [
                'name' => 'category',
                'contents' => 'Insurance'
            ],
            [
                'name' => 'is_private',
                'contents' => '1'
            ],
            [
                'name' => 'file',
                'contents' => fopen('/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplfb6jelehn4sfykW81q', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents'
files = {
  'title': (None, 'Insurance card'),
  'category': (None, 'Insurance'),
  'is_private': (None, '1'),
  'file': open('/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplfb6jelehn4sfykW81q', 'rb')}
payload = {
    "title": "Insurance card",
    "category": "Insurance",
    "is_private": true
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, files=files)
response.json()

Example response (201):


{
    "data": {
        "id": 1,
        "title": "Insurance card",
        "category": "Insurance",
        "is_private": true,
        "download_url": "https://example.com/files/documents/1"
    }
}
 

Request      

POST api/v1/profiles/{profile}/documents

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

Body Parameters

title   string     

The document title. Example: Insurance card

category   string  optional    

A grouping label. Example: Insurance

is_private   boolean  optional    

Hide this document from the public emergency view. Example: true

file   file     

The file to upload (max 20 MB). Example: /private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplfb6jelehn4sfykW81q

GET api/v1/profiles/{profile}/documents/{record}

requires authentication

Example request:
curl --request GET \
    --get "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Request      

GET api/v1/profiles/{profile}/documents/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Update a document

requires authentication

Send as multipart/form-data. Send any subset of the fields — all optional here. Include file only to replace the stored file.

Example request:
curl --request PUT \
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "title=Insurance card"\
    --form "category=Insurance"\
    --form "is_private=1"\
    --form "file=@/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplaht8s2duk9ubEcuYfb" 
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('title', 'Insurance card');
body.append('category', 'Insurance');
body.append('is_private', '1');
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "PUT",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto';
$response = $client->put(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'title',
                'contents' => 'Insurance card'
            ],
            [
                'name' => 'category',
                'contents' => 'Insurance'
            ],
            [
                'name' => 'is_private',
                'contents' => '1'
            ],
            [
                'name' => 'file',
                'contents' => fopen('/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplaht8s2duk9ubEcuYfb', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto'
files = {
  'title': (None, 'Insurance card'),
  'category': (None, 'Insurance'),
  'is_private': (None, '1'),
  'file': open('/private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplaht8s2duk9ubEcuYfb', 'rb')}
payload = {
    "title": "Insurance card",
    "category": "Insurance",
    "is_private": true
}
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'multipart/form-data',
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, files=files)
response.json()

Request      

PUT api/v1/profiles/{profile}/documents/{record}

PATCH api/v1/profiles/{profile}/documents/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: multipart/form-data

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto

Body Parameters

title   string  optional    

The document title. Example: Insurance card

category   string  optional    

A grouping label. Example: Insurance

is_private   boolean  optional    

Hide this document from the public emergency view. Example: true

file   file  optional    

Replace the stored file (max 20 MB). Example: /private/var/folders/1d/5c3snk2j0qs5b5h3yy27r4w40000gn/T/phplaht8s2duk9ubEcuYfb

DELETE api/v1/profiles/{profile}/documents/{record}

requires authentication

Example request:
curl --request DELETE \
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto" \
    --header "Authorization: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto"
);

const headers = {
    "Authorization": "Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.tapmedid.com/api/v1/profiles/architecto/documents/architecto'
headers = {
  'Authorization': 'Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Request      

DELETE api/v1/profiles/{profile}/documents/{record}

Headers

Authorization        

Example: Bearer tmid_live_xxxxxxxxxxxxxxxxxxxx

Content-Type        

Example: application/json

Accept        

Example: application/json

URL Parameters

profile   string     

The profile. Example: architecto

record   string     

Example: architecto