Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
curl --request POST \
--url https://quizquail.com/api/v1/themes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Midnight Neon",
"primaryColor": "#3B82F6",
"secondaryColor": "#6366F1",
"backgroundColor": "#0A0F1C",
"textColor": "#F1F5F9",
"accentColor": "#38BDF8",
"fontFamily": "Inter",
"backgroundImageUrl": "<string>",
"isPublic": false,
"soundPack": "default",
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": true,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": false,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
}
}
'import requests
url = "https://quizquail.com/api/v1/themes"
payload = {
"name": "Midnight Neon",
"primaryColor": "#3B82F6",
"secondaryColor": "#6366F1",
"backgroundColor": "#0A0F1C",
"textColor": "#F1F5F9",
"accentColor": "#38BDF8",
"fontFamily": "Inter",
"backgroundImageUrl": "<string>",
"isPublic": False,
"soundPack": "default",
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": True,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": False,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Midnight Neon',
primaryColor: '#3B82F6',
secondaryColor: '#6366F1',
backgroundColor: '#0A0F1C',
textColor: '#F1F5F9',
accentColor: '#38BDF8',
fontFamily: 'Inter',
backgroundImageUrl: '<string>',
isPublic: false,
soundPack: 'default',
effects: {
backgroundImageOpacity: 0.4,
backgroundStyle: 'blobs',
backgroundBlobCount: 3,
backgroundBlobOpacity: 0.24,
backgroundAnimationSpeed: 1,
backgroundGradientIntensity: 0.13,
backgroundVignetteIntensity: 0.7,
gradientAngle: 135,
gradientAnimation: true,
backgroundPattern: 'none',
backgroundPatternOpacity: 0.12,
backgroundPatternScale: 1,
particleStyle: 'none',
particleDensity: 0.3,
particleSpeed: 1,
particleColor: 'theme',
optionCardVariant: 'standard',
optionCardOpacity: 0.33,
optionStripeWidth: 4,
titleLetterSpacing: '-0.02em',
textStyle: 'solid',
titleTextStyle: 'solid',
textShadowStyle: 'subtle',
optionFontWeight: 400,
frameStyle: 'none',
frameColor: '#FFFFFF',
frameOpacity: 0.5,
introRingCount: 3,
introParticleCount: 8,
outroConfettiCount: 12,
outroBurstCount: 3,
celebrationStyle: 'pulse',
celebrationIntensity: 0.7,
correctAnswerGlowSize: 30,
revealSuspenseFrames: 45,
revealDimIntensity: 0.3,
urgencyStyle: 'vignette',
urgencyThreshold: 3,
urgencyColor: '#EF4444',
transitionStyle: 'fade',
grainOverlay: 'none',
grainStyle: 'film',
audioReactive: false,
audioReactiveIntensity: 0.5,
audioReactiveBpm: 120
}
})
};
fetch('https://quizquail.com/api/v1/themes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://quizquail.com/api/v1/themes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Midnight Neon',
'primaryColor' => '#3B82F6',
'secondaryColor' => '#6366F1',
'backgroundColor' => '#0A0F1C',
'textColor' => '#F1F5F9',
'accentColor' => '#38BDF8',
'fontFamily' => 'Inter',
'backgroundImageUrl' => '<string>',
'isPublic' => false,
'soundPack' => 'default',
'effects' => [
'backgroundImageOpacity' => 0.4,
'backgroundStyle' => 'blobs',
'backgroundBlobCount' => 3,
'backgroundBlobOpacity' => 0.24,
'backgroundAnimationSpeed' => 1,
'backgroundGradientIntensity' => 0.13,
'backgroundVignetteIntensity' => 0.7,
'gradientAngle' => 135,
'gradientAnimation' => true,
'backgroundPattern' => 'none',
'backgroundPatternOpacity' => 0.12,
'backgroundPatternScale' => 1,
'particleStyle' => 'none',
'particleDensity' => 0.3,
'particleSpeed' => 1,
'particleColor' => 'theme',
'optionCardVariant' => 'standard',
'optionCardOpacity' => 0.33,
'optionStripeWidth' => 4,
'titleLetterSpacing' => '-0.02em',
'textStyle' => 'solid',
'titleTextStyle' => 'solid',
'textShadowStyle' => 'subtle',
'optionFontWeight' => 400,
'frameStyle' => 'none',
'frameColor' => '#FFFFFF',
'frameOpacity' => 0.5,
'introRingCount' => 3,
'introParticleCount' => 8,
'outroConfettiCount' => 12,
'outroBurstCount' => 3,
'celebrationStyle' => 'pulse',
'celebrationIntensity' => 0.7,
'correctAnswerGlowSize' => 30,
'revealSuspenseFrames' => 45,
'revealDimIntensity' => 0.3,
'urgencyStyle' => 'vignette',
'urgencyThreshold' => 3,
'urgencyColor' => '#EF4444',
'transitionStyle' => 'fade',
'grainOverlay' => 'none',
'grainStyle' => 'film',
'audioReactive' => false,
'audioReactiveIntensity' => 0.5,
'audioReactiveBpm' => 120
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://quizquail.com/api/v1/themes"
payload := strings.NewReader("{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://quizquail.com/api/v1/themes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://quizquail.com/api/v1/themes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"primaryColor": "<string>",
"secondaryColor": "<string>",
"backgroundColor": "<string>",
"textColor": "<string>",
"accentColor": "<string>",
"fontFamily": "<string>",
"backgroundImageUrl": "<string>",
"isPublic": true,
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": true,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": false,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
},
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"soundPack": "<unknown>"
}
}{
"type": "https://quizquail.com/problems/validation-error",
"title": "Validation Error",
"status": 400,
"detail": "Request validation failed",
"instance": "<string>",
"errors": [
{
"field": "title",
"message": "Title is required",
"code": "too_small"
}
]
}Create a new custom theme with colors, font, sound pack, and visual effects.
curl --request POST \
--url https://quizquail.com/api/v1/themes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Midnight Neon",
"primaryColor": "#3B82F6",
"secondaryColor": "#6366F1",
"backgroundColor": "#0A0F1C",
"textColor": "#F1F5F9",
"accentColor": "#38BDF8",
"fontFamily": "Inter",
"backgroundImageUrl": "<string>",
"isPublic": false,
"soundPack": "default",
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": true,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": false,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
}
}
'import requests
url = "https://quizquail.com/api/v1/themes"
payload = {
"name": "Midnight Neon",
"primaryColor": "#3B82F6",
"secondaryColor": "#6366F1",
"backgroundColor": "#0A0F1C",
"textColor": "#F1F5F9",
"accentColor": "#38BDF8",
"fontFamily": "Inter",
"backgroundImageUrl": "<string>",
"isPublic": False,
"soundPack": "default",
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": True,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": False,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Midnight Neon',
primaryColor: '#3B82F6',
secondaryColor: '#6366F1',
backgroundColor: '#0A0F1C',
textColor: '#F1F5F9',
accentColor: '#38BDF8',
fontFamily: 'Inter',
backgroundImageUrl: '<string>',
isPublic: false,
soundPack: 'default',
effects: {
backgroundImageOpacity: 0.4,
backgroundStyle: 'blobs',
backgroundBlobCount: 3,
backgroundBlobOpacity: 0.24,
backgroundAnimationSpeed: 1,
backgroundGradientIntensity: 0.13,
backgroundVignetteIntensity: 0.7,
gradientAngle: 135,
gradientAnimation: true,
backgroundPattern: 'none',
backgroundPatternOpacity: 0.12,
backgroundPatternScale: 1,
particleStyle: 'none',
particleDensity: 0.3,
particleSpeed: 1,
particleColor: 'theme',
optionCardVariant: 'standard',
optionCardOpacity: 0.33,
optionStripeWidth: 4,
titleLetterSpacing: '-0.02em',
textStyle: 'solid',
titleTextStyle: 'solid',
textShadowStyle: 'subtle',
optionFontWeight: 400,
frameStyle: 'none',
frameColor: '#FFFFFF',
frameOpacity: 0.5,
introRingCount: 3,
introParticleCount: 8,
outroConfettiCount: 12,
outroBurstCount: 3,
celebrationStyle: 'pulse',
celebrationIntensity: 0.7,
correctAnswerGlowSize: 30,
revealSuspenseFrames: 45,
revealDimIntensity: 0.3,
urgencyStyle: 'vignette',
urgencyThreshold: 3,
urgencyColor: '#EF4444',
transitionStyle: 'fade',
grainOverlay: 'none',
grainStyle: 'film',
audioReactive: false,
audioReactiveIntensity: 0.5,
audioReactiveBpm: 120
}
})
};
fetch('https://quizquail.com/api/v1/themes', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://quizquail.com/api/v1/themes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Midnight Neon',
'primaryColor' => '#3B82F6',
'secondaryColor' => '#6366F1',
'backgroundColor' => '#0A0F1C',
'textColor' => '#F1F5F9',
'accentColor' => '#38BDF8',
'fontFamily' => 'Inter',
'backgroundImageUrl' => '<string>',
'isPublic' => false,
'soundPack' => 'default',
'effects' => [
'backgroundImageOpacity' => 0.4,
'backgroundStyle' => 'blobs',
'backgroundBlobCount' => 3,
'backgroundBlobOpacity' => 0.24,
'backgroundAnimationSpeed' => 1,
'backgroundGradientIntensity' => 0.13,
'backgroundVignetteIntensity' => 0.7,
'gradientAngle' => 135,
'gradientAnimation' => true,
'backgroundPattern' => 'none',
'backgroundPatternOpacity' => 0.12,
'backgroundPatternScale' => 1,
'particleStyle' => 'none',
'particleDensity' => 0.3,
'particleSpeed' => 1,
'particleColor' => 'theme',
'optionCardVariant' => 'standard',
'optionCardOpacity' => 0.33,
'optionStripeWidth' => 4,
'titleLetterSpacing' => '-0.02em',
'textStyle' => 'solid',
'titleTextStyle' => 'solid',
'textShadowStyle' => 'subtle',
'optionFontWeight' => 400,
'frameStyle' => 'none',
'frameColor' => '#FFFFFF',
'frameOpacity' => 0.5,
'introRingCount' => 3,
'introParticleCount' => 8,
'outroConfettiCount' => 12,
'outroBurstCount' => 3,
'celebrationStyle' => 'pulse',
'celebrationIntensity' => 0.7,
'correctAnswerGlowSize' => 30,
'revealSuspenseFrames' => 45,
'revealDimIntensity' => 0.3,
'urgencyStyle' => 'vignette',
'urgencyThreshold' => 3,
'urgencyColor' => '#EF4444',
'transitionStyle' => 'fade',
'grainOverlay' => 'none',
'grainStyle' => 'film',
'audioReactive' => false,
'audioReactiveIntensity' => 0.5,
'audioReactiveBpm' => 120
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://quizquail.com/api/v1/themes"
payload := strings.NewReader("{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://quizquail.com/api/v1/themes")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://quizquail.com/api/v1/themes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Midnight Neon\",\n \"primaryColor\": \"#3B82F6\",\n \"secondaryColor\": \"#6366F1\",\n \"backgroundColor\": \"#0A0F1C\",\n \"textColor\": \"#F1F5F9\",\n \"accentColor\": \"#38BDF8\",\n \"fontFamily\": \"Inter\",\n \"backgroundImageUrl\": \"<string>\",\n \"isPublic\": false,\n \"soundPack\": \"default\",\n \"effects\": {\n \"backgroundImageOpacity\": 0.4,\n \"backgroundStyle\": \"blobs\",\n \"backgroundBlobCount\": 3,\n \"backgroundBlobOpacity\": 0.24,\n \"backgroundAnimationSpeed\": 1,\n \"backgroundGradientIntensity\": 0.13,\n \"backgroundVignetteIntensity\": 0.7,\n \"gradientAngle\": 135,\n \"gradientAnimation\": true,\n \"backgroundPattern\": \"none\",\n \"backgroundPatternOpacity\": 0.12,\n \"backgroundPatternScale\": 1,\n \"particleStyle\": \"none\",\n \"particleDensity\": 0.3,\n \"particleSpeed\": 1,\n \"particleColor\": \"theme\",\n \"optionCardVariant\": \"standard\",\n \"optionCardOpacity\": 0.33,\n \"optionStripeWidth\": 4,\n \"titleLetterSpacing\": \"-0.02em\",\n \"textStyle\": \"solid\",\n \"titleTextStyle\": \"solid\",\n \"textShadowStyle\": \"subtle\",\n \"optionFontWeight\": 400,\n \"frameStyle\": \"none\",\n \"frameColor\": \"#FFFFFF\",\n \"frameOpacity\": 0.5,\n \"introRingCount\": 3,\n \"introParticleCount\": 8,\n \"outroConfettiCount\": 12,\n \"outroBurstCount\": 3,\n \"celebrationStyle\": \"pulse\",\n \"celebrationIntensity\": 0.7,\n \"correctAnswerGlowSize\": 30,\n \"revealSuspenseFrames\": 45,\n \"revealDimIntensity\": 0.3,\n \"urgencyStyle\": \"vignette\",\n \"urgencyThreshold\": 3,\n \"urgencyColor\": \"#EF4444\",\n \"transitionStyle\": \"fade\",\n \"grainOverlay\": \"none\",\n \"grainStyle\": \"film\",\n \"audioReactive\": false,\n \"audioReactiveIntensity\": 0.5,\n \"audioReactiveBpm\": 120\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"primaryColor": "<string>",
"secondaryColor": "<string>",
"backgroundColor": "<string>",
"textColor": "<string>",
"accentColor": "<string>",
"fontFamily": "<string>",
"backgroundImageUrl": "<string>",
"isPublic": true,
"effects": {
"backgroundImageOpacity": 0.4,
"backgroundStyle": "blobs",
"backgroundBlobCount": 3,
"backgroundBlobOpacity": 0.24,
"backgroundAnimationSpeed": 1,
"backgroundGradientIntensity": 0.13,
"backgroundVignetteIntensity": 0.7,
"gradientAngle": 135,
"gradientAnimation": true,
"backgroundPattern": "none",
"backgroundPatternOpacity": 0.12,
"backgroundPatternScale": 1,
"particleStyle": "none",
"particleDensity": 0.3,
"particleSpeed": 1,
"particleColor": "theme",
"optionCardVariant": "standard",
"optionCardOpacity": 0.33,
"optionStripeWidth": 4,
"titleLetterSpacing": "-0.02em",
"textStyle": "solid",
"titleTextStyle": "solid",
"textShadowStyle": "subtle",
"optionFontWeight": 400,
"frameStyle": "none",
"frameColor": "#FFFFFF",
"frameOpacity": 0.5,
"introRingCount": 3,
"introParticleCount": 8,
"outroConfettiCount": 12,
"outroBurstCount": 3,
"celebrationStyle": "pulse",
"celebrationIntensity": 0.7,
"correctAnswerGlowSize": 30,
"revealSuspenseFrames": 45,
"revealDimIntensity": 0.3,
"urgencyStyle": "vignette",
"urgencyThreshold": 3,
"urgencyColor": "#EF4444",
"transitionStyle": "fade",
"grainOverlay": "none",
"grainStyle": "film",
"audioReactive": false,
"audioReactiveIntensity": 0.5,
"audioReactiveBpm": 120
},
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"soundPack": "<unknown>"
}
}{
"type": "https://quizquail.com/problems/validation-error",
"title": "Validation Error",
"status": 400,
"detail": "Request validation failed",
"instance": "<string>",
"errors": [
{
"field": "title",
"message": "Title is required",
"code": "too_small"
}
]
}API key authentication. Prefix your key with Bearer in the Authorization header.
Keys follow the format qq_... and can be scoped to specific permissions.
1 - 100"Midnight Neon"
^#[0-9a-fA-F]{6}$^#[0-9a-fA-F]{6}$^#[0-9a-fA-F]{6}$^#[0-9a-fA-F]{6}$^#[0-9a-fA-F]{6}$default, none Visual effects configuration — all 42 fields are optional with sensible defaults
Show child attributes
Created theme
Show child attributes
Was this page helpful?