# Get started with the Ur Next Door API

> The ideas behind the Ur Next Door API: personal keys, scopes, HTML bodies, publishing now or later, quotas, and safe retries. Start here.

Source: https://docs.urnextdoor.com/getting-started/

This section takes you from no key to your first published post in about ten minutes. Read the ideas below once; every guide builds on them.

- [Create an API key](https://docs.urnextdoor.com/getting-started/create-api-key.md): on the website or in the app, then store it safely.
- [Authentication](https://docs.urnextdoor.com/getting-started/authentication.md): how to send the key, and what a key can and cannot do.
- [Scopes](https://docs.urnextdoor.com/getting-started/scopes.md): give each key only the permissions its tool needs.
- [Make your first request](https://docs.urnextdoor.com/getting-started/first-request.md): check the key, publish a post, read your quota.

## A key acts as you

An API key belongs to one member: you. Anything created with it is published under your name, exactly as if you had used the website. The API runs the same checks the website runs, so a key can only post in a community where you are an editor (or above), and it can never change your account, your password or other keys.

Keys start with `und_sk_` and are 56 characters long. You can hold up to 5 active keys, each with its own name, scopes and expiry, so you can give Claude Code one key and a Zapier automation another, and revoke either without touching the other.

## Scopes limit what a key can do

Each key has one or more [scopes](https://docs.urnextdoor.com/getting-started/scopes.md): `content` (create things), `media` (upload images), `schedule` (manage scheduled items) and `read` (lookups). A request outside the key's scopes answers `403 insufficient_scope`.

## Requests are JSON, content is HTML

Send JSON bodies with `Content-Type: application/json`. The `body` or `description` of what you create is HTML: paragraphs, headings, lists, links, quotes, code, images and YouTube embeds. The website cleans it with the same allowlist it uses for content typed in its editor. See [Format content with HTML](https://docs.urnextdoor.com/guides/formatting.md).

Every response is JSON with `"ok": true` or `"ok": false`. Errors also carry a `code` you can act on and a `request_id` for support. See [Errors](https://docs.urnextdoor.com/errors.md).

## Publish now or later

Without `scheduled_at`, a create publishes immediately and answers with the item's `web_url`. With `scheduled_at` (UTC, 5 minutes to 180 days ahead) it is saved as scheduled and goes live on its own. You can [list, move, publish or cancel](https://docs.urnextdoor.com/guides/manage-scheduled.md) scheduled items until then. See [Schedule content](https://docs.urnextdoor.com/guides/schedule-content.md).

## Limits keep things fair

Each action (post, question, poll, MCQ, community, service, job, media upload) has a daily quota per member, set by your plan and shared by all your keys. On top of that, a member can make 60 requests a minute. A request that fails never uses quota. See [Rate limits and daily quotas](https://docs.urnextdoor.com/limits.md).

## Retries are safe with an Idempotency-Key

Networks fail. Send a unique `Idempotency-Key` header on every create, and if you are not sure a request worked, send it again with the same key: you get the first answer back instead of a duplicate post. See [Idempotency](https://docs.urnextdoor.com/idempotency.md).
