Oystehr API

Oystehr API as documented publicly: 19 operations. Contract generated from the documentation by API Evangelist (2026-10-27); not the provider's own document.

Operations 19

GET /fhir/sid/us-npi GET /fhir/sid/us-npi #
POST /oauth/token POST /oauth/token #
GET /r4/Group/[id]/$export GET /r4/Group/[id]/$export #
GET /r4/Practitioner/2419a78e-4c0a-411d-b9e2-90dc081f5efa Reference Properties #
DELETE /r4/async-job/{jobid} Async FHIR Interactions #
GET /r4/async-job/{jobid} Async FHIR Interactions #
DELETE /r4/export/job/[id] DELETE /r4/export/job/[id] #
GET /r4/export/job/[id] GET /r4/export/job/[id] #
GET /rest/search/current GET /rest/search/current #
POST /v1/zambda/your_zambda_id/execute POST /v1/zambda/your_zambda_id/execute #
PATCH /v1/zambda/{zambdaid} PATCH /v1/zambda/{zambdaId} #
GET /{resourcetype} Async FHIR Interactions #
POST /{resourcetype}/_search Async FHIR Interactions #
DELETE /{resourcetype}/{id} Async FHIR Interactions #
GET /{resourcetype}/{id} Async FHIR Interactions #
PATCH /{resourcetype}/{id} Async FHIR Interactions #
PUT /{resourcetype}/{id} Async FHIR Interactions #
GET /{resourcetype}/{id}/_history Async FHIR Interactions #
GET /{resourcetype}/{id}/_history/{versionid} Async FHIR Interactions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/oystehr:oystehr-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

oystehr-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Oystehr API
  version: '2026-10-27'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-27: 19 operation(s) read from 12 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Oystehr has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 12
    documentation: 7
    pages-with-code: 9
    pages-read: 12
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-27'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.oystehr.com/oystehr/services/iam/m2m-clients
  - https://docs.oystehr.com/oystehr/core-documentation/authenticating-api-requests
  - https://docs.oystehr.com/oystehr/services/zambda/examples/terminology-search
  - https://docs.oystehr.com/oystehr/services/fhir/basics
  - https://docs.oystehr.com/oystehr/services/fhir/search
  - https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
  - https://docs.oystehr.com/oystehr/services/fhir/bulk-data-export
  - https://docs.oystehr.com/oystehr/services/fhir/friendly-patient-id
  - https://docs.oystehr.com/oystehr/services/erx/patient-sync
  - https://docs.oystehr.com/oystehr/services/erx/practitioner-enrollment
  - https://docs.oystehr.com/oystehr/services/telemed
  - https://docs.oystehr.com/oystehr/services/zambda/execution-roles
