Integration guide

Welcome! This guide walks you through integrating your application with Hint to create core & clinical interactions within our platform.

FAMILIARIZE YOURSELF WITH HINT API

Before integrating with Hint, you need to understand our API architecture and authentication patterns.

INSTANT ON VIA OAUTH

Documentation: https://developers.hint.com/docs/instanton-via-oauth

Instant On allows users to instantly provide your application with API credentials without them needing to manually send you API keys.


MAKING API REQUESTS

Documentation: https://developers.hint.com/docs/making-requests

Hint uses RESTful APIs with Bearer Auth authentication:

Example API request:

const response = await fetch('https://api.hint.com/v1/patients', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});



const patients = await response.json();

Key Points: • All requests require Authorization: Bearer {token} header • Use HTTPS for all communications • API responses are JSON formatted • Rate limiting applies (see documentation for limits)


WEBHOOKS FOR REAL-TIME UPDATES

Documentation: https://developers.hint.com/docs/webhooks

Receive real-time notifications when data changes in Hint:

Example webhook endpoint:

app.post('/webhook/hint', (req, res) => {
  const { type, object, timestamp } = req.body;



  switch (type) {
    case 'patient.created':
      handle_patient_created(object)
      break;
    case 'patient.updated':
      handle_patient_updated(object)
      break;
    case 'patient.destroyed:
      handle_patient_destroyed(object)
      break;
  }



  res.status(200).send('OK');
});

AUTHENTICATE VIA HANDSHAKE

The handshake establishes secure communication between your application and Hint.

STEP 1: INITIALIZE HANDSHAKE

Provide a handshake url, Hint will initiate the handshake there by sending the following payload

{
  "timestamp":"2025-10-30T14:20:19.316986-03:00",
  "user":{
    "id":"user-BtAH8TTXCo6P",
    "email":"[email protected]",
    "first_name":"Agustin",
    "last_name":"Gomez",
    "name":"Agustin Gomez"
  },
  "practice":{
    "id":"pra-cmVPOcw7hcIs",
    "name":"Zak's Test Practice"
  },
  "integration":{
    "id":"int-MicbNQhj6hsv"
  },
  "access_token":"lo40kQDzotPRcmyEo8FuWtd92jd3BZsszbt3",
}
app.post("/handshake", (req, res) => {
  const signature = req.headers["x-hint-signature"];
  const payload = req.body;


  const sessionKey = generateSessionKey(payload);


  return res.json({ session_key: sessionKey });
});

The signature is validated the same way to webhooks

CONFIGURE IFRAME

Your application must be embeddable within Hint’s interface.

TECHNICAL SPECIFICATIONS

RequirementSpecification
Dimensions1024px x 768px, fixed
Responsive BehaviorScale gracefully within bounds
CommunicationWe’ll provide an SDK

Once the handshake is complete and we have received a session_key, we’ll load the partner app inside an iframe. The partner must provide us with a url that can be framed. We’ll append the session_key as a query parameter when embedding.

MAP TO API ENDPOINTS FOR CLINICAL INTERACTIONS

Create and manage clinical interactions within Hint's system.

CREATE CLINICAL INTERACTION

Documentation: https://developers.hint.com/reference/interactioncreateinteraction#/

Create a new partner interaction, this how the user will return to your iframe.

const createInteraction = async (patientId, noteData) => {
  const response = await fetch(`https://api.hint.com/v1/provider/patients/${patientId}/interactions`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${accessToken}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      type: 'partner',
      status: ‘draft’,
    })
  });

  return await response.json();
};

UPDATE CLINICAL INTERACTION

Documentation: https://developers.hint.com/reference/partnerinteractionupdatepartnerinteraction#/

const updateInteraction = async (noteId, updates) => {
  const response = await fetch(`https://api.hint.com/v1/provider/patients/${patientId}/interactions/${interactionId}`, {
    method: 'PATCH',
    headers: {
      'Authorization': `Bearer ${accessToken}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      status: ‘signed’,
    })
  });



  return await response.json();
};

INTEGRATION WITH HINT'S UI

Documentation https://developers.hint.com/docs/hint-marketplace-js-sdk#/

TESTING YOUR INTEGRATION

SANDBOX ENVIRONMENT

Test URL: https://app.staging.hint.com