API Documentation

RESTful JSON API

The Alphabeticall API provides free, programmatic access to comprehensive dictionary data. Perfect for building language learning apps, writing tools, or research projects.

Base URL
https://alphabeticall.com/api/v1
Authentication
None Required
Format
JSON
CORS is enabled for all origins, making the API accessible from browser-based applications.

Endpoints

List Words

/api/v1/wordset_words

Retrieve a paginated list of words with optional filtering.

Parameter Type Default Description
page integer 1 Page number for pagination
per_page integer 20 Items per page (max: 100)
letter string - Filter words starting with letter
search string - Search words containing string
random boolean false Return random selection
count integer 10 Number of random words (max: 50)
curl "https://alphabeticall.com/api/v1/wordset_words?letter=a&page=2"

Get Single Word

/api/v1/wordset_words/:id

Retrieve a specific word by its ID.

curl "https://alphabeticall.com/api/v1/wordset_words/123"

Search Words

/api/v1/wordset_words/search

Search for words matching a query.

Parameter Type Required Description
q string Yes Search query
exact boolean No Match exact word only
page integer No Page number
per_page integer No Items per page
curl "https://alphabeticall.com/api/v1/wordset_words/search?q=example"

Response Format

All endpoints return raw JSON data without wrapper objects. Each word object contains:

{
  "id": 123,
  "word": "example",
  "definition": {
    "word": "example",
    "wordset_id": "a1b2c3d4e5",
    "meanings": [
      {
        "id": "m1a2b3c4d5",
        "def": "a thing characteristic of its kind or illustrating a general rule",
        "speech_part": "noun",
        "example": "it's a good example of how they can collaborate",
        "synonyms": ["instance", "sample", "specimen"],
        "labels": [
          {
            "name": "formal",
            "is_dialect": false
          }
        ]
      }
    ],
    "editors": ["user1"],
    "contributors": ["user2", "user3"]
  }
}
The definition field contains the complete wordset data structure as stored in the database.

Example Usage

JavaScript (Fetch API)

// Search for words
fetch('https://alphabeticall.com/api/v1/wordset_words/search?q=hello')
  .then(response => response.json())
  .then(words => {
    words.forEach(word => {
      console.log(`${word.word}: ${word.definition.meanings[0].def}`);
    });
  });

// Get random words
fetch('https://alphabeticall.com/api/v1/wordset_words?random=true&count=5')
  .then(response => response.json())
  .then(words => console.log(words));

Python

import requests

# Get words starting with 'a'
response = requests.get('https://alphabeticall.com/api/v1/wordset_words?letter=a')
words = response.json()

for word in words:
    print(f"{word['word']}: {word['definition']['meanings'][0]['def']}")

Ruby

require 'net/http'
require 'json'

# Search for exact word
uri = URI('https://alphabeticall.com/api/v1/wordset_words/search?q=ruby&exact=true')
response = Net::HTTP.get(uri)
words = JSON.parse(response)

words.each do |word|
  puts "#{word['word']}: #{word['definition']['meanings'][0]['def']}"
end

Error Handling

The API uses standard HTTP status codes and returns errors in JSON format:

{
  "error": {
    "code": "not_found",
    "message": "The requested word was not found"
  }
}
Status Code Description
200 Success
400 Bad Request - Invalid parameters
404 Not Found - Resource not found
500 Internal Server Error

Usage Guidelines

No rate limiting is currently enforced. The API is free to use!

While we don't enforce rate limits, please be respectful of our resources:

Cache responses when possible

Store frequently accessed data locally to reduce API calls

Use pagination instead of fetching all data

Request data in smaller chunks to improve performance

Implement exponential backoff for retries

Wait progressively longer between retry attempts

Consider using the random endpoint for sampling

Get a representative sample without processing all data