This is a simple and intuitive Python SDK for using AbstractAPI's services.
All AbstractAPI services are supported by this SDK (16th. January 2023).
- Email Validation
- Phone Validation
- VAT Validation/Calculation/Categories
- IBAN Validation
- IP Geolocation
- Holidays Lookup
- Exchange Rates Live/Convert/Historical
- Company Enrichment
- Timezone Current/Conversion
- Avatars Generation
- Website Screenshot
- Website Scrape
- Image Processing
Install using pip:
pip install abstract-api
To use any service, you must have your API key for that service.
To do that, you have two options:
- Export your API key as an environment variable:
To export an API key for a service, you should follow this scheme:Note:ABSTRACTAPI_{SERVICE_NAME}_API_KEYSERVICE_NAMEis all uppercase and underscore separated.
For example, to export your Email Validation service API key, use the following environment variable name:Example in terminal:ABSTRACTAPI_EMAIL_VALIDATION_API_KEYIn initialization, you don't have to pass an API key:export ABSTRACTAPI_AVATARS_API_KEY=612345e4a63044b47a1234567a53cc81fromabstract_apiimportEmailValidationservice=EmailValidation()
- Pass your API key during service class instantiation:
Example:fromabstract_apiimportEmailValidationservice=EmailValidation(api_key="612345e4a63044b47a1234567a53cc81")
Note: If both options were used simultaneously, the API key that was passed to constructor is used.
Notes:
- Each service response is represented as a response class to provide an intuitive
Pythonic way for handling responses. - All public interfaces of all services classes are modeled after AbstractAPI endpoints interfaces and responses.
Example: Email Validation service endpoint expects the following parameters:api_keyemailauto_correct
TheEmailValidationclass'scheck()method expects the same parametersemailandauto_correct.
(No need to passapi_key. It is already passed during service instantiation.)
Recommended:
Check service class and service class response documentations.
Response fields used in examples are not only the ones. Check documentation to see
all the capabilities.Email Validation
fromabstract_apiimportEmailValidationservice=EmailValidation(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("example@example.com") ifresponse.is_valid_format: print("Email is valid!") ifresponse.is_disposable_email: print("Email is disposable, not this time :( ")
EmailValidationdocumentation can be found hereEmailValidationResponsedocumentation can be found herePhone Validation
fromabstract_apiimportPhoneValidationservice=PhoneValidation(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("20123456789") ifresponse.valid: print("Phone number is valid!")
PhoneValidationdocumentation can be found herePhoneValidationResponsedocumentation can be found hereVAT Validation/Calculation/Inquiry
fromabstract_apiimportVATservice=VAT(api_key="612345e4a63044b47a1234567a53cc81") validation_response=service.check("SE556656688001") calculation_response=service.calculate(amount=100, country_code="EG") categories_response=service.categories("EG")
VATdocumentation can be found hereVATValidationResponsedocumentation can be found hereVATCalculationResponsedocumentation can be found hereVATCategoriesResponsedocumentation can be found hereIBAN Validation
fromabstract_apiimportIBANValidationservice=IBANValidation(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("BE71096123456769") ifresponse.is_valid: print("IBAN is valid!")
IBANValidationdocumentation can be found hereIBANValidationResponsedocumentation can be found hereIP Geolocation
fromabstract_apiimportIPGeolocationservice=IPGeolocation(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("156.215.70.7", fields=["city"]) print("IP is in: ", response.city)
IPGeolocationdocumentation can be found hereIPGeolocationResponsedocumentation can be found hereHolidays Lookup
fromabstract_apiimportHolidaysservice=Holidays(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("EG") print(response.holidays)
Holidaysdocumentation can be found hereHolidaysResponsedocumentation can be found hereExchange Rates Live/Convert/Historical
fromabstract_apiimportExchangeRatesservice=ExchangeRates(api_key="612345e4a63044b47a1234567a53cc81") live_response=service.live("USD", "EGP") conversion_response=service.convert("USD", "EGP", "2023-01-17", 150) historical_response=service.historical("USD", "2023-01-17", 150)
ExchangeRatesdocumentation can be found hereLiveExchangeRatesResponsedocumentation can be found hereHistoricalExchangeRatesResponsedocumentation can be found hereExchangeRatesConversionResponsedocumentation can be found hereCompany Enrichment
fromabstract_apiimportCompanyEnrichmentservice=CompanyEnrichment(api_key="612345e4a63044b47a1234567a53cc81") response=service.check("EG") print(response.holidays)
CompanyEnrichmentdocumentation can be found hereCompanyEnrichmentResponsedocumentation can be found hereTimezone Current/Conversion
fromabstract_apiimportTimezoneservice=Timezone(api_key="612345e4a63044b47a1234567a53cc81") current_response=service.current("Cairo, Egypt", "82.111.111.111") conversion_response=service.convert((30.0594627, 31.1758899), "Cairo, Egypt")
Timezonedocumentation can be found hereCurrentTimezoneResponsedocumentation can be found hereTimezoneConversionResponsedocumentation can be found hereAvatars Generation
fromabstract_apiimportAvatarsservice=Avatars(api_key="612345e4a63044b47a1234567a53cc81") response=service.create("John Doe", 200) file=open("logo.png", "wb+") file.write(response.content)
Avatarsdocumentation can be found hereAvatarsResponsedocumentation can be found hereWebsite Screenshot
fromabstract_apiimportWebsiteScreenshotservice=WebsiteScreenshot(api_key="612345e4a63044b47a1234567a53cc81") response=service.capture("https://www.github.com", capture_full_page=False) file=open("github-home-screenshot.png", "wb+") file.write(response.content)
WebsiteScreenshotdocumentation can be found hereWebsiteScreenshotResponsedocumentation can be found hereWebsite Scrape
fromabstract_apiimportWebScrapingservice=WebScraping(api_key="612345e4a63044b47a1234567a53cc81") response=service.scrape("https://www.github.com", proxy_country="EG") file=open("github-home-screenshot.png", "wb+") file.write(response.content)
WebScrapingdocumentation can be found hereWebScrapingResponsedocumentation can be found hereImage Processing
fromabstract_apiimportImageProcessingfromabstract_api.image_processing.strategiesimportCrop, Exactresize=Exact(height=200, width=200) service=ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81") image=open('example.png', 'rb') response=service.upload(image, lossy=False, resize=resize) print(response.url) response=service.url("https://example.com/image.jpeg", lossy=False, resize=resize) print(response.url)
ImageProcessingdocumentation can be found hereImageProcessingResponsedocumentation can be found here
- If something wrong happened on client side:
fromabstract_apiimportImageProcessingfromabstract_api.core.exceptionsimportClientRequestErrorservice=ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
service.url("https://example.com/image.jpeg", quality=150)
exceptClientRequestErrorase:
print("Some error happended from client's side")
print(str(e))
# 'quality must be in range from 1 to 100 (inclusive)'- If the service endpoint returns a status code that is not 200 or 204.
(200 and 204 are -currently- the only accepted status codes.)
fromabstract_apiimportImageProcessingfromabstract_api.core.exceptionsimportAPIRequestErrorservice=ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
service.url("https://example.com/image.jpeg", quality=150)
exceptAPIRequestErrorase:
ife.status_code==500:
print("AbstractAPI service is currently having a problem")
print(str(e))