Universal.Figma.Client
1.0.1
dotnet add package Universal.Figma.Client --version 1.0.1
NuGet\Install-Package Universal.Figma.Client -Version 1.0.1
<PackageReference Include="Universal.Figma.Client" Version="1.0.1" />
<PackageVersion Include="Universal.Figma.Client" Version="1.0.1" />
<PackageReference Include="Universal.Figma.Client" />
paket add Universal.Figma.Client --version 1.0.1
#r "nuget: Universal.Figma.Client, 1.0.1"
#:package Universal.Figma.Client@1.0.1
#addin nuget:?package=Universal.Figma.Client&version=1.0.1
#tool nuget:?package=Universal.Figma.Client&version=1.0.1
Universal.Figma.Client
A complete C# client for the Figma REST API: files, nodes, images, comments, projects/folders, components/styles, webhooks, variables, dev resources, library analytics, and admin/enterprise endpoints (activity logs, developer logs, AI usage, payments), plus oEmbed.
Getting started
Construct with a personal access token (or OAuth token) — it's sent as the X-Figma-Token header on every request:
var client = new FigmaClient("YOUR_ACCESS_TOKEN");
Fetching a file
GetFileAsync returns the full document tree, fully typed - document is a polymorphic Node (check .Type, or pattern-match on the concrete subclass: FrameNode, TextNode, BooleanOperationNode, InstanceNode, etc.):
GetFileResponse file = await client.GetFileAsync("FILE_KEY", new GetFileQueryParams { Depth = 1 });
if (file.Document.Children[0] is CanvasNode canvas)
{
foreach (Node node in canvas.Children)
{
Console.WriteLine($"{node.Type}: {node.Name}");
}
}
GetFileNodesAsync returns the same node model for a specific set of node ids:
GetFileNodesResponse nodes = await client.GetFileNodesAsync("FILE_KEY", new GetFileNodesQueryParams
{
Ids = new[] { "1:2" }
});
Rendering images
GetImagesAsync renders one or more nodes through Figma's own rendering pipeline and returns a URL per node (valid for 30 days):
GetImagesResponse images = await client.GetImagesAsync("FILE_KEY", new GetImagesQueryParams
{
Ids = new[] { "1:2" },
Format = ImageFormats.Png,
Scale = 2
});
Beyond files
Every other documented Figma REST endpoint follows the same pattern - a query-params or request-body object in, a typed response out: comments, projects/folders, components/styles, webhooks, variables, dev resources, library analytics, and the org-admin endpoints (activity logs, developer logs, AI usage, payments).
Incoming webhook payloads (what Figma POSTs to your own endpoint) can be deserialized directly into the polymorphic WebhookPayload hierarchy (WebhookFileUpdatePayload, WebhookFileCommentPayload, etc.) via JsonConvert.DeserializeObject<WebhookPayload>(body).
Errors
Non-success responses throw Universal.Common.Net.Http.HttpException, carrying the status code and response body.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.3)
- Universal.Common.Net.Http (>= 5.2.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Universal.Figma.Client:
| Package | Downloads |
|---|---|
|
Universal.Operative.Sdk.Figma
Local Figma file authoring and inspection tools plus Figma REST tools for Universal.Operative. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Fixed every boolean query parameter (e.g. GetProjectFilesQueryParams.BranchData) being sent as "True"/"False" instead of the lowercase "true"/"false" Figma's REST API expects.