# Rich Text Fields Some fields accept rich text content. These fields accept HTML input, which will be sanitized to remove unsafe tags and attributes. ```json { "card": { "title": "My card", "description": "

This is bold and this is italic.

" } } ``` ## Attaching files to rich text To attach files (images, documents) to rich text fields, use ActionText's direct upload flow: ### 1. Create a direct upload First, request a direct upload URL by sending file metadata: ```bash curl -X POST \ -H "Authorization: Bearer put-your-access-token-here" \ -H "Content-Type: application/json" \ -d '{ "blob": { "filename": "screenshot.png", "byte_size": 12345, "checksum": "GQ5SqLsM7ylnji0Wgd9wNA==", "content_type": "image/png" } }' \ https://app.fizzy.do/123456/rails/active_storage/direct_uploads ``` The `checksum` is a Base64-encoded MD5 hash of the file content. The direct upload endpoint is scoped to your account (replace `/123456` with your account slug). __Response:__ ```json { "id": "abc123", "key": "abc123def456", "filename": "screenshot.png", "content_type": "image/png", "byte_size": 12345, "checksum": "GQ5SqLsM7ylnji0Wgd9wNA==", "direct_upload": { "url": "https://storage.example.com/...", "headers": { "Content-Type": "image/png", "Content-MD5": "GQ5SqLsM7ylnji0Wgd9wNA==" } }, "signed_id": "eyJfcmFpbHMi..." } ``` ### 2. Upload the file Upload the file directly to the provided URL with the specified headers: ```bash curl -X PUT \ -H "Content-Type: image/png" \ -H "Content-MD5: GQ5SqLsM7ylnji0Wgd9wNA==" \ --data-binary @screenshot.png \ "https://storage.example.com/..." ``` ### 3. Reference the file in rich text Use the `signed_id` from step 1 to embed the file in your rich text using an `` tag: ```json { "card": { "title": "Card with image", "description": "

Here's a screenshot:

" } } ``` The `sgid` attribute should contain the `signed_id` returned from the direct upload response.