UI kits
Prebuilt UI, already wired to the API
Drop a full inbox, chat, template builder or call screen into your app. Each component talks to Polymorfa with a short-lived client token, so your API key stays on your server.
- React components
- 21
- Web Components
- 9
- Server route behind all of them
- 1
- Longest client token lifetime
- 15 min
Components
Every screen, ready-made.
Use the whole inbox or take the parts you need. Each one reads and sends through Polymorfa, with keyboard support and loading, empty and failure states built in.
Browser-safe
Safe to run in the browser.
Your server decides what each signed-in user may do. The browser only ever holds a client token for one number, and the API checks every request against it.
In your code
One provider, one route, one component.
Mount the inbox, grant access on your server, use it without React, then match your design.
"use client";
import { Inbox, PolymorfaProvider } from "@polymorfa/react";
export function SupportInbox() {
return (
<PolymorfaProvider tokenEndpoint="/api/polymorfa/token">
<Inbox />
</PolymorfaProvider>
);
}Your design
Looks like your product.
Set colors, fonts, spacing and radius once. Every component follows them in light and dark themes.
Every frontend
One kit for every frontend.
The same components and permissions in the framework your team already uses, from React to server-rendered HTMX.
API surface
What the components call.
Components call one route on your server, which calls Polymorfa with your key. Sends and calls go straight to the API with the client token.
Your server route
- POST
/Mint a client token for the signed-in userapi/ polymorfa/ token - GET
/Conversations the grant allowsapi/ polymorfa/ history/ conversations - GET
/One thread, 404 outside the grantapi/ polymorfa/ history/ conversations/ {id}/ messages - GET
/Live updates as server-sent eventsapi/ polymorfa/ events - POST
/Create a QuickLink for the connect buttonapi/ polymorfa/ connect - POST
/List, save and submit templatesapi/ polymorfa/ templates
Polymorfa API
- POST
/Mint a token for one numberplatform/ client-tokens - PUT
/Set what tokens for a number may doplatform/ sessions/ {session}/ client-rules - POST
/Send from the composermessaging/ {number}/ messages/ send - POST
/Create the hosted pairing linkmessaging/ quicklinks - Event
message.receivedNew messages reach the inbox - Event
message.ackDelivered and read receipts
Start with a free number
Your first real number is free. Add more numbers on Pay-As-You-Go.