servers:
- url: https://extensions.fhir.oystehr.com
paths:
  /fhir/sid/us-npi:
    get:
      operationId: get_fhir_sid_us_npi
      tags:
      - Fhir
      summary: GET /fhir/sid/us-npi
      x-source: https://docs.oystehr.com/oystehr/services/erx/practitioner-enrollment
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl enroll-practitioner.ts import Oystehr from '@oystehr/sdk' ; \n import {Practitioner} from 'fhir/r4b' ; \n const practitioner\
          \ : Practitioner = { \n resourceType : 'Practitioner' , \n name : [ \n { \n use : 'official' , \n family : 'Doe' , \n given : [ 'Jane'\
          \ ] , \n } , \n ] , \n birthDate : '1980-01-01' , \n telecom : [ \n { \n system : 'phone' , \n value : '123-456-7890' , \n } , \n {\
          \ \n system : 'fax' , \n val"
  /oauth/token:
    post:
      operationId: post_oauth_token
      tags:
      - Oauth
      summary: POST /oauth/token
      x-source: https://docs.oystehr.com/oystehr/services/iam/m2m-clients
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: javascript
        snippet: "fetch ( 'https://auth.zapehr.com/oauth/token' , { \n method : 'POST' , \n headers : { \n 'content-type' : 'application/json'\
          \ , \n } , \n body : JSON .stringify ({ \n grant_type : 'client_credentials' , \n client_id : '<your_m2m_client_id>' , \n client_secret\
          \ : '<your_m2m_client_secret>' , \n audience : 'https://api.zapehr.com' , \n })"
  /r4/Group/[id]/$export:
    get:
      operationId: get_r4_Group_id_export
      tags:
      - R4
      summary: GET /r4/Group/[id]/$export
      x-source: https://docs.oystehr.com/oystehr/services/fhir/bulk-data-export
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetR4GroupIdExportResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location 'https://fhir-api.zapehr.com/r4/Group/[id]/$export'  --header 'Authorization: Bearer <your_access_token>'  --header\
          \ 'x-oystehr-project-id: <your_project_id>' \n There is an optional _since parameter which forces to export resources updated after\
          \ a certain point in time only. \n Response \n HTTP Status Code of 202 Accepted \n Content-Location header with the absolute URL of\
          \ an endpoint "
  /r4/Practitioner/2419a78e-4c0a-411d-b9e2-90dc081f5efa:
    get:
      operationId: get_r4_Practitioner_2419a78e_4c0a_411d_b9e2_90dc081f5efa
      tags:
      - R4
      summary: Reference Properties
      x-source: https://docs.oystehr.com/oystehr/services/fhir/basics
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetR4Practitioner2419A78E4C0A411DB9E290Dc081F5EfaResponse'
      x-evidence:
        kind: documentation
  /r4/async-job/{jobid}:
    delete:
      operationId: delete_r4_async_job_jobid
      tags:
      - R4
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: jobid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    get:
      operationId: get_r4_async_job_jobid
      tags:
      - R4
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: jobid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /r4/export/job/[id]:
    delete:
      operationId: delete_r4_export_job_id
      tags:
      - R4
      summary: DELETE /r4/export/job/[id]
      x-source: https://docs.oystehr.com/oystehr/services/fhir/bulk-data-export
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location 'https://fhir-api.zapehr.com/r4/export/job/[id]'  --request DELETE \n --header 'Authorization: Bearer <your_access_token>'\
          \  --header 'x-oystehr-project-id: <your_project_id>' \n Response \n HTTP Status Code of 202 Accepted \n Optionally a FHIR OperationOutcome\
          \ resource in the body in JSON format \n Resource Provenance Friendly Patient ID Product Sign Up Developer Console Oystehr Postman"
    get:
      operationId: get_r4_export_job_id
      tags:
      - R4
      summary: GET /r4/export/job/[id]
      x-source: https://docs.oystehr.com/oystehr/services/fhir/bulk-data-export
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetR4ExportJobIdResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl --location 'https://fhir-api.zapehr.com/r4/export/job/[id]'  --header 'Authorization: Bearer <your_access_token>'  --header\
          \ 'x-oystehr-project-id: <your_project_id>' \n Response \n In-Progress \n Status: 202 Accepted \n X-Progress and Retry-After are not\
          \ guaranteed for export jobs. \n Error \n Status: 404 Not Found (job deleted or does not exist) \n Status: 410 Gone (job result expired)\
          \ \n Content-Ty"
  /rest/search/current:
    get:
      operationId: get_rest_search_current
      tags:
      - Rest
      summary: GET /rest/search/current
      x-source: https://docs.oystehr.com/oystehr/services/zambda/examples/terminology-search
      parameters:
      - name: apiKey
        in: query
        required: false
        schema:
          type: string
      - name: inputType
        in: query
        required: false
        schema:
          type: string
      - name: pageSize
        in: query
        required: false
        schema:
          type: string
      - name: returnIdType
        in: query
        required: false
        schema:
          type: string
      - name: sabs
        in: query
        required: false
        schema:
          type: string
      - name: string
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRestSearchCurrentResponse'
      x-evidence:
        kind: code-example
        language: javascript
        snippet: "fetch( \n `https://uts-ws.nlm.nih.gov/rest/search/current?apiKey=${apiKey}&pageSize=50&returnIdType=code&inputType=sourceUi&string=${search}&sabs=ICD10CM`\
          \ \n )"
  /v1/zambda/your_zambda_id/execute:
    post:
      operationId: post_v1_zambda_your_zambda_id_execute
      tags:
      - Zambda
      summary: POST /v1/zambda/your_zambda_id/execute
      x-source: https://docs.oystehr.com/oystehr/services/zambda/examples/terminology-search
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV1ZambdaYourZambdaIdExecuteRequest'
      responses:
        '201':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PostV1ZambdaYourZambdaIdExecuteResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://zambda-api.zapehr.com/v1/zambda/your_zambda_id/execute  --header 'Authorization: Bearer your_access_token'\
          \  --header 'x-oystehr-project-id: your_project_id'  --data '{\"search\": \"search_value\"}' \n Example Outputs \n Example Text Search\
          \ \n Searching for \"woodworking\" returns the following: \n { \n \"status\" : 200 , \n \"output\" : { \n \"codes\" : [ \n { \n \"code\"\
          \ : \"W31.2\" , \n \"display\" : \""
  /v1/zambda/{zambdaid}:
    patch:
      operationId: patch_v1_zambda_zambdaid
      tags:
      - Zambda
      summary: PATCH /v1/zambda/{zambdaId}
      x-source: https://docs.oystehr.com/oystehr/services/zambda/execution-roles
      parameters:
      - name: zambdaid
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchV1ZambdaZambdaidRequest'
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X PATCH 'https://project-api.zapehr.com/v1/zambda/<zambda_id>'  --header 'Content-Type: application/json'  --header 'Authorization:\
          \ Bearer <your_access_token>'  --header 'x-oystehr-project-id: <your_project_id>'  --data '{ \n \"executionRoleId\": null \n }' \n After\
          \ removing the execution role, the Zambda will no longer receive an accessToken in its event payload. \n Changing Permissions \n Because"
  /{resourcetype}:
    get:
      operationId: get_resourcetype
      tags:
      - Api
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /{resourcetype}/_search:
    post:
      operationId: post_resourcetype_search
      tags:
      - Search
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /{resourcetype}/{id}:
    delete:
      operationId: delete_resourcetype_id
      tags:
      - Api
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    get:
      operationId: get_resourcetype_id
      tags:
      - Api
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    patch:
      operationId: patch_resourcetype_id
      tags:
      - Api
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    put:
      operationId: put_resourcetype_id
      tags:
      - Api
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /{resourcetype}/{id}/_history:
    get:
      operationId: get_resourcetype_id_history
      tags:
      - History
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /{resourcetype}/{id}/_history/{versionid}:
    get:
      operationId: get_resourcetype_id_history_versionid
      tags:
      - History
      summary: Async FHIR Interactions
      x-source: https://docs.oystehr.com/oystehr/services/fhir/async-fhir-interactions
      parameters:
      - name: resourcetype
        in: path
        required: true
        schema:
          type: string
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: versionid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
components:
  schemas:
    GetR4GroupIdExportResponse:
      type: object
      properties:
        resourceType:
          type: string
        id:
          type: string
        issue:
          type: array
          items:
            type: object
            properties:
              severity:
                type: string
              code:
                type: string
              details:
                type: object
                properties:
                  text:
                    type: string
    GetR4Practitioner2419A78E4C0A411DB9E290Dc081F5EfaResponse:
      type: object
      properties:
        status:
          type: string
          description: HTTP status code 200 OK
        body:
          type: string
          description: FHIR Practitioner resource in JSON format
    GetR4ExportJobIdResponse:
      type: object
      properties:
        resourceType:
          type: string
        id:
          type: string
        issue:
          type: array
          items:
            type: object
            properties:
              severity:
                type: string
              code:
                type: string
              details:
                type: object
                properties:
                  text:
                    type: string
    GetRestSearchCurrentResponse:
      type: object
      properties:
        status:
          type: integer
        output:
          type: object
          properties:
            codes:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  display:
                    type: string
    PostV1ZambdaYourZambdaIdExecuteRequest:
      type: object
      properties:
        search:
          type: string
    PostV1ZambdaYourZambdaIdExecuteResponse:
      type: object
      properties:
        status:
          type: integer
        output:
          type: object
          properties:
            codes:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  display:
                    type: string
    PatchV1ZambdaZambdaidRequest:
      type: object
      properties:
        executionRoleId:
          type:
          - string
          - 'null'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api
- name: Fhir
- name: History
- name: Oauth
- name: R4
- name: Rest
- name: Search
- name: Zambda