Skip to content

Partner API SDKs

Official, zero-dependency clients for the Partner API. Each wraps the full loop — import a blank PDF, wait for the template, mint a fill link, retrieve submissions and completed PDFs — plus webhook signature verification.

LanguageInstallSource
Gogo get github.com/easydocforms/easydocforms-goeasydocforms-go
Node.jsnpm install easydocformseasydocforms-node
Pythonpip install easydocformseasydocforms-python
Rubygem "easydocforms"easydocforms-ruby

API keys are created in the EasyDocForms app under Settings → Integrations → Partner API (shown exactly once).

Node.js

js
import { Client } from "easydocforms";

const client = new Client(process.env.EASYDOCFORMS_API_KEY);

// 1. Import a blank PDF (async — resolves immediately).
let importJob = await client.createImport({
  pdfUrl: "https://example.com/new-patient-intake.pdf",
  filename: "new-patient-intake.pdf",
  blankFormAttestation: true, // you attest the PDF is a blank template — no PHI
});

// 2. Wait for processing (typically 1–10 minutes).
importJob = await client.waitForImport(importJob.import_id);

// 3. Mint a hosted fill link and hand the URL to the patient.
const link = await client.createFillLink({
  templateId: importJob.template_id,
  externalRef: "visit-8675309",
});
console.log(link.url);

Python

python
import os
import easydocforms

client = easydocforms.Client(os.environ["EASYDOCFORMS_API_KEY"])

import_job = client.create_import(
    pdf_url="https://example.com/new-patient-intake.pdf",
    filename="new-patient-intake.pdf",
    blank_form_attestation=True,
)
import_job = client.wait_for_import(import_job["import_id"])

link = client.create_fill_link(
    template_id=import_job["template_id"],
    external_ref="visit-8675309",
)
print(link["url"])

Go

go
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	easydocforms "github.com/easydocforms/easydocforms-go"
)

func main() {
	client := easydocforms.NewClient(os.Getenv("EASYDOCFORMS_API_KEY"))
	pong, err := client.Ping(context.Background())
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("org %s, key %q, scopes %v\n", pong.OrgID, pong.KeyName, pong.Scopes)
}

Ruby

ruby
require "easydocforms"

client = EasyDocForms::Client.new(ENV["EASYDOCFORMS_API_KEY"])

import = client.create_import(
  pdf_url: "https://example.com/new-patient-intake.pdf",
  filename: "new-patient-intake.pdf",
  blank_form_attestation: true
)
import = client.wait_for_import(import[:import_id])

link = client.create_fill_link(
  template_id: import[:template_id],
  external_ref: "visit-8675309"
)
puts link[:url]

Each repository's README documents the full surface, including submission retrieval, completed-PDF downloads, and webhook signature verification. The API's single source of truth is the OpenAPI 3.1 spec.

HIPAA-aware documentation for independent healthcare practices.