Μετάβαση στο περιεχόμενο
Βλέπεις σε προεπισκόπηση το νέο Puzzel.org Πίσω στον τρέχοντα ιστότοπο
API για προγραμματιστές

Δημιούργησε δραστηριότητες από το δικό σου σύστημα

Ένα POST ανά τύπο δραστηριότητας. Στέλνεις το περιεχόμενό σου σε JSON και παίρνεις πίσω μια δραστηριότητα στον λογαριασμό σου στο Puzzel.org και ένα URL που μπορείς να δώσεις στους παίκτες ή να βάλεις σε ένα iframe.

Βασικό URL
https://puzzel.org/api/public/v1
Ταυτοποίηση
Κλειδί + email στο σώμα
Endpoints
20 τύποι δραστηριοτήτων
Όριο
10 δραστηριότητες την ημέρα

Το πρώτο σου αίτημα

Δεν χρειάζεται εγκατάσταση ούτε handshake: στέλνεις ένα σώμα JSON με το κλειδί σου, το email σου και το περιεχόμενό σου. Η απάντηση περιέχει το κλειδί της νέας δραστηριότητας και το URL στο οποίο παίζεται.

POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Crossword",
  "language": "gr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Κάθε παράδειγμα σε αυτή τη σελίδα είναι ένα πλήρες αίτημα που τρέχει όπως είναι. Βάλε το δικό σου κλειδί και το δικό σου περιεχόμενο και δουλεύει αμέσως.

Έλεγχος ταυτότητας

Δεν υπάρχουν headers ούτε bearer token. Και τα δύο διαπιστευτήρια ταξιδεύουν μέσα στο σώμα JSON κάθε αιτήματος, και το κλειδί γίνεται δεκτό μόνο για τον λογαριασμό στον οποίο ανήκει αυτό το email.

ΠεδίοΤύποςΤι κάνει
account_api_key
υποχρεωτικό
string
stringΤο κλειδί API του λογαριασμού σου. Πηγαίνει στο σώμα, όχι σε header.
email
υποχρεωτικό
string
stringΗ διεύθυνση με την οποία συνδέεται ο λογαριασμός σου στο Puzzel.org. Το κλειδί ισχύει μόνο μαζί με αυτήν.

Το κλειδί σου βρίσκεται στην ενότητα λογαριασμού του πίνακα ελέγχου, πίσω από το κουμπί Εμφάνιση.

Σύνδεση

Τα κλειδιά API δίνονται όταν ξεκινά μια συνδρομή, οπότε ένας δωρεάν λογαριασμός δεν έχει ακόμη.

Δες τα προγράμματα

Φύλαξε το κλειδί σαν κωδικό πρόσβασης. Δημιουργεί και αντικαθιστά δραστηριότητες στον λογαριασμό σου, γι' αυτό κράτησέ το στον server και μακριά από οτιδήποτε μπορεί να διαβάσει ένας περιηγητής.

Το σώμα του αιτήματος

Κάθε endpoint δέχεται τα ίδια πέντε πεδία. Αυτό που αλλάζει είναι το πεδίο περιεχομένου από κάτω: τα περισσότερα δέχονται έναν πίνακα items, μερικά μία πρόταση ή μία εικόνα, και το Sudoku δεν δέχεται απολύτως τίποτα.

ΠεδίοΤύποςΤι κάνει
account_api_key
υποχρεωτικό
string
stringΤο κλειδί API του λογαριασμού σου. Πηγαίνει στο σώμα, όχι σε header.
email
υποχρεωτικό
string
stringΗ διεύθυνση με την οποία συνδέεται ο λογαριασμός σου στο Puzzel.org. Το κλειδί ισχύει μόνο μαζί με αυτήν.
title
προαιρετικό
string
stringΤο όνομα που παίρνει η δραστηριότητα στον πίνακα ελέγχου σου. Άφησέ το κενό και το endpoint χρησιμοποιεί το δικό του εφεδρικό όνομα.
language
προαιρετικό
string
stringΚαθορίζει μόνο τη γλώσσα στο URL που παίρνεις πίσω — δεν μεταφράζει τίποτα από όσα στέλνεις. Το κρυπτόλεξο το διαβάζει επίσης για να αλλάξει τα γράμματα γεμίσματος σε αραβικά όταν είναι "ar".
Προεπιλογή: "en"
activity_key
προαιρετικό
string
stringΆφησέ το κενό για να δημιουργηθεί νέα δραστηριότητα. Δώσε το κλειδί μιας που ήδη σου ανήκει και τότε ξαναδημιουργείται εκείνη.

Το settings είναι ένα αντικείμενο με επιλογές ανά endpoint. Ποιες διαβάζει το κάθε endpoint αναφέρεται μαζί του παρακάτω· οτιδήποτε άλλο βάλεις εκεί αγνοείται.

Τι παίρνεις πίσω

