Ninsaúde
Ninsaúde is the NicoApp for integration with Ninsaúde, a management system for healthcare clinics (electronic medical records, calendar and patients). With it, your flow searches, registers and updates.
Authorization header of every request.How to obtain the API credentials
When installing the NicoApp, you provide a single field: the Access Token (Bearer), used in all calls as Authorization: Bearer <token>.
Ninsaúde itself documents the authentication of its development platform (Ninsaúde Toro) as follows:
- The standard is OAuth2, with two tokens: an Access Token, used in all request headers, valid for 15 minutes (it works like a session); and a Refresh Token, with no defined expiration, used only to obtain new Access Tokens — it replaces sharing a username/password with the app.
- The API follows the RESTful standard, with "thousands of available routes", documented in a public Postman collection ("Ninsaúde Clinic").
Recommendation: contact Ninsaúde's support or sales team (through the clinic panel or the service channels) and request the issuance of the integration Bearer Token for the API. When setting it up, confirm with them whether this token expires (and has to be renewed periodically, like the 15-min Access Token of the standard OAuth2 flow) or whether it is a long-lived integration token — this changes how you must reinstall/update it in the app.
Limitations
- Token validity: if the credential follows the OAuth2 standard described by Ninsaúde, the Access Token lasts only 15 minutes — confirm with Ninsaúde support the validity of the token used in this app and whether it needs periodic renewal.
- Required plan: not publicly documented. Treat it as a mandatory question when activating the integration with the customer.
What the NicoApp does
Patients
Calendar
Internal communication
Tips and notes
- "Schedule Appointment" vs. "Schedule Appointment #1": despite the similar name, they are not duplicates — Schedule Appointment creates a new appointment (
POST /atendimento_agenda) and Schedule Appointment #1 actually reschedules an existing appointment (POST /atendimento_agenda/reagendar/agendamento/{id}). In this documentation it was called Reschedule Appointment to make its purpose clear.
- Automatic End Time calculation: in Schedule Appointment and in Reschedule Appointment, if the End Time is not provided, the app fetches the default duration of the chosen Service (
GET /cadastro_servico/{id}→duracaoPadrao) and calculates End Time = Start Time + duration automatically — there is no need to enter both times manually. - Chained IDs: the Patient ID comes out of Create/Search Patient and goes into Update, Remove and Schedule Appointment. The Appointment ID comes out of Schedule Appointment and goes into Reschedule Appointment, Delete schedule and Edit Schedule Status.
- Date/time formats: dates in
YYYY-MM-DD(e.g.: 2026-08-01); times inHH:MM:SS(e.g.: 17:00:00). - Search Patient: the action tries CPF, then e-mail, then mobile, in that order, until it finds exactly one patient — if it finds none, the error is "Patient not found"; if it finds more than one, "Multiple patients found" (ask the user for more specific data to refine the search).
- Internal Message: the text sent is sanitized before sending — line breaks and tabs become a space, single quotes become backticks and double quotes become curly quotes, preventing the request JSON from breaking.
- Error handling: every action returns Ninsaúde's real error (the
errorfield of the response) when the call fails — use the block's error path to handle it in the flow (e.g.: invalid/expired token, unavailable time slot, missing required field).

