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