--- title: Rich Link Previews | API Docs description: Send URLs that render as inline previews with a title, description, and image. --- A **link part** renders a URL as a rich inline card — title, description, and preview image — instead of a bare blue-link string. It’s the same affordance you see when you paste a URL into Messages manually. Rich link previews are available on iMessage and RCS. On SMS, link parts fall back to a plain text URL. ## Sending a link part Terminal window ``` curl -X POST https://api.linqapp.com/api/partner/v3/chats/{chat_id}/messages \ -H "Authorization: Bearer $LINQ_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "message": { "parts": [ { "type": "link", "value": "https://linqapp.com" } ] } }' ``` ``` await client.chats.messages.send(chatId, { message: { parts: [{ type: 'link', value: 'https://linqapp.com' }], }, }); ``` ``` client.chats.messages.send( chat_id, message={"parts": [{"type": "link", "value": "https://linqapp.com"}]}, ) ``` ## Constraints | Rule | Value | | ---------------------------------------- | ---------------------------------------------------- | | Must be the **only** part in the message | A link part cannot be mixed with text or media parts | | URL max length | 2,048 characters | | URL protocol | HTTPS required for preview generation | | Fallback on SMS | Bare text URL | Violating the “only part” rule returns [error `1004`](/error/codes/1xxx/1004/index.md) (*Invalid message content*). ## How previews are generated The preview (title, description, hero image) is fetched from the target page’s standard metadata: - Open Graph tags (`og:title`, `og:description`, `og:image`) - Twitter Card tags as a fallback - Standard HTML `