How to Check Environment Variables (JSON Format)
Method 1: Using the Test Script (Easiest)
Run this command:
python test_env.json.py
Example Output:
{
"status": "ok",
"variables": {
"QUIZ_SECRET": {
"set": true,
"length": 8,
"preview": "Easy...Quiz"
},
"OPENAI_API_KEY": {
"set": true,
"length": 200,
"preview": "sk-proj...4UA",
"valid_format": true
},
"PORT": {
"set": true,
"value": "8000"
}
},
"ready": true,
"llm_enabled": true,
"message": "Ready to run"
}
Method 2: Using the API Endpoint
Step 1: Start the Server
python -m app.main
Step 2: Check Environment Variables
Using curl:
curl http://localhost:8000/env-check
Using PowerShell:
Invoke-RestMethod -Uri http://localhost:8000/env-check -Method Get | ConvertTo-Json
Using Python:
import requests
response = requests.get("http://localhost:8000/env-check")
print(response.json())
Example JSON Response:
{
"status": "ok",
"variables": {
"QUIZ_SECRET": {
"set": true,
"length": 8,
"preview": "Easy...Quiz"
},
"OPENAI_API_KEY": {
"set": true,
"length": 200,
"preview": "sk-proj...4UA",
"valid_format": true
},
"PORT": {
"set": true,
"value": "8000"
}
},
"ready": true,
"llm_enabled": true
}
Method 3: Test the Full API
Health Check
curl http://localhost:8000/health
Response:
{
"status": "healthy"
}
Test Quiz Endpoint (with wrong secret - should return 403)
curl -X POST http://localhost:8000/solve \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
"secret": "wrong_secret",
"url": "https://example.com"
}'
Expected Response (403):
{
"detail": {
"error": "forbidden"
}
}
Test Quiz Endpoint (with correct secret)
curl -X POST http://localhost:8000/solve \
-H "Content-Type: application/json" \
-d '{
"email": "test@example.com",
"secret": "EasyQuiz",
"url": "https://example.com/quiz"
}'
Method 4: Quick PowerShell Test
# Check variables directly
$env:QUIZ_SECRET
$env:OPENAI_API_KEY
# Test with API (if server is running)
$response = Invoke-RestMethod -Uri http://localhost:8000/env-check
$response | ConvertTo-Json -Depth 10
JSON Response Fields Explained
| Field | Description |
|---|---|
status |
Always "ok" if script runs |
variables.QUIZ_SECRET.set |
true if QUIZ_SECRET is set |
variables.QUIZ_SECRET.length |
Length of the secret |
variables.QUIZ_SECRET.preview |
Masked preview (first 4 + last 4 chars) |
variables.OPENAI_API_KEY.set |
true if API key is set |
variables.OPENAI_API_KEY.valid_format |
true if key starts with "sk-" |
ready |
true if QUIZ_SECRET is set (required) |
llm_enabled |
true if OPENAI_API_KEY is set (optional) |
message |
Human-readable status message |
Quick Test Commands
All-in-One Test (PowerShell)
# 1. Check variables
python test_env.json.py
# 2. Start server (in another terminal)
python -m app.main
# 3. Test API (in another terminal)
Invoke-RestMethod -Uri http://localhost:8000/env-check | ConvertTo-Json
All-in-One Test (Bash/Linux)
# 1. Check variables
python test_env.json.py
# 2. Start server (in another terminal)
python -m app.main
# 3. Test API (in another terminal)
curl http://localhost:8000/env-check | python -m json.tool
Expected Results
✅ Everything Working:
{
"ready": true,
"llm_enabled": true,
"variables": {
"QUIZ_SECRET": { "set": true },
"OPENAI_API_KEY": { "set": true, "valid_format": true }
}
}
⚠️ Missing QUIZ_SECRET:
{
"ready": false,
"llm_enabled": true,
"variables": {
"QUIZ_SECRET": { "set": false },
"OPENAI_API_KEY": { "set": true }
},
"message": "QUIZ_SECRET is required"
}
⚠️ Missing OPENAI_API_KEY (still works, but no LLM):
{
"ready": true,
"llm_enabled": false,
"variables": {
"QUIZ_SECRET": { "set": true },
"OPENAI_API_KEY": { "set": false }
}
}