https://api.usefrictionless.com/api/v1. Send JSON with your API key in the Authorization header. Every endpoint is in the API reference, where you can try it.
Create or update a contact
PUT /contacts/:userId. Only the fields you send change. Set an attribute to null to remove it.
linkedChats: how many chats it’s now linked to.
Send an event
POST /events. Say who it happened to with:
userId: best. Saved even before they ever chat, and creates the contact if needed.phone: for someone already chatting on WhatsApp.- or both.
amount and reference in properties get their own rows on the card.
level is optional. "problem" puts the event at the top of the agent’s panel in red, "info" keeps it in the list. Leave it out and Frictionless decides from the name: words like failed, declined or rejected make it a problem.
Returns 201 with the event’s id and postedToConversations: how many active chats received a card. occurredAt (ISO 8601) is optional and defaults to now.
In Node.js
Read or delete a contact
GET /contacts/:userIdreturns the contact and its latest 20 events, which helps when checking an integration.DELETE /contacts/:userIdremoves the contact and its events, for example when a user deletes their account with you. Chats and messages stay.