Μια επιτυχημένη κλήση απαντά 200 με το κλειδί της νέας δραστηριότητας και το URL στο οποίο παίζεται. Οτιδήποτε άλλο απαντά με το success σε false και ένα μόνο string σφάλματος.

Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}
Αποτυχία
{
  "success": false,
  "error": "Invalid Email or API Key"
}

Το url που παίρνεις πίσω είναι η προβολή ενσωμάτωσης. Άλλαξε το embed σε play για να ανοίξει σε ολόκληρη τη σελίδα ή σε build για να ανοίξει στον επεξεργαστή — το κλειδί μετά το p= μένει το ίδιο.

Δημιουργία ή ενημέρωση

Στέλνεις activity_key και η δραστηριότητα πίσω από αυτό ξαναδημιουργείται επιτόπου: το περιεχόμενό της αντικαθίσταται, το όνομα και η σήμανση έκδοσης ανανεώνονται και το ίδιο το κλειδί μένει το ίδιο — έτσι οι σύνδεσμοι και οι ενσωματώσεις που έχεις ήδη κοινοποιήσει συνεχίζουν να δουλεύουν. Τα αποτελέσματα, ο φάκελος στον οποίο βρίσκεται και κάθε ρύθμιση που δεν γράφει το ίδιο το endpoint μένουν όπως ήταν.

activity_key
{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "activity_key": "-Nq8sample_activity_key",
  "title": "Fruit crossword, week 2",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}
  • Το title εφαρμόζεται σε κάθε ενημέρωση, μαζί με την προεπιλογή του — άφησέ το κενό και η δραστηριότητα μετονομάζεται στο εφεδρικό όνομα εκείνου του endpoint.
  • Τα μπλοκ ρυθμίσεων που γράφει το ίδιο το endpoint ξαναγράφονται από την αρχή, οπότε μια ενημέρωση τα επαναφέρει κι αυτά στις τιμές που στέλνεις ή στις προεπιλογές του endpoint.
  • Μπορείς να ενημερώσεις μόνο δραστηριότητες που ανήκουν στον δικό σου λογαριασμό. Το κλειδί κάποιου άλλου απαντά 403.
  • Μια ενημέρωση κοστίζει όσο και μια δημιουργία: μία κλήση από το σημερινό όριο.

Όριο κλήσεων

10
10 δραστηριότητες ανά λογαριασμό την ημέρα

Κάθε επιτυχημένη κλήση μετράει, δημιουργίες και ενημερώσεις το ίδιο. Αν το ξεπεράσεις, το επόμενο αίτημα απαντά 429 μέχρι να μηδενιστεί ο μετρητής.

Ο μετρητής μηδενίζεται μία φορά την ημέρα από μια προγραμματισμένη εργασία, όχι με κυλιόμενο παράθυρο 24 ωρών.

Σφάλματα

Τα σφάλματα έρχονται πάντα ως JSON με τα ίδια δύο πεδία, ποτέ ως σελίδα HTML. Το string του σφάλματος είναι γραμμένο για να το διαβάσει άνθρωπος — ονομάζει το πεδίο ή το όριο που απέτυχε.

ΚατάστασηΤι σημαίνει
400
Bad Request
Κάτι στο σώμα λείπει, είναι λάθος διατυπωμένο ή εκτός ορίων. Το μήνυμα ονομάζει το πεδίο.
401
Unauthorized
Το email είναι άγνωστο ή το κλειδί δεν ανήκει σε αυτόν τον λογαριασμό.
403
Forbidden
Το activity_key που έστειλες ανήκει σε άλλον λογαριασμό.
429
Too Many Requests
Το σημερινό όριο εξαντλήθηκε. Μηδενίζεται μία φορά την ημέρα.
500
Server Error
Η γεννήτρια δεν μπόρεσε να δημιουργήσει γρίφο από αυτά που έστειλες — συνήθως πολύ λίγες λέξεις ή λέξεις που δεν ταιριάζουν μεταξύ τους.

Endpoints

Μία διαδρομή ανά τύπο δραστηριότητας, όλες POST, όλες κάτω από το ίδιο βασικό URL. Καθεμιά αναφέρει το περιεχόμενο που χρειάζεται, τις ρυθμίσεις που διαβάζει και ένα αίτημα που μπορείς να τρέξεις.

Λέξεις και γράμματα

Σταυρόλεξο

Πλέκει τις απαντήσεις σου σε ένα πλέγμα και αριθμεί τους ορισμούς για σένα.

#
POST /api/public/v1/crossword Τουλάχιστον 2 στο items
Περιεχόμενο

Ένας πίνακας λέξεων. Κάθε εγγραφή συνδυάζει την απάντηση με τον ορισμό που δείχνει προς αυτήν.

Πέφτει πίσω στο όνομα “Crossword API”

