---
title: "Register device"
method: POST
path: "/register"
tags: ["Identity"]
---

# Register device

`POST /register`

## Request

- Base URL: `https://pdf2md.dev`
- URL: `https://pdf2md.dev/register`
- Auth: none required

Idempotent device registration by public key (ES256). Returns `device_id` and `device_token`.
For request signing, anti-replay, and limit details, see docs/security.md.

## Request body

- RegisterRequest
  - `public_key_spki_b64` string, required: base64(SPKI) of the ES256 public key
  - `alg` 'ES256', required
  - `telemetry` object: Optional, for analytics (not used for blocking in MVP)
    - `fingerprint_v1` string
    - `ext_version` string
    - `browser` string
    - `platform` string

## Response `200`

Device registered

- RegisterResponse
  - `device_id` string, uuid, required
  - `device_token` string, required: bearer token for requests (see docs/security.md)
  - `expires_at` string, date-time, required: device_token expiration time

## Other responses

- `400`: Invalid public key or request format
- `429`: Registration limits exceeded (per IP/ASN)

---

[API](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade.md) · [All operations](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/llms.txt) · [OpenAPI document](https://skmtc.dev/pdf2md/apis/pdf-to-markdown-api-facade/revisions/4636782fb8b6?raw)
