openapi: 3.1.0
info:
title: Agify Age Prediction API
description: REST API that predicts the age of a person from their first name using statistical data from over 900 million records spanning 195+ countries. Provided by Demografix ApS. Shares a single API key with Genderize.io and Nationalize.io.
version: 1.0.0
contact:
name: Demografix ApS
email: info@genderize.io
url: https://agify.io
license:
name: Proprietary
url: https://agify.io/terms
termsOfService: https://agify.io/terms
x-api-id: agify:agify-api
servers:
- url: https://api.agify.io
description: Production API
security:
- apiKey: []
tags:
- name: Age Prediction
description: Endpoints for predicting age from first names using statistical data.
paths:
/:
get:
operationId: predictAge
summary: Predict age from name
description: Predicts the age of a person from their first name. Accepts a single name or up to 10 names in a batch. Optionally scopes the prediction to a specific country using an ISO 3166-1 alpha-2 country code. An API key is required for all requests.
tags:
- Age Prediction
parameters:
- name: name
in: query
description: 'First name to predict age for. For a single name lookup, provide the name as a string. For batch lookups, use array syntax: name[]=anna&name[]=john (up to 10 names per request).'
required: true
schema:
oneOf:
- type: string
example: michael
- type: array
items:
type: string
maxItems: 10
example:
- anna
- john
- kim
- name: country_id
in: query
description: ISO 3166-1 alpha-2 country code to scope the age prediction to a specific country. Providing a country code significantly improves prediction accuracy.
required: false
schema:
type: string
pattern: ^[A-Z]{2}$
example: US
- name: apikey
in: query
description: Your Agify API key. Shared with Genderize.io and Nationalize.io accounts.
required: false
schema:
type: string
responses:
'200':
description: Successful age prediction. Returns a single object for a single name lookup, or an array of objects for batch lookups.
headers:
X-Rate-Limit-Limit:
description: Total number of name lookups allowed in the current billing period.
schema:
type: integer
X-Rate-Limit-Remaining:
description: Number of name lookups remaining in the current billing period.
schema:
type: integer
X-Rate-Limit-Reset:
description: Unix timestamp (seconds) when the monthly allowance resets.
schema:
type: integer
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/AgePrediction'
- type: array
items:
$ref: '#/components/schemas/AgePrediction'
examples:
single-name:
summary: Single name lookup
value:
name: michael
age: 65
count: 298219
single-name-with-country:
summary: Single name with country scoping
value:
name: michael
age: 58
count: 41234
country_id: US
single-name-null:
summary: Name not in dataset
value:
name: xyz123
age: null
count: 0
batch-names:
summary: Batch name lookup
value:
- name: anna
age: 42
count: 185234
- name: john
age: 55
count: 412789
- name: kim
age: 38
count: 67890
'401':
description: Unauthorized. Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Invalid API key.
'422':
description: Unprocessable Entity. The name parameter is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Missing 'name' parameter.
'429':
description: Too Many Requests. Monthly name lookup allowance exceeded.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Request limit reached. Upgrade to a paid plan for more requests.
components:
schemas:
AgePrediction:
type: object
description: Age prediction result for a single name.
properties:
name:
type: string
description: The name as processed by the API (may differ slightly from input if diacritics were stripped).
example: michael
age:
type:
- integer
- 'null'
description: Predicted age in years. Null if the name is not in the dataset.
minimum: 0
example: 65
count:
type: integer
description: Number of data records supporting the age prediction. A higher count indicates more reliable prediction.
minimum: 0
example: 298219
country_id:
type: string
description: ISO 3166-1 alpha-2 country code used for scoping, if provided in the request.
pattern: ^[A-Z]{2}$
example: US
required:
- name
- age
- count
ErrorResponse:
type: object
description: Error response returned when the request cannot be processed.
properties:
error:
type: string
description: Human-readable error message describing what went wrong.
example: Missing 'name' parameter.
required:
- error
securitySchemes:
apiKey:
type: apiKey
in: query
name: apikey
description: API key obtained from the Agify dashboard. Shared with Genderize.io and Nationalize.io.
externalDocs:
description: Official Documentation
url: https://agify.io/documentation