Καλό είναι να ξέρεις
  • Οι απαντήσεις με λιγότερους από δύο χαρακτήρες αφαιρούνται πριν δημιουργηθεί το πλέγμα, και πρέπει να μείνουν τουλάχιστον δύο.
  • Οι απαντήσεις μετατρέπονται σε κεφαλαία και η γεννήτρια έχει είκοσι προσπάθειες να τις τοποθετήσει. Αν δεν καταφέρει να τοποθετήσει ούτε μία λέξη, η κλήση απαντά 500.
Παράδειγμα αιτήματος
POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Crossword",
  "language": "gr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/crossword/embed?p=-Nq8sample_activity_key",
  "message": "Crossword created successfully"
}

Κρυπτόλεξο

Κρύβει τις λέξεις σου σε ένα πλέγμα γραμμάτων, στις κατευθύνσεις και στο σχήμα που διαλέγεις.

#
POST /api/public/v1/wordseeker Τουλάχιστον 2 στο items
Περιεχόμενο

Ένας πίνακας λέξεων. Το κείμενο του ορισμού γίνεται η λίστα λέξεων με την οποία δουλεύουν οι παίκτες.

Πέφτει πίσω στο όνομα “Wordseeker API”

Καλό είναι να ξέρεις
  • Οι απαντήσεις κάτω από δύο χαρακτήρες αφαιρούνται και κάθε απάντηση μετατρέπεται σε κεφαλαία πριν μπει στο πλέγμα.
  • Το πλέγμα γεμίζει με λατινικά γράμματα, εκτός αν το language είναι "ar", που αλλάζει το γέμισμα σε αραβικά.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
hidden_solution
προαιρετικό στο settings
string
stringΤα γράμματα που περισσεύουν σχηματίζουν αυτό. Αν το ορίσεις, η γεννήτρια τοποθετεί πρώτα τη λύση αντί να στριμώξει όσες περισσότερες λέξεις μπορεί.
directions
προαιρετικό στο settings
string[]
string[]Προς ποιες κατευθύνσεις επιτρέπεται να τρέχει μια λέξη. Άφησέ το κενό και οι λέξεις τρέχουν μόνο ανατολικά, νοτιοανατολικά και νότια.
Ένα από westeastnorthsouthnorthwestnortheastsouthwestsoutheast
Προεπιλογή: ["east", "southeast", "south"]
template
προαιρετικό στο settings
string
stringΚόβει το πλέγμα σε ένα σχήμα αντί να το αφήνει τετράγωνο.
Ένα από squarecirclecrossdiamondpyramidsmileystarcross_plus
Παράδειγμα αιτήματος
POST wordseeker
curl -X POST https://puzzel.org/api/public/v1/wordseeker \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wordseeker",
  "language": "gr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "FRUIT",
    "directions": [
      "east",
      "south",
      "southeast"
    ],
    "template": "square"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordseeker/embed?p=-Nq8sample_activity_key",
  "message": "Wordseeker created successfully"
}

Ακροστιχίδα

Στοιβάζει τις απαντήσεις σου ώστε μια στήλη να σχηματίζει μια κρυμμένη λέξη.

#
POST /api/public/v1/acrostic Τουλάχιστον 1 στο items
Περιεχόμενο

Ένας πίνακας λέξεων. Όλες μαζί πρέπει να δίνουν κάθε γράμμα της κρυμμένης λέξης.

Πέφτει πίσω στο όνομα “Acrostic API”

Καλό είναι να ξέρεις
  • Αν οι απαντήσεις δεν δίνουν τα γράμματα που χρειάζεται η λύση, η κλήση απαντά 500 αντί να αποθηκεύσει ένα μισοφτιαγμένο πλέγμα.
  • Η γεννήτρια αναδιατάσσει τις απαντήσεις σου για να δουλέψει η στήλη, οπότε η σειρά που στέλνεις δεν είναι η σειρά που βλέπουν οι παίκτες.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
hidden_solution
υποχρεωτικό στο settings
string
stringΗ λέξη που σχηματίζει η τονισμένη στήλη. Αυτό το endpoint δεν λειτουργεί χωρίς αυτήν.
Παράδειγμα αιτήματος
POST acrostic
curl -X POST https://puzzel.org/api/public/v1/acrostic \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Acrostic",
  "language": "gr",
  "items": [
    {
      "answer": "PEACH",
      "description": "Fuzzy skin, sweet flesh",
      "type": "text"
    },
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "PLUM"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/acrostic/embed?p=-Nq8sample_activity_key",
  "message": "Acrostic created successfully"
}

Ανακατεμένες λέξεις

api_e_word_scramble

#
POST /api/public/v1/word-scramble Τουλάχιστον 1 στο items
Περιεχόμενο

api_c_word_scramble

Πέφτει πίσω στο όνομα “Word Scramble API”

Καλό είναι να ξέρεις
  • Οι δραστηριότητες που δημιουργούνται μέσω του API έχουν πάντα ενεργή τη ρύθμιση ανακατέματος της σειράς, οπότε η σειρά που στέλνεις δεν είναι η σειρά που παίρνουν οι παίκτες.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
