A method for initiating a call between a first endpoint (121, 122, 122A, 123) and a second endpoint (121, 122, 122B, 123), the method being carried out by a codec manager of a call manager of an IP telephony switch (130, 130A) of a site, the IP telephony switch further comprising a configuration module and a bandwidth manager, and the method comprising: receiving (302, 802) a first codec list from the first endpoint (121, 122, 122A, 123), the first codec list including an identifier of each codec supported by the first endpoint; determining the type of call being initiated and filtering the first codec list to remove identifiers of unsupported codecs by searching the configuration storage module and retrieving from the configuration storage module a second codec list associated with the type of the call and removing from the first codec list one or more identifiers of codecs not included in the second codec list; selecting from the filtered first codec list a codec with the highest bandwidth; determining whether the site has enough available bandwidth to support the selected codec, and if the site does not have enough available bandwidth to support the selected codec, removing from the first codec list the identifier of the selected codec, if the site has enough bandwidth available to support the selected codec, allocating bandwidth at the site based on a bandwidth of the selected codec; transmitting (308, 816), either directly or through a destination site, to the second endpoint (121, 122, 122B, 123) the filtered first codec list; receiving (320, 834), either directly or through the destination site, from the second endpoint (121, 122, 122B, 123) an answer message comprising an identifier of a codec included in the filtered first codec list; requesting, to the bandwidth manager, an update of the allocated bandwidth at the site: and transmitting (324, 838) an answer message comprising the identifier of the codec to the first endpoint (121, 122, 122A, 123). receiving (302, 802) a first codec list from the first endpoint (121, 122, 122A, 123), the first codec list including an identifier of each codec supported by the first endpoint; determining the type of call being initiated and filtering the first codec list to remove identifiers of unsupported codecs by searching the configuration storage module and retrieving from the configuration storage module a second codec list associated with the type of the call and removing from the first codec list one or more identifiers of codecs not included in the second codec list; selecting from the filtered first codec list a codec with the highest bandwidth; determining whether the site has enough available bandwidth to support the selected codec, and if the site does not have enough available bandwidth to support the selected codec, removing from the first codec list the identifier of the selected codec, if the site has enough bandwidth available to support the selected codec, allocating bandwidth at the site based on a bandwidth of the selected codec; if the site does not have enough available bandwidth to support the selected codec, removing from the first codec list the identifier of the selected codec, if the site has enough bandwidth available to support the selected codec, allocating bandwidth at the site based on a bandwidth of the selected codec; transmitting (308, 816), either directly or through a destination site, to the second endpoint (121, 122, 122B, 123) the filtered first codec list; receiving (320, 834), either directly or through the destination site, from the second endpoint (121, 122, 122B, 123) an answer message comprising an identifier of a codec included in the filtered first codec list; requesting, to the bandwidth manager, an update of the allocated bandwidth at the site: and transmitting (324, 838) an answer message comprising the identifier of the codec to the first endpoint (121, 122, 122A, 123).