Feathery.Unofficial.Client 1.0.1

dotnet add package Feathery.Unofficial.Client --version 1.0.1
                    
NuGet\Install-Package Feathery.Unofficial.Client -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Feathery.Unofficial.Client" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Feathery.Unofficial.Client" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Feathery.Unofficial.Client" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Feathery.Unofficial.Client --version 1.0.1
                    
#r "nuget: Feathery.Unofficial.Client, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Feathery.Unofficial.Client@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Feathery.Unofficial.Client&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Feathery.Unofficial.Client&version=1.0.1
                    
Install as a Cake Tool

FeatherySharp (Unofficial)

An unofficial, lightweight .NET client for Feathery REST APIs.
Not affiliated with Feathery. API behavior may change without notice.

Build NuGet

Features

  • Friendly, typed client over HttpClient
  • Covers Accounts, Forms (CRUD), Submissions, Hidden Fields, Users, Logs, Workspaces, Documents, and AI runs
  • Minimal dependencies
    • Microsoft.Extensions.Http
    • Microsoft.Extensions.Hosting.Abstractions
    • Microsoft.Extensions.DependencyInjection.Abstractions
    • Microsoft.Extensions.Options.ConfigurationExtensions
  • DI extension for one-liner setup
  • Optional polling helper for “export PDF” flows

Install

dotnet add package Feathery.Unofficial.Client

Quick start

using Feathery.Unofficial.Client;
using Feathery.Unofficial.Client.Models;

var builder = WebApplication.CreateBuilder(args);

// Reads configuration from "Feathery" section and/or FEATHERY_API_KEY env var
builder.AddFeathery();

var app = builder.Build();

// Example endpoint: list forms
app.MapGet("/forms", async (IFeatheryClient client) =>
{
    var forms = await client.ListFormsAsync();
    return Results.Ok(forms);
});

app.Run();

Configuration

Add to appsettings.json (or set FEATHERY_API_KEY):

{
  "Feathery": {
    "ApiKey": "YOUR_ADMIN_API_KEY",
    "BaseUri": "https://api.feathery.io/",
    "PdfPollAttempts": 5,
    "PdfPollDelay": "00:00:01"
  }
}

The DI extension validates ApiKey on startup.

Usage examples

// Resolve via DI
public sealed class MyService(IFeatheryClient feathery)
{
    public async Task DemoAsync()
    {
        // Accounts
        var account = await feathery.GetAccountAsync();
        // Forms
        var forms = await feathery.ListFormsAsync();
        var schema = await feathery.GetFormSchemaAsync("my_form_name_or_id");
        // Submissions
        var upsert = await feathery.CreateOrUpdateSubmissionAsync(new CreateOrUpdateSubmissionRequest {
            UserId = "user@example.com",
            Forms = ["My Form"],
            Fields = new() { ["age"] = 42 },
            Complete = true
        });
        // Export PDF (waits until ready via HEAD polling)
        var pdf = await feathery.ExportSubmissionPdfAsync("<FORM_ID>", "user@example.com");
    }
}

Supported endpoints (high level)

  • Accounts: get, edit, invite/uninvite, rotate key
  • Forms: list, get schema, create, update, delete (with confirm), copy
  • Submissions: create/update, batch list, export PDF
  • Hidden Fields: create
  • Users: list, get fields, get session, create/update, delete
  • Logs: API connector errors, recent emails, email issues, Quik requests
  • Workspaces: list, create, get, update, delete, auth token, create template form
  • Documents: fill/sign, list envelopes, delete envelope
  • AI: run extraction (multipart), list runs

For endpoint semantics, see Feathery’s official docs: https://api-docs.feathery.io/

Exceptions & diagnostics

API errors throw FeatheryApiException with:

  • StatusCode
  • ResponseBody (string; useful for debugging)
  • Request (the HttpRequestMessage that failed)

Add standard ASP.NET Core logging for request/response tracing if needed.

Compatibility

  • Targets: net8.0, net9.0
  • Dependencies: Microsoft.Extensions.Http, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.Hosting.Abstractions, Microsoft.Extensions.Http, Microsoft.Extensions.Options.ConfigurationExtensions, Microsoft.SourceLink.GitHub

Contributing

PRs welcome! Please:

  1. Create an issue describing the change.
  2. Run unit tests locally (dotnet test).
  3. For integration tests, set FEATHERY_API_KEY (these are skipped by default).

Release & versioning

  • SemVer (0.x while we stabilize)
  • Create a Git tag vX.Y.Z on master to publish to NuGet via GitHub Actions.

Security

Do not include real API keys in issues or PRs. Report sensitive bugs privately if needed.

License

MIT © 2025 David Heale


Disclaimer: This is an unofficial SDK and not endorsed by Feathery.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.1 1,566 8/22/2025
1.0.0 158 8/22/2025