Use the OpenAI completions API in Supabase Edge Functions.

import 'xhr_polyfill'
import { serve } from 'std/server'
import { CreateCompletionRequest } from 'openai'

serve(async (req) => {
  const { query } = await req.json()

  const completionConfig: CreateCompletionRequest = {
    model: 'text-davinci-003',
    prompt: query,
    max_tokens: 256,
    temperature: 0,
    stream: true,

  return fetch('https://api.openai.com/v1/completions', {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${Deno.env.get('OPENAI_API_KEY')}`,
      'Content-Type': 'application/json',
    body: JSON.stringify(completionConfig),

Run locally#

1supabase functions serve --env-file ./supabase/.env.local --no-verify-jwt

Use cURL or Postman to make a POST request to http://localhost:54321/functions/v1/openai.

1curl -i --location --request POST http://localhost:54321/functions/v1/openai \
2  --header 'Content-Type: application/json' \
3  --data '{"query":"What is Supabase?"}'


1supabase functions deploy --no-verify-jwt openai
2supabase secrets set --env-file ./supabase/.env.local

Go deeper#

If you're interesting in learning how to use this to build your own ChatGPT, read the blog post and check out the video:

Need some help?

Not to worry, our specialist engineers are here to help. Submit a support ticket through the Dashboard.