# Linktotem > Linktotem is a link-in-bio platform: one page per profile, made of blocks (links, headings, text, > social icons, media, folders), with its own design, forms, audience and analytics. Profiles live at > https://linktotem.com/{username} or on a custom domain. ## API - OpenAPI 3.1: https://linktotem.com/api/v1/openapi.json - Reference: https://linktotem.com/api/docs - For developers: https://linktotem.com/developers - Base URL: https://linktotem.com/api/v1 - Auth: `Authorization: Bearer app_live_…` — a key from Settings › API in the dashboard, shown once, part of the Pro plan. A key reaches every profile of the account that made it. Keys have a scope: `read` is refused on writes with 403 `read_only`. - Limits per key: 120 requests a minute, of which 30 may write. Over the limit: 429 with `details.retryAfterSeconds`. - Errors are always `{"error":{"code","message","details"}}`. ## Endpoints - `GET|POST /profiles`, `GET|PATCH|DELETE /profiles/{id}` — the account's pages. - `GET /profiles/{id}/pages` — a profile is a small site; blocks belong to a page. - `GET|POST /profiles/{id}/blocks` (`?pageId=`), `GET|PATCH|DELETE /blocks/{id}`, `POST /profiles/{id}/blocks/reorder`. Block types through the API: link, heading, text, social_icons, media, folder. Forms, Collect Emails and the content blocks are made in the dashboard. - `GET|PATCH /profiles/{id}/styles` — the theme, as one versioned JSON object. - `GET /profiles/{id}/submissions?since=`, `GET /profiles/{id}/subscribers?since=` — poll with the `createdAt` of the last row you have. - `GET /profiles/{id}/analytics?from=&to=` — aggregates for whole UTC days. - `GET /profiles/{id}/screenshot?width=&height=` — a JPEG of the published page. ## MCP - Endpoint: https://linktotem.com/api/mcp (Streamable HTTP, stateless), same Bearer key and same limits. - Setting it up, per client: https://linktotem.com/mcp - Tools: list_profiles, get_profile, get_form_submissions, get_subscribers, screenshot_profile, update_profile, update_theme, update_social_icons, add_block, update_block, toggle_block, delete_block, reorder_blocks. ## Notes - Writes are validated exactly like the editor's own forms and go through the same safety checks; the public page is rebuilt before the response comes back. There are no drafts: a change is live. - Dates are UTC ISO 8601. Ids are UUIDs. Positions are opaque sort keys — use `reorder` to move things.