Guest API 401 when sending messages via custom web form

Problem
I’m building a custom web form to send messages without the Messenger widget. I get the guestId from the endpoint, but the POST to /api/v2/conversations/messaging/participants/messages returns a 401 Unauthorized. I’m using the guestId as the bearer token in the Authorization header. Is that wrong? Here’s the fetch call:

fetch(url, {
 headers: {
 'Authorization': `Bearer ${guestId}`
 }
});

What’s the correct auth method?