Logo

Partner Portal Login

Please enter your API Key or Admin Secret to continue.

Invalid access key
Beta Version: Report issues to support@naturaesoft.com.

Introduction

Welcome to the EMR API documentation. This API allows partners to integrate with our Electronic Medical Record system to manage prospects, tags, and view provider availability.

Base URL: /v1/{PPass}

Authentication

Our API uses API Keys to generate temporary JWT Bearer tokens.

POST /v1/{PPass}/auth/token

Exchange your API key for an access token.

Request Body
{
  "apiKey": "your_api_key_here"
}
Response
{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "tokenType": "Bearer",
  "expiresIn": "24h"
}

Include the token in all subsequent requests:

Authorization: Bearer YOUR_TOKEN

Prospects

GET /v1/{PPass}/prospects

List and search prospects.

Query params: search, page, limit, prospect=true

POST /v1/{PPass}/prospects

Create a new prospect.

Example Body
{
  "FirstName": "John",
  "LastName": "Doe",
  "EMail": "john@example.com",
  "Phone": "555-0123"
}
PUT /v1/{PPass}/prospects/{id}

Update an existing prospect. Fields: FirstName, MI, LastName, FullName, NickName, Gender (m,f,o,u), DOB, LifeStage (Infant,Toddler,Child,Adolescent,EarlyAdult,Adult,AllAdults,Senior), Pronouns, SexualIdentity, PrimaryLanguage, Type (Patient,Child,Cash,Insurance,Guarantor) , Phone, CellPhone, SMSPhone, EMail, Address, Unit, City, State, Zip, Country, ProviderID, Prospect (1,0), Sh_Name, Sh_Address, Sh_Unit, Sh_City, Sh_State, Sh_Zip, Sh_Country, PtImg, Notes

Tags

GET /v1/{PPass}/tags

Get all available tags.

POST /v1/{PPass}/tags/prospects/{id}

Assign a tag to a prospect.

{
  "tagId": 123
}
DELETE /v1/{PPass}/tags/prospects/{id}/{tagId}

Remove a specific tag from a prospect.

DELETE /v1/{PPass}/tags/prospects/{id}

Remove all tags from a prospect.

Providers

Requires Providers scope.

GET /v1/{PPass}/availability/providers

List all active providers.

GET /v1/{PPass}/availability/providers/{id}

Get specific provider details.

GET /v1/{PPass}/availability/providers/{id}/schedule

Get scheduled visits for a provider within a date range.

Query params: startDate, endDate, visitType

Example Request
GET /v1/DemoOffice/availability/providers/1/schedule?startDate=2026-03-09&endDate=2026-03-15
Example Response
{
    "data": {
        "provider": {
            "id": 1,
            "name": "Jane Smith",
            "title": "PA-C",
            "specialty": "Aesthetics"
        },
        "startDate": "2026-03-09",
        "endDate": "2026-03-15",
        "schedule": {
            "2026-03-09": [
                { "VisitID": 101, "time": "09:00:00", "duration": 30, "type": "FOLLOWUP", "booked": true }
            ]
        },
        "totalVisits": 1
    }
}
GET /v1/{PPass}/availability/providers/{id}/check

Check whether a specific date/time/duration slot is available.

Query params: date, time, duration

Example Request
GET /v1/DemoOffice/availability/providers/1/check?date=2026-03-09&time=10:15:00&duration=30
Example Response
{
    "data": {
        "ProviderID": 1,
        "Date": "2026-03-09",
        "Time": "10:15:00",
        "Duration": 30,
        "Available": true
    }
}
GET /v1/{PPass}/availability/providers/{id}/slots

Get all available slots for a provider on a specific date.

Query params: date, duration

Example Request
GET /v1/DemoOffice/availability/providers/1/slots?date=2026-03-09&duration=30
Example Response
{
    "data": {
        "ProviderID": 1,
        "Date": "2026-03-09",
        "Duration": 30,
        "Slots": ["09:00:00", "11:30:00", "14:00:00"],
        "Count": 3
    }
}
GET /v1/{PPass}/availability/providers/{id}/next-slot

Get the next available slot for a provider.

Query params: duration, maxDays (optional, default 365)

Example Request
GET /v1/DemoOffice/availability/providers/1/next-slot?duration=30&maxDays=30
Example Response
{
    "data": {
        "ProviderID": 1,
        "Duration": 30,
        "SearchWindowDays": 30,
        "TheNextSlot": {
            "ProviderID": "1",
            "Date": "2026-03-10",
            "Time": "09:00:00"
        }
    }
}

Products (ProductPro)

Requires ProductPro.Products scope. These endpoints are global (no {PPass} required).

GET /v1/products

List available products. Searchable via search and vendorCode query params.

POST /v1/products

Bulk update or create products.

{
  "products": [
    {
      "VendorCode": "V001",
      "ProductCode": "P001",
      "Product": "Example Product",
      "RetailPrice": 99.99
    }
  ]
}

Knowledge Base

Requires KB scope. These endpoints are global.

GET /v1/kb

List KB articles. Searchable via search, category, and type query params.

GET /v1/kb/{id}

Get details for a specific KB article.

Example Request
GET /v1/kb/12
Example Response
{
  "data": {
    "KBID": 12,
    "Title": "Insurance Verification Workflow",
    "Article": "Step-by-step process...",
    "Category": "Billing",
    "Type": "HowTo",
    "Tags": "insurance, verification",
    "Active": true
  }
}
PUT /v1/kb/{id}

Update a specific KB article.

Tickets

Requires Tickets scope. These endpoints are tenant-specific.

GET /v1/{PPass}/tickets

List all tickets for the practice.

GET /v1/{PPass}/ticket/{id}

Get specific ticket details including comments.

PUT /v1/{PPass}/ticket/{id}

Update ticket status or other details.

POST /v1/{PPass}/tickets/{id}/comment

Add a comment to a ticket.

{
  "Comment": "This is a new comment",
  "Author": "Support Agent"
}

My Information

Read and update your own partner information. Global endpoint.

GET /v1/me

Get your partner profile details.

PATCH /v1/me

Update your partner profile.

Dashboard Overview

Multi-Tenant Enabled
Total Calls

0

Success Rate

0%

Avg Duration

0ms

Error Count

0

API Usage (Last 7 Days)
Partners
  • Loading partners...
API Keys
Name Partner PPass Scopes Last Used Status
Loading keys...
API Access Requests
Time Company Practice Contact Requested Scopes Status Action
Loading requests...
Recent Activity
Time Method Endpoint Status Duration Partner IP
Loading logs...