---
title: "Create and authenticate an application"
description: "Create a Developer Account and Developer Application, register RS256 keys and authenticate the application backend."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">CloudPrint Documentation</a><span aria-hidden="true">/</span><span>Developer Platform</span></nav>

# Create and authenticate an application

<p class="docs-lead">A Developer Application represents one external product. Register its public identity and RS256 verification keys in CloudPrint, while keeping every private key exclusively in your backend secret store.</p>

## Create a Developer Account

Sign in to the Developer Portal with a normal CloudPrint user login and create a Developer Account for the company or team that owns the integration. Membership controls who may manage Applications, keys and installations; it is not a customer CloudPrint Account and it does not own printers.

## Register one application per product

Create a Developer Application with a stable name, homepage, privacy-policy URL and exact redirect URIs. The returned `client_id` identifies the application in installation links and assertion claims. Do not create a separate Application for every customer: each customer connection is represented by an App Installation.

## Configure Redirect URIs

The `redirect_uri` in an installation link must exactly match a registered value, including its scheme, host, port, path and query. Use HTTPS outside local development. HTTP is accepted only for `localhost`, `127.0.0.1` and `[::1]`; wildcards, URL fragments and user credentials are rejected.

## Register an RS256 public key

Generate an RSA key pair of at least 2048 bits in your controlled environment. Upload only the public key and keep the private key in a managed secret store or HSM. CloudPrint assigns the key identifier used as JWT `kid`. Use overlapping active keys for planned rotation, then revoke the old key after all workloads use the replacement.

## Create a one-time application assertion

Sign a compact JWT with `alg=RS256` and the active key ID in `kid`. Set the Application `client_id` in `iss` and `sub`, use the exact target endpoint as `aud`, keep `exp - iat` at five minutes or less and generate a unique `jti`. Clock synchronization matters. An assertion is single-use and should be created immediately before the request.

## Respect application status

Only an active Developer Account, active Application and active key may authenticate. A pending or suspended Application cannot open new installations or issue tokens. A security reset revokes application keys and invalidates the affected access path; surface this state in your operations dashboard rather than retrying indefinitely.

## Keep private keys on your servers

Never place the private key or assertion generator in browser code, a mobile application, the CloudPrint Agent or a customer environment. Give signing access only to the service that exchanges credentials, avoid logging compact JWTs and record CloudPrint `X-Request-Id` together with your internal operation ID for support.

## Production checklist

- Use an outbound agent connection; do not expose printer ports to the internet.
- Store the stable printer identity instead of relying only on a display name.
- Validate document format, page size and orientation before creating the job.
- Handle terminal status, retry policy and duplicate-print protection explicitly.

## Next steps

<div class="docs-card-grid"><a class="docs-card" href="/docs/developer-platform/"><strong>CloudPrint Developer Platform</strong><span>Build one application that customers install into their own CloudPrint accounts through stable App Installations.</span></a>
<a class="docs-card" href="/docs/developer-platform/installations/"><strong>Installations and access tokens</strong><span>Install an application into customer accounts, store installation_id and issue short-lived Installation Access Tokens.</span></a>
<a class="docs-card" href="/docs/api/v1/app-installations/access-token/"><strong>Issue an App Installation token</strong><span>Authenticate a Developer Application with a one-time RS256 assertion and issue a short-lived token for one approved App Installation.</span></a></div>

<nav class="docs-resource-links" aria-label="Next steps"><a href="/docs/api/v1/explorer/">OpenAPI</a><a href="https://my.cloudprint.me">Open account</a><a href="/docs/legal/privacy/">Privacy Policy</a><a href="/docs/legal/terms/">Terms</a><a href="/docs/legal/payments-and-refunds/">Payment and refunds</a><a href="/docs/legal/data-processing/">DPA</a></nav>