Telefoon Number Management API

Search, purchase, and manage Dutch, Belgian, German, and broader European phone numbers. Supports local geographic numbers (NDC/area codes), national numbers, toll-free (0800), premium-rate (0900), and service numbers (0906). Handles regulatory requirements including address registration for Dutch and Belgian number types and porting requests (number portability).

OpenAPI Specification

telefoon-numbers-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Telefoon Number Management API
  description: >-
    Search, purchase, and manage Dutch, Belgian, German, and European phone numbers.
    Supports local geographic numbers, national numbers, toll-free (0800), premium (0900),
    and service numbers with full compliance for EU regulatory requirements.
  version: v1
  contact:
    name: Telefoon Support
    url: https://www.telefoon.com/support
  termsOfService: https://www.telefoon.com/terms
servers:
  - url: https://api.telefoon.com/v1/numbers
    description: Telefoon Number Management API
security:
  - ApiKeyAuth: []
tags:
  - name: Available Numbers
    description: Search available numbers
  - name: Owned Numbers
    description: Manage owned numbers
paths:
  /available:
    get:
      operationId: searchAvailableNumbers
      summary: Search Available Numbers
      description: Search available phone numbers for European countries.
      tags:
        - Available Numbers
      parameters:
        - name: country_code
          in: query
          required: true
          schema:
            type: string
          description: ISO 3166-1 alpha-2 country code (NL, BE, DE, FR, etc.)
        - name: type
          in: query
          schema:
            type: string
            enum: [geographic, national, mobile, toll-free, premium-rate, service]
          description: Number type
        - name: area_code
          in: query
          schema:
            type: string
          description: Area code / NDC (e.g., 020 for Amsterdam)
        - name: sms_enabled
          in: query
          schema:
            type: boolean
          description: Filter for SMS-capable numbers
        - name: limit
          in: query
          schema:
            type: integer
            maximum: 20
      responses:
        '200':
          description: Available numbers
          content:
            application/json:
              schema:
                type: object
                properties:
                  available_numbers:
                    type: array
                    items:
                      $ref: '#/components/schemas/AvailableNumber'
  /owned:
    get:
      operationId: listOwnedNumbers
      summary: List Owned Numbers
      description: List phone numbers in your account.
      tags:
        - Owned Numbers
      parameters:
        - name: country_code
          in: query
          schema:
            type: string
          description: Filter by country
        - name: page
          in: query
          schema:
            type: integer
        - name: page_size
          in: query
          schema:
            type: integer
            maximum: 100
      responses:
        '200':
          description: Owned numbers
          content:
            application/json:
              schema:
                type: object
                properties:
                  numbers:
                    type: array
                    items:
                      $ref: '#/components/schemas/OwnedNumber'
                  total:
                    type: integer
    post:
      operationId: purchaseNumber
      summary: Purchase Number
      description: Purchase a phone number.
      tags:
        - Owned Numbers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - phone_number
              properties:
                phone_number:
                  type: string
                  description: Number in E.164 format
                voice_url:
                  type: string
                  description: Inbound call webhook URL
                sms_url:
                  type: string
                  description: Inbound SMS webhook URL
                friendly_name:
                  type: string
                  description: Label for the number
                address_id:
                  type: string
                  description: Address ID for regulatory compliance (required for some EU number types)
      responses:
        '201':
          description: Number purchased
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OwnedNumber'
  /owned/{phone_number}:
    get:
      operationId: getOwnedNumber
      summary: Get Owned Number
      description: Get configuration for a specific number.
      tags:
        - Owned Numbers
      parameters:
        - name: phone_number
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Number details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OwnedNumber'
    delete:
      operationId: releaseNumber
      summary: Release Number
      description: Release a phone number from your account.
      tags:
        - Owned Numbers
      parameters:
        - name: phone_number
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Number released
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
  schemas:
    AvailableNumber:
      type: object
      required:
        - phone_number
        - country_code
        - type
      properties:
        phone_number:
          type: string
          description: Phone number in E.164 format
        friendly_name:
          type: string
          description: Formatted display number
        country_code:
          type: string
          description: ISO country code
        type:
          type: string
          enum: [geographic, national, mobile, toll-free, premium-rate, service]
        capabilities:
          type: object
          properties:
            voice:
              type: boolean
            sms:
              type: boolean
        monthly_rate:
          type: string
          description: Monthly fee in EUR
        address_required:
          type: boolean
          description: Whether address registration is required for compliance
    OwnedNumber:
      type: object
      required:
        - phone_number
        - type
      properties:
        phone_number:
          type: string
          description: Phone number in E.164 format
        friendly_name:
          type: string
        type:
          type: string
          enum: [geographic, national, mobile, toll-free, premium-rate, service]
        country_code:
          type: string
        capabilities:
          type: object
          properties:
            voice:
              type: boolean
            sms:
              type: boolean
        voice_url:
          type: string
          description: Inbound call webhook
        sms_url:
          type: string
          description: Inbound SMS webhook
        date_created:
          type: string
          format: date-time
        monthly_rate:
          type: string
          description: Monthly rate in EUR