The most common error when making ad requests from the server is sending the IP Address and User Agent (UA) of the server instead of the IP and UA of the client who made the ad request. If the server credentials are being passed then the advertiser will see requests from the same IP and UA over and over and will most likely not fill many if any of the requests.
The server side ad request should use the same values passed in by the client to ensure the proper request is being made. The server should be configured to forward the client headers to make sure the proper data is being passed to the advertiser.
Some advertiser’s APIs require that the client headers be forwarded but also require you to pass along the client IP and User Agent through parameters to make sure they receiving the correct values. When making ad requests through an API, the chances of sending incorrect data (server data instead of client data) is less likely due to the inclusion of specific data points and advertiser provided documentation to guide you. The chances of errors occurring is much higher when making a server side request to an advertiser without the aid of an API.
Advertisers want to limit the amount of invalid ad requests they receive, and for this reason they discourage server side ad request accept through a properly exposed API. If done properly, an advertiser should see little difference between an ad request from the client or the server, but it is best to communicate with the advertiser how you are requesting ads from them so they can make you aware of any special requirements they have and to help you investigate any problems should they arise.