The official wrapper for Onfido's API. Refer to the full API documentation for details of expected requests and responses for all resources.
This version uses Onfido API v3.6. Refer to our API versioning guide for details of which client library versions use which versions of the API.
This project supersedes the automatically generated api-python-client library (onfido in PyPI).
Installation
pip install onfido-python
⚠️ Having the old onfido package installed at the same time will cause errors.
Getting started
Make API calls by using an instance of the Api class and providing your API
token:
import onfido api = onfido.Api("<YOUR_API_TOKEN>")
Regions
Set the region in the API instance using the region parameter, which takes a value from the Region enum (currently Region.EU, Region.US or Region.CA).
For example, to specify the EU region:
import onfido from onfido.regions import Region api = onfido.Api("<YOUR_API_TOKEN>", region=Region.EU)
region does not take a default parameter. Failure to pass a correct region will raise an OnfidoRegionError.
See https://documentation.onfido.com/#regions for more information about our supported regions at a given time.
Timeouts
You can optionally set a global timeout for all requests in the API constructor. This takes a floating number input and each whole integer increment corresponds to a second.
For example, to set a timeout of 1 second:
api = onfido.Api("<YOUR_API_TOKEN>", timeout=1)
The default value for timeout is None, meaning no timeout will be set on
the client side.
Response format
The Python library will return JSON requests directly from the API. Each request corresponds to a resource.
All resources share the same interface when making API calls. For example, use .create to create a resource, .find to find one, and .all to fetch all resources.
For example, to create an applicant:
applicant_details = { 'first_name': 'Jane', 'last_name': 'Doe', 'dob': '1984-01-01', 'address': { 'street': 'Second Street', 'town': 'London', 'postcode': 'S2 2DF', 'country': 'GBR' }, 'location': { 'ip_address': '127.0.0.1', 'country_of_residence': 'GBR' } } api.applicant.create(applicant_details)
{
'id': '<APPLICANT_ID>',
'created_at': '2019-10-09T16:52:42Z',
'sandbox': True,
'first_name': 'Jane',
'last_name': 'Doe',
'email': None,
'dob': '1990-01-01',
'delete_at': None,
'href': '/v3.1/applicants/<APPLICANT_ID>',
'id_numbers': [],
'address': {
'flat_number': None,
'building_number': None,
'building_name': None,
'street': 'Second Street',
'sub_street': None,
'town': 'London',
'state': None,
'postcode': 'S2 2DF',
'country': 'GBR',
'line1': None,
'line2': None,
'line3': None
},
'phone_number': None,
'location': {
'ip_address': '127.0.0.1',
'country_of_residence': 'GBR'
}
}See https://documentation.onfido.com/#request,-response-format for more information.
Resources
Resource information and code examples can be found at https://documentation.onfido.com/.
Error Handling
OnfidoServerErroris raised whenever Onfido returns a5xxresponseOnfidoRequestErroris raised whenever Onfido returns a4xxresponseOnfidoInvalidSignatureErroris raised whenever a signature from the header is not equal to the expected signature you compute for itOnfidoTimeoutErroris raised if a timeout occursOnfidoConnectionErroris raised whenever any other network error occursOnfidoUnknownErroris raised whenever something unexpected happens
Contributing
- Fork it ( https://github.com/onfido/onfido-python/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Run the tests (
poetry run pytest tests/test_my_new_feature.py) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
Support
Should you encounter any technical issues during integration, please contact Onfido’s Customer Support team via email, including the word ISSUE: at the start of the subject line.
Alternatively, you can search the support documentation available via the customer experience portal, public.support.onfido.com.