# Server SDK

> Source: https://pixelsystems.com/docs/sdk/server


A TypeScript library for server-side integrations: submit files and poll results with your API key.

> **Available on request**
>
> [Contact us](https://pixelsystems.com/contact) for access, or use the [REST API](https://pixelsystems.com/docs/api/assess) today: start with [Authentication](https://pixelsystems.com/docs/api/authentication), then [Assess a file](https://pixelsystems.com/docs/api/assess) (`/v1/assess`) and [Get a job's result](https://pixelsystems.com/docs/api/get-job) (`/v1/jobs/{jobId}`).

The server SDK wraps the same endpoints with typed helpers, so your API key never leaves the server. The sections below describe its scope at a high level. Exact names and signatures come with the package.

## Installation

A TypeScript package with type definitions included, for Node.js services and other server runtimes. The result types are the same shapes documented in [Resources](https://pixelsystems.com/docs/api/resources), so a verdict your code reads matches the reference field for field.

## Initialization

Created with an API key scoped to one [application](https://pixelsystems.com/docs/concepts#application), read from your own configuration or secret store. The key travels as a bearer token on every call, exactly as described in [Authentication](https://pixelsystems.com/docs/api/authentication).

## What it covers

One typed call per public operation, plus the polling most integrations write by hand:

- Submit a file for verification and receive its result, matching [Assess a file](https://pixelsystems.com/docs/api/assess) (`/v1/assess`).
- Wait for a result without writing a poll loop: the helper polls [Get a job's result](https://pixelsystems.com/docs/api/get-job) (`/v1/jobs/{jobId}`) until the status leaves `processing`, then returns the finished job.
- Page through previous submissions, matching [List jobs](https://pixelsystems.com/docs/api/list-jobs) (`/v1/jobs`).
- Reuse an idempotency key on retries, so a repeated submission returns the existing job instead of creating a duplicate.

## Errors

Failures arrive as typed errors carrying the same codes the REST API returns, so a caller can branch on a code instead of matching text. Transient conditions are separable from permanent ones: `rate_limited` and `service_unavailable` are worth retrying, while `unsupported_format` and `invalid_request` are not. Every code is listed under [Error codes](https://pixelsystems.com/docs/api/error-codes), and the limits behind `rate_limited` under [Rate limits](https://pixelsystems.com/docs/api/rate-limits).
