Thank you for the answer above. Based on it, I created the following function. This is both a working example of how to call rest apis, and a working example of how to call the openAI Chat api. It remains unclear to me why we need to use matlab.net and why webwrite doesn't work, given that this would apepar to be webrite's function.
function [result,tokens] = openAIChat(content)
%openAIChat Call openAI REST API for chat completions
% Detailed explanation goes here
tic
import matlab.net.*
import matlab.net.http.*
% Define the API endpoint Davinci
api_endpoint = "https://api.openai.com/v1/chat/completions";
% Define the API key from https://beta.openai.com/account/api-keys
api_key = "xxxxxxx";
data = jsondecode('{"model":"gpt-3.5-turbo","messages":[{"role":"system","content":"You are a helpful assistant."},{"role":"user","content":"What is my birthday?"}]}');
data.messages(2).content = content;
% Define the headers for the API request
headers = matlab.net.http.HeaderField('Content-Type', 'application/json');
headers(2) = matlab.net.http.HeaderField('Authorization', 'Bearer ' + api_key);
% Define the request message
request = matlab.net.http.RequestMessage('post',headers,data);
% Send the request and store the response
response = send(request, URI(api_endpoint));
% Extract the response text
result = response.Body.Data.choices.message.content;
tokens = response.Body.Data.usage;
%disp(result);
end