• Townie
    AI
  • Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
sunnyatlightswitch

sunnyatlightswitch

send-transcripts

Public
Like
send-transcripts
Home
Code
2
README.md
H
main.tsx
Branches
1
Pull requests
Remixes
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
6/23/2025
Viewing readonly version of main branch: v64
View latest version
README.md

Transcript Submission API

A simple API endpoint that receives transcript text, emails it to configured recipients, and saves it to a Supabase database.

Recipients

The API sends emails directly to:

  • sunny@getlightswitch.com
  • monica@getlightswitch.com

Features

  • Send transcript content via email to multiple recipients
  • Save all transcripts to Supabase database for persistence
  • Automatic timestamping of submissions
  • HTML and plain text email formats
  • Input validation and error handling
  • Email delivery confirmation
  • Database storage with error handling (email delivery continues even if database fails)

Configuration

The email recipients are configured in the code:

const EMAIL_RECIPIENTS = [ "sunny@getlightswitch.com", "monica@getlightswitch.com" ];

API Endpoint

POST /api/submit

Submit transcript content via email to all configured recipients and save to database.

Request Body:

{ "text": "Your transcript content here" }

Response:

{ "success": true, "message": "Message sent successfully to 2 recipients and saved to database", "recipients": ["sunny@getlightswitch.com", "monica@getlightswitch.com"], "timestamp": "2024-01-01T12:00:00.000Z" }

Email Format

Each email includes:

  • Subject: "Text Submission - [timestamp]"
  • HTML version: Formatted with styling and structure
  • Plain text version: Simple text format
  • Timestamp: When the submission was received
  • Content: The submitted transcript text (preserves formatting)

Usage Example

Send transcript using curl:

curl -X POST https://your-val-url/api/submit \ -H "Content-Type: application/json" \ -d '{"text": "This is my transcript content"}'

Error Handling

The API returns appropriate HTTP status codes:

  • 200: Success (email sent and saved to database)
  • 400: Bad request (missing or invalid text)
  • 500: Server error (email delivery failed)

All error responses include an error field with a descriptive message.

Setup Instructions

  1. Update email recipients in the code (replace the example emails)
  2. Set up Supabase database with the required table structure (see Database Storage section)
  3. Configure environment variable SUPABASE_SERVICE_KEY (optional - falls back to hardcoded key)
  4. Test the API with a sample message
  5. Check recipient inboxes to confirm delivery
  6. Verify database entries in Supabase dashboard

Database Storage

All transcripts are automatically saved to a Supabase database in the transcripts table with the following information:

  • Body: The submitted transcript text content
  • Email: Placeholder email field (set to 'transcript@api.submission')
  • ID: UUID primary key (automatically generated)
  • Created At: Timestamp of submission (automatically set by database)
  • Updated At: Timestamp of last update (automatically set by database)

The database table structure:

CREATE TABLE transcripts ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT NOT NULL, body TEXT, created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() );

Database Configuration

The API uses the following Supabase configuration:

  • Project ID: ffilnpatwtlzjrfbmvxk
  • Service Role Key: Configured via environment variable SUPABASE_SERVICE_KEY

Error Handling

If the database save fails, the email delivery will still succeed. The API prioritizes email delivery over database storage to ensure critical notifications are not missed.

Email Delivery

  • Emails are sent using Val Town's built-in email service
  • All configured recipients receive the same message simultaneously
  • Delivery is typically instant
  • Failed deliveries will return a 500 error
FeaturesVersion controlCode intelligenceCLI
Use cases
TeamsAI agentsSlackGTM
ExploreDocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.