# Documentation - [Introduction](/en/docs): Chat thread and message persistence for the Vercel AI SDK - UIMessage-native, with branching and resumable streams, in your own database. - [Getting started](/en/docs/getting-started): Install, add the two tables to your schema, and get a persisted useChat conversation running. - API - [API reference](/en/docs/api): Every export ai-sdk-threads ships, grouped by what you reach for it to do. - [chatHandler](/en/docs/api/chat-handler): One call that replaces the load, store, stream, store boilerplate every AI SDK app writes by hand. - [resumableChat](/en/docs/api/resumable-chat): The POST, GET and DELETE trio, so a reload halfway through an answer picks the stream back up. - [The store](/en/docs/api/store): createThreadStore, thread and message methods, keyset pagination, and orderPath. - [Branching](/en/docs/api/branching): Edit or regenerate a message and the old version survives as a sibling, the way ChatGPT does it. - [convertToUIMessages](/en/docs/api/convert): The ModelMessage to UIMessage direction the AI SDK still does not ship. - [SQLite](/en/docs/api/sqlite): The same ThreadStore contract over a drizzle SQLite database, plus the three constraints that are not optional. - [Schema](/en/docs/api/schema): The two tables, every column, and why the timestamps are millisecond precision. - [Migrating between AI SDK versions](/en/docs/migrating): Every row records the ai major that wrote it, which turns an SDK upgrade into something checkable rather than hopeful. - [Importing from the Vercel template](/en/docs/importing): The ai-chatbot template's Chat and Message_v2 tables map straight across.