Skip to main content

Abstract API Python SDK

Documentation Status

This is a simple and intuitive Python SDK for using AbstractAPI's services.

Current supported 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

Installation:

Install using pip:

pip install abstract-api

Getting Started:

To use any service, you must have your API key for that service.
To do that, you have two options:

  1. Export your API key as an environment variable:
    To export an API key for a service, you should follow this scheme:
    ABSTRACTAPI_{SERVICE_NAME}_API_KEY
    
    Note: SERVICE_NAME is all uppercase and underscore separated.
    For example, to export your Email Validation service API key, use the following environment variable name:
    ABSTRACTAPI_EMAIL_VALIDATION_API_KEY
    
    Example in terminal:
    export ABSTRACTAPI_AVATARS_API_KEY=612345e4a63044b47a1234567a53cc81
    
    In initialization, you don't have to pass an API key:
    from abstract_api import EmailValidation
    
    service = EmailValidation()
    
  2. Pass your API key during service class instantiation:
    Example:
    from abstract_api import EmailValidation
    
    service = EmailValidation(api_key="612345e4a63044b47a1234567a53cc81")
    

Note: If both options were used simultaneously, the API key that was passed to constructor is used.

Examples:

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_key
    • email
    • auto_correct
      The EmailValidation class's check() method expects the same parameters email and auto_correct.
      (No need to pass api_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

    from abstract_api import EmailValidation
    service = EmailValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("example@example.com")
    if response.is_valid_format:
       print("Email is valid!")
    if response.is_disposable_email:
       print("Email is disposable, not this time :( ")
    

    EmailValidation documentation can be found here
    EmailValidationResponse documentation can be found here

  • Phone Validation

    from abstract_api import PhoneValidation
    service = PhoneValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("20123456789")
    if response.valid:
       print("Phone number is valid!")
    

    PhoneValidation documentation can be found here
    PhoneValidationResponse documentation can be found here

  • VAT Validation/Calculation/Inquiry

    from abstract_api import VAT
    service = VAT(api_key="612345e4a63044b47a1234567a53cc81")
    validation_response = service.check("SE556656688001")
    calculation_response = service.calculate(amount=100, country_code="EG")
    categories_response = service.categories("EG")
    

    VAT documentation can be found here
    VATValidationResponse documentation can be found here
    VATCalculationResponse documentation can be found here
    VATCategoriesResponse documentation can be found here

  • IBAN Validation

    from abstract_api import IBANValidation
    service = IBANValidation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("BE71096123456769")
    if response.is_valid:
       print("IBAN is valid!")
    

    IBANValidation documentation can be found here
    IBANValidationResponse documentation can be found here

  • IP Geolocation

    from abstract_api import IPGeolocation
    service = IPGeolocation(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("156.215.70.7", fields=["city"])
    print("IP is in: ", response.city)
    

    IPGeolocation documentation can be found here
    IPGeolocationResponse documentation can be found here

  • Holidays Lookup

    from abstract_api import Holidays
    service = Holidays(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("EG")
    print(response.holidays)
    

    Holidays documentation can be found here
    HolidaysResponse documentation can be found here

  • Exchange Rates Live/Convert/Historical

    from abstract_api import ExchangeRates
    service = 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)
    

    ExchangeRates documentation can be found here
    LiveExchangeRatesResponse documentation can be found here
    HistoricalExchangeRatesResponse documentation can be found here
    ExchangeRatesConversionResponse documentation can be found here

  • Company Enrichment

    from abstract_api import CompanyEnrichment
    service = CompanyEnrichment(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.check("EG")
    print(response.holidays)
    

    CompanyEnrichment documentation can be found here
    CompanyEnrichmentResponse documentation can be found here

  • Timezone Current/Conversion

    from abstract_api import Timezone
    service = Timezone(api_key="612345e4a63044b47a1234567a53cc81")
    current_response = service.current("Cairo, Egypt", "82.111.111.111")
    conversion_response = service.convert((30.0594627, 31.1758899), "Cairo, Egypt")
    

    Timezone documentation can be found here
    CurrentTimezoneResponse documentation can be found here
    TimezoneConversionResponse documentation can be found here

  • Avatars Generation

    from abstract_api import Avatars
    service = Avatars(api_key="612345e4a63044b47a1234567a53cc81")
    response = service.create("John Doe", 200)
    file = open("logo.png", "wb+")
    file.write(response.content)
    

    Avatars documentation can be found here
    AvatarsResponse documentation can be found here

  • Website Screenshot

    from abstract_api import WebsiteScreenshot
    service = 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)
    

    WebsiteScreenshot documentation can be found here
    WebsiteScreenshotResponse documentation can be found here

  • Website Scrape

    from abstract_api import WebScraping
    service = 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)
    

    WebScraping documentation can be found here
    WebScrapingResponse documentation can be found here

  • Image Processing

    from abstract_api import ImageProcessing
    from abstract_api.image_processing.strategies import Crop, Exact
    resize = 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)
    

    ImageProcessing documentation can be found here
    ImageProcessingResponse documentation can be found here

Handling Errors

  1. If something wrong happened on client side:
from abstract_api import ImageProcessing
from abstract_api.core.exceptions import ClientRequestError
service = ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
    service.url("https://example.com/image.jpeg", quality=150)
except ClientRequestError as e:
    print("Some error happended from client's side")
    print(str(e))
'quality must be in range from 1 to 100 (inclusive)'
  1. If the service endpoint returns a status code that is not 200 or 204.
    (200 and 204 are -currently- the only accepted status codes.)
from abstract_api import ImageProcessing
from abstract_api.core.exceptions import APIRequestError
service = ImageProcessing(api_key="612345e4a63044b47a1234567a53cc81")
try:
    service.url("https://example.com/image.jpeg", quality=150)
except APIRequestError as e:
    if e.status_code == 500:
        print("AbstractAPI service is currently having a problem")
    print(str(e))

Metadata

Release files for abstract-api 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abstract-api 1.0.0
File Size Uploaded Provenance Actions
abstract-api-1.0.0.tar.gz 38.7 kB Without provenance Details for abstract-api-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for abstract-api 1.0.0
File Interpreter ABI Platform Actions
abstract_api-1.0.0-py3-none-any.whl Python 3 none any Details for abstract_api-1.0.0-py3-none-any.whl

Total release size: 106.3 kB

Release files / abstract-api-1.0.0.tar.gz

Download URL abstract-api-1.0.0.tar.gz
Size 38.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a121f389a7142e19beb052b29ba5f373c088b3da0ed51cbf4ea42182a3b67205
BLAKE2b-256 checksum
How to use checksums
9e9af36c8687a3e7e9d2eb43483ba63d3a16bcd5ada8dac817c41679d3a5e1d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Release files / abstract_api-1.0.0-py3-none-any.whl

Download URL abstract_api-1.0.0-py3-none-any.whl
Size 67.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3a9cba04dbb605275bf1667f259f8a03a5540a832db3947d77442bc36064a3dc
BLAKE2b-256 checksum
How to use checksums
3364b51dcc4d0118f8fa96bed569031b1513d63616d697bb0a4b29d9af814b50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.18

Security for abstract-api 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page