hidden_solution
προαιρετικό στο settings
string
stringΜια προαιρετική λέξη μπόνους που συμπληρώνουν οι παίκτες μόλις λυθούν τα υπόλοιπα.
Παράδειγμα αιτήματος
POST word-scramble
curl -X POST https://puzzel.org/api/public/v1/word-scramble \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Word Scramble",
  "language": "gr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    },
    {
      "answer": "CHERRY",
      "description": "A small red stone fruit",
      "type": "text"
    },
    {
      "answer": "MELON",
      "description": "Big, green outside, sweet inside",
      "type": "text"
    }
  ],
  "settings": {
    "hidden_solution": "FRUIT"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/word-scramble/embed?p=-Nq8sample_activity_key",
  "message": "Word Scramble created successfully"
}

Κρεμάλα

Μετατρέπει τις λέξεις ή τις φράσεις σου σε γύρους μαντέματος γραμμάτων.

#
POST /api/public/v1/hangman Τουλάχιστον 1 στο items
Περιεχόμενο

Ένας πίνακας λέξεων ή σύντομων φράσεων. Η ένδειξη είναι η υπόδειξη που βλέπουν οι παίκτες.

Πέφτει πίσω στο όνομα “Hangman API”

Παράδειγμα αιτήματος
POST hangman
curl -X POST https://puzzel.org/api/public/v1/hangman \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Hangman",
  "language": "gr",
  "items": [
    {
      "answer": "BANANA",
      "description": "A long yellow fruit",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/hangman/embed?p=-Nq8sample_activity_key",
  "message": "Hangman created successfully"
}

Wordle

Φτιάχνει ένα παιχνίδι μαντέματος λέξης από κάθε λέξη που στέλνεις.

#
POST /api/public/v1/wordle Τουλάχιστον 1 στο items
Περιεχόμενο

Ένας πίνακας λέξεων. Οι παίκτες παίρνουν έναν γύρο ανά λέξη.

Πέφτει πίσω στο όνομα “Wordle API”

Καλό είναι να ξέρεις
  • Δημιουργείται με ενεργή τη ρύθμιση ελέγχου ότι οι λέξεις που μαντεύονται είναι υπαρκτές. Απενεργοποίησέ την στον επεξεργαστή αν οι λέξεις σου είναι ονόματα ή επινοημένες.
Παράδειγμα αιτήματος
POST wordle
curl -X POST https://puzzel.org/api/public/v1/wordle \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wordle",
  "language": "gr",
  "items": [
    {
      "answer": "MELON",
      "description": "Sweet and green",
      "type": "text"
    },
    {
      "answer": "PEACH",
      "description": "Fuzzy and orange",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wordle/embed?p=-Nq8sample_activity_key",
  "message": "Wordle created successfully"
}

Εξάσκηση στην πληκτρολόγηση

api_e_typing_practice

#
POST /api/public/v1/typing-practice Τουλάχιστον 1 στο items
Περιεχόμενο

api_c_typing_practice

Πέφτει πίσω στο όνομα “Typing Practice API”

Παράδειγμα αιτήματος
POST typing-practice
curl -X POST https://puzzel.org/api/public/v1/typing-practice \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Typing Practice",
  "language": "gr",
  "items": [
    {
      "answer": "The quick brown fox jumps over the lazy dog",
      "description": "Every letter of the alphabet",
      "type": "text"
    },
    {
      "answer": "Pack my box with five dozen liquor jugs",
      "description": "Another pangram",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
  "message": "Typing Practice created successfully"
}

Τροχός της τύχης

api_e_wheel_of_fortune

#
POST /api/public/v1/wheel-of-fortune Τουλάχιστον 1 στο items
Περιεχόμενο

api_c_wheel_of_fortune

Πέφτει πίσω στο όνομα “Wheel of Fortune API”

Καλό είναι να ξέρεις
  • Δημιουργείται με την επιλογή “εμφάνιση του αποτελέσματος μόνο στον τροχό”, οπότε το αποτέλεσμα διαβάζεται πάνω στον τροχό αντί να ανακοινώνεται δίπλα του.
Παράδειγμα αιτήματος
POST wheel-of-fortune
curl -X POST https://puzzel.org/api/public/v1/wheel-of-fortune \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Wheel of Fortune",
  "language": "gr",
  "items": [
    {
      "answer": "Read a page aloud",
      "description": "Segment 1",
      "type": "text"
    },
    {
      "answer": "Name three fruits",
      "description": "Segment 2",
      "type": "text"
    },
    {
      "answer": "Spell it backwards",
      "description": "Segment 3",
      "type": "text"
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/wheel-of-fortune/embed?p=-Nq8sample_activity_key",
  "message": "Wheel of Fortune created successfully"
}
Κάρτες και ζευγάρια

Memory

Κάρτες με την όψη προς τα κάτω που γυρίζεις για να βρεις ζευγάρια.

#
POST /api/public/v1/memory Τουλάχιστον 2 στο items
Περιεχόμενο

Ένας πίνακας ζευγαριών. Κάθε ζευγάρι κρατά τις δύο κάρτες που πάνε μαζί.

Πέφτει πίσω στο όνομα “Memory Game API”

Καλό είναι να ξέρεις
  • Μια κάρτα είναι ένα αντικείμενο με ένα type και ένα value. Χρησιμοποίησε "text" για λέξεις ή "image", "audio", "youtube" ή "link" με ένα URL στο value, και πρόσθεσε alt για περιγραφή.
Παράδειγμα αιτήματος
POST memory
curl -X POST https://puzzel.org/api/public/v1/memory \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Memory Game",
  "language": "gr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/memory/embed?p=-Nq8sample_activity_key",
  "message": "Memory game created successfully"
}

Παιχνίδι αντιστοίχισης

api_e_matching_pairs

#
POST /api/public/v1/matching-pairs Τουλάχιστον 2 στο items
Περιεχόμενο

api_c_matching_pairs

Πέφτει πίσω στο όνομα “Matching Game API”

Καλό είναι να ξέρεις
  • Μια κάρτα είναι ένα αντικείμενο με ένα type και ένα value. Χρησιμοποίησε "text" για λέξεις ή "image", "audio", "youtube" ή "link" με ένα URL στο value, και πρόσθεσε alt για περιγραφή.
Παράδειγμα αιτήματος
POST matching-pairs
curl -X POST https://puzzel.org/api/public/v1/matching-pairs \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Matching Game",
  "language": "gr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/matching-pairs/embed?p=-Nq8sample_activity_key",
  "message": "Matching pairs game created successfully"
}

Κάρτες επανάληψης

api_e_flash_cards

#
POST /api/public/v1/flash-cards Τουλάχιστον 1 στο items
Περιεχόμενο

api_c_flash_cards

Πέφτει πίσω στο όνομα “Flash Cards API”

Καλό είναι να ξέρεις
  • Το endpoint αποθηκεύει όσες κάρτες κι αν στείλεις, γι' αυτό στείλε ακριβώς δύο ανά εγγραφή — πρώτα την μπροστινή, μετά την πίσω.
  • Μια κάρτα είναι ένα αντικείμενο με ένα type και ένα value. Χρησιμοποίησε "text" για λέξεις ή "image", "audio", "youtube" ή "link" με ένα URL στο value, και πρόσθεσε alt για περιγραφή.
Παράδειγμα αιτήματος
POST flash-cards
curl -X POST https://puzzel.org/api/public/v1/flash-cards \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Flash Cards",
  "language": "gr",
  "items": [
    {
      "cards": [
        {
          "type": "text",
          "value": "Apple"
        },
        {
          "type": "text",
          "value": "A red fruit"
        }
      ]
    },
    {
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "A yellow fruit"
        }
      ]
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/flash-cards/embed?p=-Nq8sample_activity_key",
  "message": "Flash Cards created successfully"
}

Κατηγοριοποίηση

Κάρτες που μπαίνουν στην κατηγορία όπου ανήκουν.

#
POST /api/public/v1/categorize Τουλάχιστον 2 στο items
Περιεχόμενο

Ένας πίνακας κατηγοριών, καθεμιά με ένα όνομα και τις κάρτες που ανήκουν σε αυτήν.

Πέφτει πίσω στο όνομα “Categorize Game API”

Καλό είναι να ξέρεις
  • Μια κατηγορία που στέλνεται χωρίς όνομα αποθηκεύεται ως “Untitled Category”, γι' αυτό στείλε πάντα ένα.
  • Μια κάρτα είναι ένα αντικείμενο με ένα type και ένα value. Χρησιμοποίησε "text" για λέξεις ή "image", "audio", "youtube" ή "link" με ένα URL στο value, και πρόσθεσε alt για περιγραφή.
Παράδειγμα αιτήματος
POST categorize
curl -X POST https://puzzel.org/api/public/v1/categorize \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Categorize Game",
  "language": "gr",
  "items": [
    {
      "name": "Red fruits",
      "cards": [
        {
          "type": "text",
          "value": "Strawberry"
        },
        {
          "type": "text",
          "value": "Cherry"
        }
      ]
    },
    {
      "name": "Yellow fruits",
      "cards": [
        {
          "type": "text",
          "value": "Banana"
        },
        {
          "type": "text",
          "value": "Lemon"
        }
      ]
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/categorize/embed?p=-Nq8sample_activity_key",
  "message": "Categorize game created successfully"
}

Αναδιάταξη

Μια ακολουθία που οι παίκτες πρέπει να βάλουν ξανά στη σωστή σειρά.

#
POST /api/public/v1/reorder Τουλάχιστον 1 στο items
Περιεχόμενο

Ένας πίνακας ακολουθιών. Καθεμιά κρατά τις κάρτες της στη σωστή σειρά.

Πέφτει πίσω στο όνομα “Reorder Game API”

Καλό είναι να ξέρεις
  • Η σειρά που στέλνεις αποθηκεύεται ως η σωστή σειρά — πρώτο το νούμερο ένα.
  • Μια κάρτα είναι ένα αντικείμενο με ένα type και ένα value. Χρησιμοποίησε "text" για λέξεις ή "image", "audio", "youtube" ή "link" με ένα URL στο value, και πρόσθεσε alt για περιγραφή.
Παράδειγμα αιτήματος
POST reorder
curl -X POST https://puzzel.org/api/public/v1/reorder \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Reorder Game",
  "language": "gr",
  "items": [
    {
      "name": "From seed to fruit",
      "cards": [
        {
          "type": "text",
          "value": "Plant the seed"
        },
        {
          "type": "text",
          "value": "Water it"
        },
        {
          "type": "text",
          "value": "Watch it grow"
        },
        {
          "type": "text",
          "value": "Pick the fruit"
        }
      ]
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/reorder/embed?p=-Nq8sample_activity_key",
  "message": "Reorder game created successfully"
}
Ερωτήσεις και απαντήσεις

Quiz

Ερωτήσεις πολλαπλής επιλογής και ανοιχτές ερωτήσεις, με βαθμολόγηση καθώς παίζουν οι παίκτες.

#
POST /api/public/v1/quiz Τουλάχιστον 1 στο items
Περιεχόμενο

Ένας πίνακας ερωτήσεων. Οι ερωτήσεις πολλαπλής επιλογής κρατούν τις απαντήσεις τους· οι ανοιχτές ερωτήσεις κρατούν την απάντηση που δέχεσαι.

Πέφτει πίσω στο όνομα “Quiz API”

Καλό είναι να ξέρεις
  • Το question_type είναι είτε "multiple_choice", όπου η σωστή επιλογή έχει isCorrect true, είτε "open_answer", που χρησιμοποιεί στη θέση του το correct_answer. Αν λείπει, θεωρείται πολλαπλής επιλογής.
  • Το endpoint του Quiz περνά τα settings κατευθείαν ως μπλοκ ρυθμίσεων της δραστηριότητας, οπότε δεν είναι μέρος για χαλαρές επιλογές — προσάρμοσε το Quiz στον επεξεργαστή μετά.
Παράδειγμα αιτήματος
POST quiz
curl -X POST https://puzzel.org/api/public/v1/quiz \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Quiz",
  "language": "gr",
  "items": [
    {
      "question_type": "multiple_choice",
      "description": "Which fruit is yellow?",
      "answers": [
        {
          "type": "text",
          "description": "Banana",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Cherry",
          "isCorrect": false
        }
      ]
    },
    {
      "question_type": "open_answer",
      "description": "What colour is a lemon?",
      "correct_answer": "Yellow",
      "explanation": "Lemons ripen from green to yellow."
    }
  ]
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/quiz/embed?p=-Nq8sample_activity_key",
  "message": "Quiz created successfully"
}

Επιτραπέζιο παιχνίδι

api_e_board_game

#
POST /api/public/v1/board-game Τουλάχιστον 1 στο items
Περιεχόμενο

api_c_board_game

Πέφτει πίσω στο όνομα “Board Game API”

Καλό είναι να ξέρεις
  • Το question_type είναι είτε "multiple_choice", όπου η σωστή επιλογή έχει isCorrect true, είτε "open_answer", που χρησιμοποιεί στη θέση του το correct_answer. Αν λείπει, θεωρείται πολλαπλής επιλογής.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
number_of_tiles
προαιρετικό στο settings
number
numberΠόσα τετράγωνα έχει το ταμπλό. Από 10 έως 75.
Προεπιλογή: 30
game_mode
προαιρετικό στο settings
string
stringΑν οι παίκτες τρέχουν προς τον τερματισμό ή μαζεύουν αντικείμενα στον δρόμο.
Ένα από race_to_finishcollect_items
Προεπιλογή: "race_to_finish"
Παράδειγμα αιτήματος
POST board-game
curl -X POST https://puzzel.org/api/public/v1/board-game \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Board Game",
  "language": "gr",
  "items": [
    {
      "question_type": "multiple_choice",
      "description": "Which fruit is yellow?",
      "answers": [
        {
          "type": "text",
          "description": "Banana",
          "isCorrect": true
        },
        {
          "type": "text",
          "description": "Cherry",
          "isCorrect": false
        }
      ]
    },
    {
      "question_type": "open_answer",
      "description": "What colour is a lemon?",
      "correct_answer": "Yellow",
      "explanation": "Lemons ripen from green to yellow."
    }
  ],
  "settings": {
    "number_of_tiles": 30,
    "game_mode": "race_to_finish"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
  "message": "Board Game created successfully"
}
Προτάσεις και αριθμοί

Κρυπτογράφημα

Μετατρέπει μια πρόταση σε κώδικα που σπάει χαρακτήρα προς χαρακτήρα.

#
POST /api/public/v1/cryptogram Δεν δέχεται items
Περιεχόμενο

Μία πρόταση, στο πεδίο sentence. Αυτό το endpoint δεν δέχεται items.

Πέφτει πίσω στο όνομα “Cryptogram API”

Καλό είναι να ξέρεις
  • Οτιδήποτε στείλεις στο items αγνοείται — ο γρίφος δημιουργείται μόνο από την πρόταση.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
sentence
υποχρεωτικό
string
stringΗ πρόταση που θα κρυπτογραφηθεί. Οι παίκτες την αποκωδικοποιούν χαρακτήρα προς χαρακτήρα.
helpers
προαιρετικό στο settings
string
stringΠοιοι χαρακτήρες δίνονται δωρεάν ως βοήθεια για την αρχή: κανένας, οι πιο συχνοί, τα φωνήεντα ή όσοι ορίσεις εσύ.
Ένα από nonemost_commonvowelscustom
Προεπιλογή: "none"
character_list
προαιρετικό στο settings
string
stringΤο αλφάβητο από το οποίο δημιουργείται ο κώδικας. Αν μείνει κενό, η κρυπτογράφηση διαλέγει μόνη της.
extra_letters
προαιρετικό στο settings
string
stringΟι χαρακτήρες που δίνονται όταν το helpers είναι "custom". Αγνοείται στις άλλες λειτουργίες βοήθειας.
hide_unused_characters
προαιρετικό στο settings
boolean
booleanΑφήνει έξω από το κλειδί τους χαρακτήρες που δεν χρησιμοποιεί πουθενά η πρόταση.
Προεπιλογή: false
Παράδειγμα αιτήματος
POST cryptogram
curl -X POST https://puzzel.org/api/public/v1/cryptogram \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Cryptogram",
  "language": "gr",
  "sentence": "An apple a day keeps the doctor away",
  "settings": {
    "helpers": "vowels",
    "hide_unused_characters": false
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/cryptogram/embed?p=-Nq8sample_activity_key",
  "message": "Cryptogram created successfully"
}

Άσκηση υπολογισμών

Κρύβει μια πρόταση πίσω από πράξεις — λύνεις την πράξη, αποκαλύπτεις το γράμμα.

#
POST /api/public/v1/calculation Δεν δέχεται items
Περιεχόμενο

Μία πρόταση, στο πεδίο sentence. Αυτό το endpoint δεν δέχεται items.

Πέφτει πίσω στο όνομα “Calculation Game API”

Καλό είναι να ξέρεις
  • Αν οι περιορισμοί είναι πολύ στενοί για να κωδικοποιηθεί η πρόταση, η κλήση απαντά 400 και σου ζητά να τους χαλαρώσεις, αντί να αποθηκεύσει έναν μισοτελειωμένο γρίφο.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
sentence
υποχρεωτικό
string
stringΗ πρόταση που αποκαλύπτουν οι παίκτες λύνοντας τις πράξεις.
difficulty_level
προαιρετικό στο settings
number
numberΤο μεγαλύτερο αποτέλεσμα που επιτρέπεται να έχει μια πράξη.
Ένα από 20501001000
Προεπιλογή: "100"
operators
προαιρετικό στο settings
string[]
string[]Ποιες πράξεις μπορούν να εμφανιστούν. Το x είναι πολλαπλασιασμός, το : διαίρεση.
Ένα από +-x:
Προεπιλογή: ["+", "-", "x", ":"]
max_operations
προαιρετικό στο settings
number
numberΠόσες πράξεις μπορεί να συνδυάσει μία άσκηση.
Ένα από 123
Προεπιλογή: 1
number_difficulty
προαιρετικό στο settings
number
numberΠεριορίζει τους μεμονωμένους αριθμούς μέσα σε μια πράξη. Από 5 έως 1000.
Προεπιλογή: 100
Παράδειγμα αιτήματος
POST calculation
curl -X POST https://puzzel.org/api/public/v1/calculation \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Calculation Game",
  "language": "gr",
  "sentence": "Fruit salad for everyone",
  "settings": {
    "difficulty_level": "100",
    "operators": [
      "+",
      "-",
      "x",
      ":"
    ],
    "max_operations": 1,
    "number_difficulty": 100
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/calculation/embed?p=-Nq8sample_activity_key",
  "message": "Calculation game created successfully"
}

Sudoku

Δημιουργεί ένα λυμένο πλέγμα και μετά αφαιρεί αριθμούς από αυτό.

#
POST /api/public/v1/sudoku Δεν δέχεται items
Περιεχόμενο

Τίποτα. Όλος ο γρίφος προκύπτει από τις δύο ρυθμίσεις του.

Πέφτει πίσω στο όνομα “Sudoku API”

Καλό είναι να ξέρεις
  • Μη στείλεις items ούτε sentence — το size και το difficulty είναι όλη η είσοδος.
  • Ο επεξεργαστής προσφέρει τη δυσκολία μόνο για 2x3, 3x3 και 3x4. Το API την εφαρμόζει σε κάθε μέγεθος, μαζί με 2x2 και 4x4.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
size
προαιρετικό στο settings
string
stringΤο μέγεθος ενός μπλοκ, γραμμένο ως γραμμές επί στήλες — το 3x3 δίνει το κλασικό πλέγμα 9x9. Το endpoint ελέγχει μόνο ότι διαβάζεται ως δύο αριθμοί, γι' αυτό μείνε στα μεγέθη που προσφέρει ο επεξεργαστής.
Ένα από 2x22x33x33x44x4
Προεπιλογή: "3x3"
difficulty_level
προαιρετικό στο settings
string
stringΠόσοι αριθμοί μένουν στο πλέγμα για να ξεκινήσεις.
Ένα από easynormalhard
Προεπιλογή: "normal"
Παράδειγμα αιτήματος
POST sudoku
curl -X POST https://puzzel.org/api/public/v1/sudoku \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Sudoku",
  "language": "gr",
  "settings": {
    "size": "3x3",
    "difficulty_level": "normal"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/sudoku/embed?p=-Nq8sample_activity_key",
  "message": "Sudoku created successfully"
}
Εικόνες

Παζλ

Κόβει μια εικόνα σε κομμάτια που σέρνεις για να την ξαναφτιάξεις.

#
POST /api/public/v1/jigsaw Δεν δέχεται items
Περιεχόμενο

Ένα URL εικόνας, στο πεδίο image. Αυτό το endpoint δεν δέχεται items.

Πέφτει πίσω στο όνομα “Jigsaw Game API”

Καλό είναι να ξέρεις
  • Το API δημιουργεί πάντα ένα παζλ 4 επί 4. Το πλήθος των κομματιών, τα ακανόνιστα κομμάτια και οι ίσιες άκρες είναι ρυθμίσεις του επεξεργαστή — αν στείλεις rows ή columns εδώ, δεν γίνεται τίποτα.
  • Το URL αποθηκεύεται όπως το έστειλες και το αρχείο δεν αντιγράφεται ποτέ, οπότε πρέπει να παραμείνει δημόσια προσβάσιμο για όσο καιρό παίζεται η δραστηριότητα.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
image
υποχρεωτικό
string
stringΑπόλυτο URL της εικόνας που θα κοπεί σε κομμάτια. Στέλνεται στο ανώτατο επίπεδο, όχι μέσα στο settings.
Παράδειγμα αιτήματος
POST jigsaw
curl -X POST https://puzzel.org/api/public/v1/jigsaw \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Jigsaw Game",
  "language": "gr",
  "image": "https://example.com/orchard.jpg"
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/jigsaw/embed?p=-Nq8sample_activity_key",
  "message": "Jigsaw game created successfully"
}

Συρόμενο παζλ

Ανακατεύει μια εικόνα σε πλακίδια που γλιστρούν στη θέση τους.

#
POST /api/public/v1/slidingpuzzle Δεν δέχεται items
Περιεχόμενο

Ένα URL εικόνας, μέσα στο settings. Αυτό το endpoint δεν δέχεται items.

Πέφτει πίσω στο όνομα “Sliding Puzzle API”

Καλό είναι να ξέρεις
  • Σε αντίθεση με το παζλ, αυτό το endpoint διαβάζει την εικόνα του από το settings.image. Ένα πεδίο image στο ανώτατο επίπεδο αγνοείται και η κλήση απαντά 400.
  • Το URL αποθηκεύεται όπως το έστειλες και το αρχείο δεν αντιγράφεται ποτέ, οπότε πρέπει να παραμείνει δημόσια προσβάσιμο για όσο καιρό παίζεται η δραστηριότητα.
Ρυθμίσεις που διαβάζει
ΠεδίοΤύποςΤι κάνει
image
υποχρεωτικό στο settings
string
stringΑπόλυτο URL της εικόνας που θα ανακατευτεί. Σε αντίθεση με του παζλ, αυτό βρίσκεται μέσα στο settings.
Παράδειγμα αιτήματος
POST slidingpuzzle
curl -X POST https://puzzel.org/api/public/v1/slidingpuzzle \
  -H "Content-Type: application/json" \
  -d '{
  "account_api_key": "YOUR_API_KEY",
  "email": "you@example.com",
  "title": "Sliding Puzzle",
  "language": "gr",
  "settings": {
    "image": "https://example.com/orchard.jpg"
  }
}'
Επιτυχία
{
  "success": true,
  "id": "-Nq8sample_activity_key",
  "url": "https://puzzel.org/en/slidingpuzzle/embed?p=-Nq8sample_activity_key",
  "message": "Sliding puzzle created successfully"
}

Κάτι δεν δουλεύει σωστά;

Στείλε το αίτημα που δοκίμασες και το σφάλμα που πήρες πίσω και θα λάβεις μια πραγματική απάντηση, από το άτομο που έγραψε το endpoint.

Στείλε email στην υποστήριξη