canonical: https://jentic.com/apis/joshuaproject.net/joshuaproject

# Joshua Project API

Joshua Project is a research initiative tracking ethnic people groups around the world, with a particular focus on those least reached by Christian missions. The API surfaces structured data on continents, countries, languages, regions, and people groups - including a daily-unreached people group feed and global totals. It is the right tool for missions agencies, research apps, and educational projects that need clean, queryable demographic data on global people groups.

## For AI agents

Query Joshua Project's catalogue of people groups, countries, languages, regions, and continents, including a daily unreached people group feed and global totals, for missions research and demographic analysis.

## Scope

Does not handle prayer-app subscriptions, donation processing, or church directory lookups - use for people group, country, language, and region demographic queries only.

## Capabilities

- List the world's continents with their associated people group totals
- Query countries with filters by region, religion, or population range
- Look up languages spoken globally and their associated people groups
- Retrieve people groups within a specific country or across countries
- Fetch the day's featured unreached people group for prayer or research
- Pull global totals across people groups, populations, and progress indicators

## Use cases

### Daily prayer or focus app

Apps that surface a single people group each day for prayer or research can call the daily-unreached endpoint and render the response. GET `/people_groups/daily_unreached.json` returns a curated entry with population, language, religion, and progress data - enough to power a card UI without further calls. This replaces hand-curated daily content with a reliable feed maintained by Joshua Project.

Example prompt: Call GET `/people_groups/daily_unreached.json` each morning, render the response into a daily prayer card, and email or push it to subscribers

### Missions research and country pages

Educational and missions agency websites need consistent country and people-group profiles. The API provides GET /countries.json with rich filters (region, population, religion) and GET /people_groups.json scoped to a country. A small static site generator can build a country index and per-people-group pages from these two endpoints in a single nightly job.

Example prompt: Call GET /countries.json filtered by ROG3='IN', then GET /people_groups.json for each, and render per-country pages in the static site

### Cross-country language analysis

Researchers studying language families and migration patterns can use GET /people_groups_across_countries.json to find the same ethnolinguistic group across borders. Combined with GET /languages.json, this supports queries like 'where is the Tamil-speaking population concentrated outside India'. The aggregated view avoids stitching country-level data manually.

Example prompt: Call GET /people_groups_across_countries.json with peo3 code for Tamil to retrieve every country containing the group, then aggregate populations

### Agent-driven research via Jentic

A research assistant agent can call Joshua Project through Jentic to answer demographic questions inline. The user asks 'how many unreached people groups are in Indonesia?', Jentic resolves to GET /people_groups.json with country=ID and an unreached filter, injects the api_key parameter, and returns the count. The api_key never enters the agent's prompt.

Example prompt: Use Jentic to search 'list Joshua Project people groups in Indonesia', load GET /people_groups.json, and execute with country=ID

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/continents.json` | List continents |
| GET | `/countries.json` | List countries |
| GET | `/languages.json` | List languages |
| GET | `/people_groups.json` | List people groups in countries |
| GET | `/people_groups_across_countries.json` | List people groups across countries |
| GET | `/people_groups/daily_unreached.json` | Daily unreached people group |
| GET | `/regions.json` | List regions |
| GET | `/totals.json` | Global totals |

## Key resources

- **People Groups** — Country-scoped and cross-country people group queries plus the daily unreached entry
- **Geography** — Continents, countries, and regions endpoints
- **Languages** — Language catalogue with associated people group data
- **Totals** — Aggregated global counts across the dataset

## Why Jentic

- **Setup:** Wiring the Joshua Project API by hand means learning its api_key query parameter, choosing the right demographic resource among people groups, countries, languages, and regions, and parsing each JSON response yourself. Through Jentic you install once, import the Joshua Project API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** This API is read-only and addresses each dataset by resource path rather than a caller-supplied id, so you limit the agent to the operations it needs, such as querying people groups or listing countries. There is no write surface, so the agent can read demographic data and nothing more.
- **Credential handling:** Your Joshua Project api_key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'find unreached people groups' or 'list countries', and Jentic returns the matching Joshua Project operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Bible API** — Bible passage lookup that pairs with Joshua Project for missions and prayer apps
- **API Ninjas** — Generic country and city data API to enrich Joshua Project locations
- **Humor API** — Unrelated content API - listed as a contrast, not a substitute

## FAQ

### What authentication does the Joshua Project API use?

The Joshua Project API uses an API key passed as the api_key query parameter on every request. Jentic stores the key encrypted in the vault and appends it at execution time, so the credential never enters the agent's prompt or chat transcript.

### Can I get a single 'people group of the day' from this API?

Yes. GET `/people_groups/daily_unreached.json` returns the day's featured unreached people group with population, language, religion, and progress fields - enough to power a prayer card or daily research email without follow-up calls.

### What are the rate limits for the Joshua Project API?

The spec does not publish numeric rate limits. The API is intended for non-commercial research and missions use; treat it as low-volume and cache responses where possible. Contact Joshua Project directly for higher-throughput agreements.

### How do I query Joshua Project through Jentic?

Search Jentic for 'list Joshua Project people groups', load GET /people_groups.json, and execute with country or language filters. Jentic injects the api_key and returns the JSON list. Get started with Jentic One, the self-hosted execution layer.

### Is the Joshua Project data free to use?

API access is free for non-commercial missions and research use after registering for an API key on joshuaproject.net. Commercial republishing requires permission from Joshua Project.

### How do I find a people group across multiple countries?

Use GET /people_groups_across_countries.json with the people group's identifier (peo3 code) - the response groups country-level entries for the same ethnolinguistic group, which is the right shape for diaspora analysis.

### Can I limit what my agent is allowed to do with the Joshua Project API?

Yes. Because you run Jentic One yourself, your own rules decide which Joshua Project operations and credentials the agent may use, so you can allow just the ones it needs, such as GET /people_groups.json or GET /countries.json, and withhold the rest. The API is entirely read-only and addresses each dataset by resource path rather than a caller-supplied id, so a scoped agent can read demographic data and nothing more. There is no write surface to expose.
