Team Humans Club · Open Institutional Project Home  |  Notice Board

World Solve

Team Humans Club
A living repository of problems worth solving.
Public API Documentation

API Notice

Published by Ian Patel, Founder of WorldSolve

WorldSolve provides a free public API that allows researchers, builders, entrepreneurs, students, and developers to access structured problem records from the repository. The API can be used to discover, filter, analyze, and build applications around problems worth solving.

Free & open The API is provided freely to support open research, education, entrepreneurship, and innovation.

API endpoint

The current API endpoint is:

https://worldsolve.org/index.php?api=problems

The API returns JSON data containing problem records and pagination metadata.

Basic request

You can retrieve the first page of problems using:

curl -L "https://worldsolve.org/index.php?api=problems"

The same request can be made with Python:

import requests

url = "https://worldsolve.org/index.php"

response = requests.get(
    url,
    params={"api": "problems"},
    timeout=30
)

response.raise_for_status()
data = response.json()

print(data)

Response format

A successful response has the following general structure:

{
  "ok": true,
  "meta": {
    "total": 4194,
    "page": 1,
    "per_page": 20,
    "total_pages": 210,
    "has_next": true
  },
  "data": [
    {
      "citation_id": "WS06733",
      "id": 6733,
      "title": "Problem title",
      "explanation": "Problem description",
      "category": "Social Civic Problems",
      "status": "open",
      "tags": ["social", "civic"],
      "continent": "Global",
      "country": "Global",
      "contributor_name": "Ian Patel",
      "created_at": "2026-08-20T16:40:00Z",
      "year_horizon": "2030"
    }
  ]
}

The meta object contains the total number of records and pagination information. The data array contains the problem records returned for that request.

Pagination

The API returns a limited number of records per request. To retrieve a later page, include the page parameter.

import requests

url = "https://worldsolve.org/index.php"

response = requests.get(
    url,
    params={"api": "problems", "page": 2},
    timeout=30
)

response.raise_for_status()
data = response.json()

for problem in data.get("data", []):
    print(problem["citation_id"], problem["title"])

Retrieve all pages

Applications that need the complete public collection can continue requesting pages until has_next is false.

import requests

url = "https://worldsolve.org/index.php"
all_problems = []
page = 1

while True:
    response = requests.get(
        url,
        params={"api": "problems", "page": page},
        timeout=30
    )

    response.raise_for_status()
    result = response.json()

    if not result.get("ok"):
        raise RuntimeError(result.get("error", "Unknown API error"))

    all_problems.extend(result.get("data", []))

    if not result.get("meta", {}).get("has_next", False):
        break

    page += 1

print(f"Retrieved {len(all_problems)} problems.")

Filtering

The problems endpoint supports optional filters. Query parameters should be URL-encoded when they contain spaces or special characters.

Filter by category

import requests

url = "https://worldsolve.org/index.php"

response = requests.get(
    url,
    params={"api": "problems", "category": "Social Civic Problems"},
    timeout=30
)

response.raise_for_status()
data = response.json()

for problem in data.get("data", []):
    print(f"[{problem['citation_id']}] {problem['title']}")

Use category names exactly as they are stored in the API. Current examples include:

  • Mathematics Logic
  • Climate Environment
  • Social Civic Problems
  • Economics Resources
  • Other

Category names may change as the taxonomy develops. Applications should handle empty results gracefully.

Filter by status

To request only open problems, use:

params = {
    "api": "problems",
    "status": "open"
}

Applications should inspect the returned response and should not assume that every problem will always remain open. WorldSolve records may be updated to reflect partial progress, resolution, or reclassification.

Other filters

ParameterPurposeExample
qSearches problem text and location fields.q=water
keywordSearches titles and explanations.keyword=education
categoryFilters by category.category=Other
statusFilters by open or solved.status=open
continentFilters by continent.continent=Asia
countryFilters by country.country=India
tagFilters by tag.tag=climate
year_horizonFilters by target year.year_horizon=2030
contributorFilters by contributor ID or name.contributor=Ian+Patel
sortSorts by newest, oldest, or ID.sort=newest

Available endpoints

EndpointDescriptionExample
problemsReturns a paginated list of public problems.Open endpoint
problemReturns one problem and related problems.Open endpoint
categoriesReturns problem counts grouped by category.Open endpoint
statsReturns total, open, and solved problem counts.Open endpoint

Using citations

Every problem has a citation identifier, such as:

WS06733

A problem can be cited using its dedicated WorldSolve page:

https://worldsolve.org/index.php?view=problem&id=6733

Example citation:

WS06733, WorldSolve, "Implementing proven strategies against global cooperation remaining weaker than needed by 2030," WorldSolve.org, accessed August 2026.

The & character must be written as & inside HTML source, but as a normal & in a terminal command or Python URL.

Error handling

A failed request may return:

{
  "ok": false,
  "error": "Description of the error"
}

Applications should check both the HTTP status and the ok field:

if response.status_code != 200:
    print("HTTP error:", response.status_code)
elif not data.get("ok"):
    print("API error:", data.get("error"))
else:
    print("Request successful")

Responsible use

Please use the API responsibly:

  • Cache responses where appropriate.
  • Avoid sending unnecessary repeated requests.
  • Do not attempt to bypass rate limits.
  • Attribute WorldSolve when displaying or redistributing records.
  • Preserve each problem's citation ID and source URL.
  • Do not present WorldSolve problem statements as verified facts unless you independently verify their sources.
  • Respect contributor attribution.
  • Contact Team Humans Club before creating a commercial derivative that substantially republishes the entire repository.
The API is provided freely to support open research, education, entrepreneurship, and innovation. WorldSolve is designed to make meaningful problems easier to discover and to help democratize access to opportunities for investigation and action.
Attribution Ian Patel
Founder, WorldSolve
Team Humans Club
WorldSolve.org