# LinkScale API > REST API and MCP server for LinkScale: links, landing pages, Shield, analytics, social accounts and creator-platform integrations. Version 1.14.0. Base URL https://dashboard.linkscale.to. Authenticate every request with `Authorization: Bearer `. - OpenAPI 3.0 contract (source of truth): https://docs.linkscale.to/openapi.bundle.json - MCP server: https://dashboard.linkscale.to/api/mcp (JSON-RPC 2.0 over HTTP POST, Bearer key or OAuth via https://dashboard.linkscale.to/.well-known/oauth-protected-resource) - Human-readable reference: https://docs.linkscale.to/ ## Guides - [API concepts](https://docs.linkscale.to/guides/overview.md) - [Changelog](https://docs.linkscale.to/guides/changelog.md) - [Integrations](https://docs.linkscale.to/guides/integrations.md) - [MCP](https://docs.linkscale.to/guides/mcp.md) - [All guides in one file](https://docs.linkscale.to/llms-full.txt) ## Endpoints ### Integrations - [GET /api/v2/integrations/providers](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationProviders): Read integration providers (operationId `getIntegrationProviders`) - [GET /api/v2/integrations/connections](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationConnections): Read integration connections (operationId `getIntegrationConnections`) - [GET /api/v2/integrations/connections/{connection_id}](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationConnection): Read integration connection (operationId `getIntegrationConnection`) - [GET /api/v2/integrations/connections/{connection_id}/metrics](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationMetrics): Read integration metrics (operationId `getIntegrationMetrics`) - [GET /api/v2/integrations/connections/{connection_id}/tracking-links](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationTrackingLinks): Read integration tracking links (operationId `getIntegrationTrackingLinks`) - [GET /api/v2/integrations/connections/{connection_id}/account](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationAccount): Read integration account (operationId `getIntegrationAccount`) - [GET /api/v2/integrations/connections/{connection_id}/statements](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationStatements): Read integration statements (operationId `getIntegrationStatements`) - [GET /api/v2/integrations/connections/{connection_id}/fan-health](https://docs.linkscale.to/#linkscale/tag/Integrations/operation/getIntegrationFanHealth): Read integration fan health (operationId `getIntegrationFanHealth`) ### MCP - [POST /api/mcp](https://docs.linkscale.to/#linkscale/tag/MCP/operation/callMcp): Discover and call the project-scoped assistant tools (operationId `callMcp`) ### Links - [GET /api/v1/links](https://docs.linkscale.to/#linkscale/tag/Links/operation/listLinks): List links (operationId `listLinks`) - [PUT /api/v1/links](https://docs.linkscale.to/#linkscale/tag/Links/operation/createLink): Create a new link (operationId `createLink`) - [GET /api/v1/links/{id}](https://docs.linkscale.to/#linkscale/tag/Links/operation/getLinkDetails): Get link details (operationId `getLinkDetails`) - [PATCH /api/v1/links/{id}](https://docs.linkscale.to/#linkscale/tag/Links/operation/updateLink): Update link (operationId `updateLink`) - [DELETE /api/v1/links/{id}](https://docs.linkscale.to/#linkscale/tag/Links/operation/deleteLink): Delete link (operationId `deleteLink`) ### Templates - [GET /api/v1/templates](https://docs.linkscale.to/#linkscale/tag/Templates/operation/listTemplates): Get all templates (operationId `listTemplates`) - [PUT /api/v1/templates](https://docs.linkscale.to/#linkscale/tag/Templates/operation/createTemplate): Create a new template (operationId `createTemplate`) - [GET /api/v1/templates/{template_id}](https://docs.linkscale.to/#linkscale/tag/Templates/operation/getTemplateById): Get template by ID (operationId `getTemplateById`) - [PATCH /api/v1/templates/{template_id}](https://docs.linkscale.to/#linkscale/tag/Templates/operation/updateTemplate): Update template (operationId `updateTemplate`) - [DELETE /api/v1/templates/{template_id}](https://docs.linkscale.to/#linkscale/tag/Templates/operation/deleteTemplate): Delete template (operationId `deleteTemplate`) ### Landing Pages - [GET /api/v1/links/{link_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLinkLanding): Read a link's landing page (operationId `getLinkLanding`) - [PUT /api/v1/links/{link_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/replaceLinkLanding): Replace a link's landing page (operationId `replaceLinkLanding`) - [PATCH /api/v1/links/{link_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/patchLinkLanding): Patch a link's landing page (operationId `patchLinkLanding`) - [GET /api/v1/links/{link_id}/landing/history](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLinkLandingHistory): List a link's landing version history (operationId `getLinkLandingHistory`) - [GET /api/v1/links/{link_id}/landing/history/{version_id}](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLinkLandingVersion): Read one landing version (operationId `getLinkLandingVersion`) - [GET /api/v1/links/{link_id}/dynamic-overrides](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLinkDynamicOverrides): Read a link's dynamic overrides (Model B) (operationId `getLinkDynamicOverrides`) - [PUT /api/v1/links/{link_id}/dynamic-overrides](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/replaceLinkDynamicOverrides): Replace a link's dynamic overrides (Model B) (operationId `replaceLinkDynamicOverrides`) - [PATCH /api/v1/links/{link_id}/dynamic-overrides](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/patchLinkDynamicOverrides): Merge a link's dynamic overrides (Model B) (operationId `patchLinkDynamicOverrides`) - [GET /api/v1/templates/{template_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getTemplateLanding): Read a template's landing page (operationId `getTemplateLanding`) - [PUT /api/v1/templates/{template_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/replaceTemplateLanding): Replace a template's landing page (operationId `replaceTemplateLanding`) - [PATCH /api/v1/templates/{template_id}/landing](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/patchTemplateLanding): Patch a template's landing page (operationId `patchTemplateLanding`) - [GET /api/v1/templates/{template_id}/landing/history](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getTemplateLandingHistory): List a template's landing version history (operationId `getTemplateLandingHistory`) - [GET /api/v1/templates/{template_id}/landing/history/{version_id}](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getTemplateLandingVersion): Read one template landing version (operationId `getTemplateLandingVersion`) - [GET /api/v1/landing-engine](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLandingEngineContract): Get the render contract ("the engine") (operationId `getLandingEngineContract`) - [GET /api/v1/landing-engine/example](https://docs.linkscale.to/#linkscale/tag/Landing Pages/operation/getLandingEngineExample): Get an example page (operationId `getLandingEngineExample`) ### Shield - [GET /api/v1/shield](https://docs.linkscale.to/#linkscale/tag/Shield/operation/getShieldContract): Shield contract (condition vocabulary, actions, presets, bots) (operationId `getShieldContract`) - [GET /api/v1/shield/presets](https://docs.linkscale.to/#linkscale/tag/Shield/operation/listShieldPresets): List the Shield presets (operationId `listShieldPresets`) - [GET /api/v1/shield/bots](https://docs.linkscale.to/#linkscale/tag/Shield/operation/listShieldBots): List the registered crawlers (operationId `listShieldBots`) - [GET /api/v1/links/{link_id}/shield](https://docs.linkscale.to/#linkscale/tag/Shield/operation/getLinkShield): Read a link's Shield configuration (operationId `getLinkShield`) - [PUT /api/v1/links/{link_id}/shield](https://docs.linkscale.to/#linkscale/tag/Shield/operation/replaceLinkShield): Replace a link's Shield configuration (operationId `replaceLinkShield`) - [PATCH /api/v1/links/{link_id}/shield](https://docs.linkscale.to/#linkscale/tag/Shield/operation/updateLinkShield): Update part of a link's Shield configuration (operationId `updateLinkShield`) - [DELETE /api/v1/links/{link_id}/shield](https://docs.linkscale.to/#linkscale/tag/Shield/operation/deleteLinkShield): Disable Shield and clear its configuration (operationId `deleteLinkShield`) ### Assets - [GET /api/v1/assets](https://docs.linkscale.to/#linkscale/tag/Assets/operation/listAssets): Search & list assets (operationId `listAssets`) - [PUT /api/v1/assets](https://docs.linkscale.to/#linkscale/tag/Assets/operation/generateUploadSignature): Generate upload signature (operationId `generateUploadSignature`) - [GET /api/v1/assets/{file_id}](https://docs.linkscale.to/#linkscale/tag/Assets/operation/getAssetById): Get asset details & validation polling (operationId `getAssetById`) ### Logs - [GET /api/v1/logs](https://docs.linkscale.to/#linkscale/tag/Logs/operation/getProjectLogs): Get project logs (operationId `getProjectLogs`) - [GET /api/v1/folders/{folder_id}/logs](https://docs.linkscale.to/#linkscale/tag/Logs/operation/getFolderLogs): Get folder logs (operationId `getFolderLogs`) - [GET /api/v1/links/{link_id}/logs](https://docs.linkscale.to/#linkscale/tag/Logs/operation/getLinkLogs): Get link logs (operationId `getLinkLogs`) ### Folders - [GET /api/v1/folders](https://docs.linkscale.to/#linkscale/tag/Folders/operation/getFolders): Get all folders (operationId `getFolders`) - [POST /api/v1/folders](https://docs.linkscale.to/#linkscale/tag/Folders/operation/createFolder): Create a folder (operationId `createFolder`) - [GET /api/v1/folders/{folder_id}](https://docs.linkscale.to/#linkscale/tag/Folders/operation/getFolder): Get a folder (operationId `getFolder`) - [PATCH /api/v1/folders/{folder_id}](https://docs.linkscale.to/#linkscale/tag/Folders/operation/updateFolder): Rename a folder (operationId `updateFolder`) - [DELETE /api/v1/folders/{folder_id}](https://docs.linkscale.to/#linkscale/tag/Folders/operation/deleteFolder): Delete a folder (operationId `deleteFolder`) ### Statistics - [GET /api/v1/stats](https://docs.linkscale.to/#linkscale/tag/Statistics/operation/getProjectStats): Get project statistics (operationId `getProjectStats`) - [GET /api/v1/folders/stats](https://docs.linkscale.to/#linkscale/tag/Statistics/operation/getFoldersStats): Get statistics for all folders (operationId `getFoldersStats`) - [GET /api/v1/folders/{folder_id}/stats](https://docs.linkscale.to/#linkscale/tag/Statistics/operation/getFolderStats): Get statistics for a specific folder (operationId `getFolderStats`) - [GET /api/v1/links/{link_id}/stats](https://docs.linkscale.to/#linkscale/tag/Statistics/operation/getLinkStats): Get link statistics (operationId `getLinkStats`) ### Trending Links - [GET /api/v1/trending-links](https://docs.linkscale.to/#linkscale/tag/Trending Links/operation/getTrendingLinks): Get trending links (operationId `getTrendingLinks`) ### Social Networks - [GET /api/v1/social-networks](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/listSocialNetworks): List social network accounts (operationId `listSocialNetworks`) - [GET /api/v1/social-networks/{social_id}](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkDetail): Get social network detail (operationId `getSocialNetworkDetail`) - [GET /api/v1/social-networks/{social_id}/history](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkHistory): Get account metrics history (operationId `getSocialNetworkHistory`) - [GET /api/v1/social-networks/{social_id}/posts](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/listSocialNetworkPosts): List posts with metrics (operationId `listSocialNetworkPosts`) - [GET /api/v1/social-networks/{social_id}/posts/{post_id}](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkPostDetail): Get post detail (operationId `getSocialNetworkPostDetail`) - [GET /api/v1/social-networks/{social_id}/posts/{post_id}/history](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkPostHistory): Get post metrics history (operationId `getSocialNetworkPostHistory`) - [GET /api/v1/social-networks/analytics](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkAnalytics): Get aggregated analytics (operationId `getSocialNetworkAnalytics`) - [GET /api/v1/social-networks/trending](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkTrending): Get trending posts (operationId `getSocialNetworkTrending`) - [GET /api/v1/social-networks/folders](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/listSocialNetworkFolders): List social network folders (operationId `listSocialNetworkFolders`) - [GET /api/v1/social-networks/folders/{folder_id}/stats](https://docs.linkscale.to/#linkscale/tag/Social Networks/operation/getSocialNetworkFolderStats): Get folder stats (operationId `getSocialNetworkFolderStats`) ## Agent prompt Paste this before a task in any coding agent: ```text You are helping me build with LinkScale (links, landing pages, Shield, analytics, social accounts and creator-platform integrations) through its REST API and MCP server. Sources of truth (fetch them before writing code): - OpenAPI 3.0 contract: https://docs.linkscale.to/openapi.bundle.json - Agent index: https://docs.linkscale.to/llms.txt - Full guides in one file: https://docs.linkscale.to/llms-full.txt Access: - REST base URL: https://dashboard.linkscale.to (paths start with /api/v1 or /api/v2) - MCP server: https://dashboard.linkscale.to/api/mcp (JSON-RPC 2.0 over HTTP POST, same Bearer key; GET returns 405). Call initialize, then tools/list, and pick tools from their descriptions. - OAuth discovery for MCP clients: https://dashboard.linkscale.to/.well-known/oauth-protected-resource - API keys and their permissions: https://dashboard.linkscale.to/mcp Rules you must follow: 1. The OpenAPI document is the contract. Never invent an endpoint, field, parameter or permission. If something is not in it, say so instead of guessing. 2. Authenticate with `Authorization: Bearer $LINKSCALE_API_KEY`. Read the key from the environment; never hardcode, log, print or commit it, and never ship it to browser code. 3. Check the HTTP status before trusting a body. Over MCP, also check `result.isError` and the JSON-RPC `error` even when HTTP is 200. 4. A 403 means the key lacks a permission (for example `links.read`). Name the missing permission; do not retry around it. 5. Retry only reads, only on 429 and 5xx, with exponential backoff and the server's retry delay when given. Never blindly retry a write: read the current state first. 6. Ignore response fields you do not recognise. Some list fields (`geo_rules`, Shield `rules`, `folders`) REPLACE the whole array: read, modify, then write the full list back. 7. Before any create, update or delete, show me the exact request and wait for my confirmation. MCP mutation tools also require `confirm: true`. 8. A null or pending value is not zero, and amounts in different currencies are never added together. 9. Never ask me for passwords, cookies or two-factor codes. Platform sign-ins happen in the LinkScale dashboard. Start by fetching the agent index, then tell me which endpoints or MCP tools you plan to use and which key permissions they need. My task: ```