Skip to main content

Available Languages API

This endpoint returns the list of languages that have content available in your tenant. Use it to determine which locales are active and to build language selectors.

Endpoint

MethodEndpointDescription
GET/public/available-languagesGet available content languages

Get Available Languages

GET /public/available-languages

Query Parameters

ParameterTypeRequiredDescription
tenant_idstringYesThe tenant ID to query languages for

Note: Unlike other public endpoints that infer the tenant from the API key, this endpoint requires an explicit tenant_id query parameter.

Example Request

curl -X GET "https://api.adaptocms.com/public/available-languages?tenant_id=YOUR_TENANT_ID" \
  -H "x-api-key: YOUR_API_KEY"

Example Response

["en", "fr", "de", "es"]

The response is a simple JSON array of ISO 639-1 language codes.

Use Case: Language Selector

// Fetch available languages and build a selector
const languages = await fetch(
  `${BASE_URL}/public/available-languages?tenant_id=${TENANT_ID}`,
  { headers: { 'x-api-key': API_KEY } }
).then(r => r.json());

// Map language codes to display names
const languageNames = {
  en: 'English',
  fr: 'Français',
  de: 'Deutsch',
  es: 'Español',
  it: 'Italiano',
  pt: 'Português',
  nl: 'Nederlands',
  ja: '日本語',
  zh: '中文',
  ko: '한국어'
};

const selector = languages.map(code => ({
  code,
  label: languageNames[code] || code
}));

Use Case: Astro i18n Routing

// astro.config.mjs
import { defineConfig } from 'astro/config';

// Fetch available languages at build time
const languages = await fetch(
  `https://api.adaptocms.com/public/available-languages?tenant_id=${process.env.ADAPTO_TENANT_ID}`,
  { headers: { 'x-api-key': process.env.ADAPTO_API_KEY } }
).then(r => r.json());

export default defineConfig({
  i18n: {
    defaultLocale: languages[0] || 'en',
    locales: languages
  }
});