Build a Riddle via API
In this example you can see an easy demo of creating a riddle via the Riddle API.
Step 1
Create an API Access Token here: Access Token. Important: Delete this token after you finish testing here.
Step 2 Insert an access token, Title, Question and Answers and click on "Build Riddle". The Riddle will be created in your account and appears below.
Title
Question
Example Riddle JSON
{
"type": "Poll",
"publish": true,
"build": {
"title": "Favorite color poll",
"blocks": [
{
"title": "What's your favorite color?",
"type": "SingleChoice",
"items": [
"green",
"red",
"blue",
"yellow",
"purple"
]
}
],
"result": {
"title": "Thank you",
"description": "Thank you for participating in our poll!"
}
}
}
Example Symfony PHP controller
This is an example of how you can create a Riddle in PHP with Symfony framework using the Riddle API.
<?php
// src/Controller/RiddleApiController.php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
class ResponseDTO
{
public string $message;
public int $status;
public $data;
}
class RiddleDTO
{
public string $UUID;
public string $title;
public string $type;
}
class RiddleApiController extends AbstractController
{
#[Route('/api/riddle-builder', name: 'app_riddle_builder', methods: ['POST'])]
public function buildRiddle(Request $request, HttpClientInterface $httpClient, SerializerInterface $serializer): JsonResponse
{
// read the access token from the request json body post
$data = json_decode($request->getContent(), true);
$riddleAccessToken = $data['riddleAccessToken'] ?? null;
if ($riddleAccessToken === null) {
return new JsonResponse(['message' => 'Missing riddleAccessToken'], 400);
}
$riddleData = $data['riddleData'] ?? null;
if ($riddleData === null) {
return new JsonResponse(['message' => 'Missing riddleData'], 400);
}
$client = $httpClient->withOptions([
'base_uri' => 'https://www.riddle.com',
'headers' => [
'X-RIDDLE-BEARER' => 'Bearer ' . $riddleAccessToken,
]
]);
$response = $client->request(
'POST',
'/api/v3/riddle-builder',
[
'json' => $riddleData
]
);
$statusCode = $response->getStatusCode();
$responseDTO = new ResponseDTO();
$responseDTO->status = $statusCode;
if ($statusCode !== 200) {
$responseDTO->message = 'Error';
return new JsonResponse($responseDTO, $statusCode);
}
$content = $response->toArray();
$responseDTO->message = 'Success';
$riddleDTO= new RiddleDTO();
$riddleDTO->UUID = $content['data']['UUID'];
$riddleDTO->title = $content['data']['title'];
$riddleDTO->type = $content['data']['type'];
$responseDTO->data = $riddleDTO;
return new JsonResponse($responseDTO, $statusCode);
}
}