Agify.io Age Prediction API

Endpoints for predicting age from first names using statistical data.

OpenAPI Specification

agify-age-prediction-api-openapi.yml Raw ↑
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