# Realtime Chat Implementation in Next.js Using Directus REST API (Without SDK)

**URL:** https://community.directus.com/t/realtime-chat-implementation-in-next-js-using-directus-rest-api-without-sdk/329
**Category:** Help
**Created:** [May 15, 2025, 12:04pm UTC](https://community.directus.com/t/realtime-chat-implementation-in-next-js-using-directus-rest-api-without-sdk/329 "2025-05-15T12:04:31Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Omar\_Nasr](https://sea2.discourse-cdn.com/flex002/user_avatar/community.directus.com/omar_nasr/32/298_2.png) [@Omar\_Nasr](https://community.directus.com/u/Omar_Nasr)
#### Post date: [May 15, 2025, 12:04pm UTC](https://community.directus.com/t/realtime-chat-implementation-in-next-js-using-directus-rest-api-without-sdk/329/1 "2025-05-15T12:04:31Z")

</div>

I’m building a real-time chat feature in a **Next.js** application using **Directus REST APIs** (without the Directus SDK). I need guidance on:

1. **Realtime Updates:**

- How can I implement realtime messaging using Directus REST API (e.g., WebSockets, SSE, or polling)?
- Are there any built-in realtime features in Directus, or do I need an external solution (e.g., Pusher, [Socket.IO](http://Socket.IO))?

1. **Documentation/Examples:**

- Where can I find official docs or examples for realtime data in Directus without the SDK?
- Are there REST API endpoints for subscribing to changes (e.g., `messages` collection updates)?

1. **Workarounds:**

- If Directus doesn’t natively support REST-based realtime, what’s the best approach?
- Should I use Webhooks + a WebSocket service, or is there a simpler way?

---

<div class="post-metadata">

### Author: ![brainslug](https://sea2.discourse-cdn.com/flex002/user_avatar/community.directus.com/brainslug/32/35_2.png) [@brainslug](https://community.directus.com/u/brainslug)
#### Post date: [May 15, 2025, 12:13pm UTC](https://community.directus.com/t/realtime-chat-implementation-in-next-js-using-directus-rest-api-without-sdk/329/2 "2025-05-15T12:13:26Z")

</div>

Directus comes with WebSockets

> **[Authentication | Directus Docs](https://directus.io/docs/guides/realtime/authentication)**
>
> Explore our resources and powerful data engine to build your projects confidently.

> <https://github.com/directus/directus/blob/main/docs/guides/real-time/getting-started/websockets-js.md>

> **[Build a Multi User Chat with Javascript and Directus Realtime | Directus Docs](https://directus.io/docs/tutorials/projects/build-a-multi-user-chat-with-javascript-and-directus-realtime)**
>
> Explore our resources and powerful data engine to build your projects confidently.

---

<div class="post-metadata">

### Author: ![bryantgillespie](https://sea2.discourse-cdn.com/flex002/user_avatar/community.directus.com/bryantgillespie/32/33_2.png) [@bryantgillespie](https://community.directus.com/u/bryantgillespie)
#### Post date: [May 15, 2025, 12:20pm UTC](https://community.directus.com/t/realtime-chat-implementation-in-next-js-using-directus-rest-api-without-sdk/329/3 "2025-05-15T12:20:56Z")

</div>

Welcome to the community 👋

It looks like @brainslug beat me to the punch but…

To answer your questions,

> - How can I implement realtime messaging using Directus REST API (e.g., WebSockets, SSE, or polling)?
> - Are there any built-in realtime features in Directus, or do I need an external solution (e.g., Pusher, [Socket.IO](http://socket.io/))?

Realtime support is built right into Directus core. 🙌

> 1. **Documentation/Examples:**

Here’s some helpful links on working with Directus Realtime. You don’t have to work with the Directus SDK - it’s just a convenient wrapper for the websocket connection.

- [Connect to Realtime](https://directus.io/docs/getting-started/connect-to-realtime)
- [Build a Multi-User Chat with React and Directus Realtime](https://directus.io/docs/tutorials/projects/build-a-multi-user-chat-with-react-and-directus-realtime) or the [Vanilla JS version](https://directus.io/docs/tutorials/projects/build-a-multi-user-chat-with-javascript-and-directus-realtime)

> 1. **Workarounds:**

No workarounds needed 👍
