Η ίδια μηχανή,
μέσα στην εφαρμογή σας.

Ένα endpoint ανά υπηρεσία, μία κλήση, η απάντηση τεκμηριωμένη πεδίο προς πεδίο: επαλήθευση διευθύνσεων, αφαίρεση διπλοεγγραφών, email, τηλέφωνο, ιστότοπος, ιταλικός φορολογικός κωδικός, αυτόματη συμπλήρωση. Μεμονωμένα ή σε παρτίδες· για τα μεγάλα αρχεία η εργασία μπαίνει σε ουρά και την παραλαμβάνετε όταν είναι έτοιμη.

Προδιαγραφή OpenAPI: openapi.json, για να δημιουργήσετε τον client ή να την εισαγάγετε στο εργαλείο σας.

Ένα endpoint ανά υπηρεσία, με το ίδιο όνομα που έχει η υπηρεσία σε αυτόν τον ιστότοπο: /contact, /dedupe, /email, /phone, /website, /tax-code, /enrichment. Καθένα δέχεται ένα στοιχείο στο σώμα του αιτήματος ή μια λίστα στο items, έως 500 ανά κλήση (100 για τους ιστότοπους, που πρέπει να προσπελαστούν ένας προς έναν). Η αφαίρεση διπλοεγγραφών είναι η εξαίρεση και θέλει πάντα λίστα: συγκρίνει τις εγγραφές μεταξύ τους. Χωριστά στέκουν το /suggest, η αυτόματη συμπλήρωση για φόρμες (δουλεύει ανά συνεδρία όσο ο χρήστης πληκτρολογεί, όχι σε παρτίδες), και το /credit, που λέει πόσες επεξεργασίες απομένουν και σε τι κατάσταση είναι κάθε μετρητής, χωρίς να καταναλώνει καμία.

Πιστοποίηση ταυτότητας

Ο host του API είναι www.radaraddress.com. Τα ονόματα των πεδίων, των endpoint και των τιμών είναι αγγλικά αναγνωριστικά, ίδια σε κάθε γλώσσα· οι ετικέτες, οι αιτίες και τα μηνύματα ακολουθούν τη γλώσσα του αιτήματος ("language": "de" ή ?language=de, ή η κεφαλίδα Accept-Language, ή η γλώσσα του λογαριασμού). Η κεφαλίδα Content-Language λέει σε ποια γλώσσα ήρθε η απάντηση.

Προαιρετικό: αν καλείτε το API από μια φόρμα, μπορείτε να πείτε πού βρίσκεται με δύο κεφαλίδες, X-RadarAddress-Form-Page (η διεύθυνση της σελίδας με τη φόρμα) και X-RadarAddress-Form (ποια φόρμα και σε ποιο σημείο, για παράδειγμα checkout/billing). Έτσι κάθε επεξεργασία συνδέεται με τη φόρμα από την οποία ήρθε. Από τη σελίδα κρατάμε μόνο τον τομέα και τη διαδρομή, χωρίς το τμήμα μετά το ερωτηματικό.

Η πρόσβαση στο API γίνεται με token Bearer. Ο λογαριασμός είναι δωρεάν: δημιουργείτε το token από τον λογαριασμό σας και το συμπεριλαμβάνετε στην κεφαλίδα κάθε αιτήματος με αυτή τη μορφή:

# Every request needs the Authorization header
Authorization: Bearer {your-token}

Κατά τη δημιουργία μπορείτε να δώσετε στο token μια προαιρετική λήξη: μετά την ημερομηνία αυτή τα αιτήματα λαμβάνουν HTTP 401 με κωδικό token_expired· χωρίς λήξη το token ισχύει μέχρι να το ανακαλέσετε. Μπορείτε να το ανακαλέσετε ή να το αναδημιουργήσετε ανά πάσα στιγμή από τον λογαριασμό σας, όπου βλέπετε επίσης την τελευταία χρήση και τον αριθμό των αιτημάτων που εξυπηρετήθηκαν. Ένα αίτημα χωρίς token ή με μη έγκυρο token επιστρέφει HTTP 401.

Κάθε μέθοδος HTTP κάνει ό,τι λέει το όνομά της: η GET διαβάζει και δεν καταναλώνει επεξεργασίες (/credit, /countries, η εκ νέου ανάγνωση μιας εργασίας), η POST επεξεργάζεται, η DELETE διαγράφει μια εργασία. Μια μέθοδος που το endpoint δεν δέχεται λαμβάνει HTTP 405 με την κεφαλίδα Allow, που απαριθμεί τις σωστές.

Τα ιταλικά ονόματα, για όσους τα χρησιμοποιούν ήδη

Το API έχει μία μόνο έκδοση, στα αγγλικά. Όποιος ενσωμάτωσε με τα ιταλικά ονόματα δεν χρειάζεται να αλλάξει τίποτα: τα ιταλικά πεδία γίνονται δεκτά σε κάθε αίτημα, τα endpoint απαντούν και με το ιταλικό τους όνομα (/contatto, /deduplica, /codicefiscale, /arricchimento, /telefono, /sito, /suggerisci, /nazioni, /credito), και η απάντηση βγαίνει με τα ιταλικά κλειδιά και κωδικούς σε όποιον το ζητά με "language": "it".

Ο πλήρης πίνακας των πεδίων: αγγλικά → ιταλικά
αγγλικάιταλικάαγγλικάιταλικά
accountaccount metricmetrico
actionazione min_levellivello_minimo
activated_onattivato_il missingmancano
activeattiva modifiedmodificati
active_packsattivi module_versionversione_modulo
addressindirizzo monthmese
address_keyindirizzo_confronto monthly_cap_eurtetto_mese_eur
addressesindirizzi moved_fieldscampi_spostati
afterdopo multiple_postcodesmulticap
ageeta municipalitycomune
agreementconsenso municipality_codecomune_codice
ambiguous_yearanno_ambiguo municipality_code_typecomune_codice_tipo
areaarea n_recordsn_anagrafiche
asyncasincrono name_idnome_id
auto_topupauto_ricarica name_originalnome_originale
availabledisponibile national_numbernazionale
beforeprima nearbyvicino
belfiore_codecodice_belfiore needednecessarie
birth_countrynazione_nascita needs_topupda_ricaricare
birth_datedata_nascita networkrete
birth_placecomune_nascita normalizednormalizzato
birth_place_nameluogo_nascita normalized_postalnormalizzato_postale
birth_provinceprovincia_nascita not_foundnon_trovati
born_abroadnato_estero notenota
boughtcomprati notesnote
buildingedificio numbernumero
cadastral_codecatastale numbersnumeri
canonical_addressindirizzo_canonico occurrencesoccorrenze
canonical_citylocalita_canonica operationselaborazioni
care_ofpresso operatoroperatore
certificate_okcertificato_ok orderordine
changedmodificato order_datedata_ordine
changesmodifiche originorigine
chargedconsumate otheraltro
checkcontrolla outcomeesito
check_digitcontrollo outcome_labelesito_label
citylocalita outcomesesiti
city_keylocalita_confronto overall_cap_eurtetto_globale_eur
city_passescicli_localita packspacchetti
city_typelocalita_tipo parsedletto
classclasse phasefase
codecodice phonetelefono
colourcolore phone2telefono2
commentscommenti phone3telefono3
conditionscondizioni phone_outcometelefono_esito
confidenceconfidenza phonestelefoni
confirmedconfermato placeluogo
consolidateconsolida positionposizione
contactcontatto postcodecap
contact_personreferente postcode_checkcap_verifica
corrected_fromcorretta_da precisionprecisione
countercontatore preserve_originalpreserva_originale
counterscontatori presumedpresunto
countriesnazioni privacy_consentconsenso_privacy
countrynazione processedlavorato
country_codenazione_iso2 processed_atdatalav
country_originalnazione_originale professionqualifica
country_prefixprefisso_paese provenanceprovenienza
createdcreato provinceprovincia
creditcredito provincial_capitalcapoluogo
dedupededuplica purchase_urlacquisto
default_countrynazione_predefinita reachableraggiungibile
detaildettaglio reasonmotivo
differencesdifferenze record_outcomeesito_record
discardedscartati recordsanagrafiche
disposableusa_e_getta redirectsredirect
districtquartiere referenceriferimento
domain_checkeddominio_verificato reference_idriferimento_id
domain_existsdominio_esiste remainingrimaste
donefatte renews_onsi_rinnova_il
duration_msdurata_ms reset_onsi_azzerano_il
e164formato_e164 rowsrighe
educationtitolo_studio salutationsaluto
email_outcomeemail_esito savesalva
enrichmentarricchimento segment_passescicli_arcostradale
entriesschede sessionsessione
errorerrore shop_domaindominio
existing_accountaccount_esistente shortbreve
existsesiste similar_tosimile_a
expiryscadenza singlessingoli
explanationsspiegazioni sizetaglia
extensionestensione sourcefonte
fieldcampo specificityspecificita
final_urlurl_finale spent_month_eurspeso_mese_eur
first_namenome spent_overall_month_eurspeso_globale_mese_eur
fix_typoscorreggi_refusi statestato
foreignesteri statesstati
foreign_addressestero streetstrada
formal_salutationsaluto_formale street_idvia_id
formatformato street_nametoponimo
foundtrovato street_passescicli_toponimo
freegratuite street_proper_nameduf
free_forevergratis_per_sempre street_typedug
full_namenominativo sub_addresssubindirizzo
gendersesso sub_address_confirmedsubindirizzo_confermato
gender_sourcefonte_sesso subject_typetipo_soggetto
genericgenerica subscriptionabbonamento
groupgruppo suffixesponente
groupsgruppi suggestionsuggerimento
hamletfrazione summaryriepilogo
hintssuggerimenti supportedsupportato
homocodeomocodo syntaxsintassi
house_numbercivico tax_codecodice_fiscale
house_number_labelcivico_label tax_code_outcomecodice_fiscale_esito
house_number_verifiedcivico_verificato territoryterritorio
house_numberscivici texttesto
informal_salutationsaluto_informale time_mstempo_ms
iso2codice_iso2 titletitolo
iso3codice_iso3 to_checkda_controllare
istat_codeistat totaltotali
itemselementi towncitta
joblavoro truncatedtroncato
languagelingua typetipo
languageslingue type_normalizedtipo_norm
last_namecognome typestipi
last_onultimo_il typo_levellivello_refuso
last_usedultimo_uso unresolvednon_risolti
leftresiduo url_normalizedurl_normalizzato
legacy_defaultdefault_storico usedusate
letter_namenome_lettera validvalida
levellivello valuevalore
lightleggere warningavviso
longlungo warningsavvisi
long_namenome_esteso websitesito
main_recordprincipale website2sito2
matchcorrisponde website3sito3
matchesabbinamenti website_outcomesito_esito
membersmembri websitessiti
methodmetodo zonedzonato

Και οι τιμές των επιλογών έχουν ιταλικό όνομα: format nazionale/internazionale, action genera/valida/estrai/confronta/seleziona, foreign dichiarati/rileva, min_level certo/probabile/ambiguo· με "language": "it" βγαίνουν έτσι και τα level, confidence, state, οι κωδικοί του outcome και οι επικεφαλίδες των αρχείων. Στην είσοδο γίνονται δεκτά και συνηθισμένα συνώνυμα (zip, surname, phone_number, date_of_birth…), και οι ίδιες επικεφαλίδες στα αρχεία των μαζικών εργασιών.

Endpoint επαλήθευσης διευθύνσεων

POST /api/v1/contact

Τακτοποιεί ολόκληρη την επαφή: τη διεύθυνση στο ταχυδρομικό πρότυπο της χώρας της — στην Ιταλία και στις χώρες με το μητρώο σε λειτουργία, οδός και αριθμός επαληθεύονται στο εθνικό μητρώο διευθύνσεων· αλλού η διεύθυνση βγαίνει στην ταχυδρομική μορφή της χώρας —, το ονοματεπώνυμο και — αν το αίτημα τον περιέχει — τον ιταλικό φορολογικό κωδικό, που καθαρίζεται, συμπληρώνεται όταν λείπει μόνο ο χαρακτήρας ελέγχου και συγκρίνεται με επώνυμο, όνομα, φύλο και ημερομηνία γέννησης. Μία επαφή τη φορά, ή έως 500 στο items: το σχήμα είναι το ίδιο με κάθε άλλο endpoint.

Στην ίδια εγγραφή μπορείτε να στείλετε email, phone και website: τα ελέγχουμε στην ίδια επεξεργασία, μαζί με το ονοματεπώνυμο και το tax_code. Η απάντηση περιέχει email_outcome, phone_outcome, website_outcome και enrichment (φύλο, τίτλος, προσφώνηση). Τα αποτελέσματά τους δεν περιλαμβάνονται στο outcome, που παραμένει το αποτέλεσμα της διεύθυνσης και του φορολογικού κωδικού. Σε μια λίστα γίνεται επικοινωνία με έως 100 ιστότοπους ανά κλήση: στους υπόλοιπους ελέγχεται μόνο η μορφή.

Δύο διακόπτες, ενεργοί αν δεν τους στείλετε: το network:false δεν επικοινωνεί με τους ιστότοπους και το dns:false δεν ελέγχει αν ο τομέας των email δέχεται αλληλογραφία. Έτσι μένει μόνο ο έλεγχος της μορφής και είναι πιο γρήγορο. Ισχύουν για όλη την κλήση, και με async, και είναι οι ίδιοι με αυτούς των /website και /email.

Η χώρα δίνεται με country_code (ISO 3166-1: IT, DE, FR…) ή με country, γραμμένη όπως να 'ναι: «Germania», «Germany», «Deutschland», «Ομοσπονδιακή Δημοκρατία της Γερμανίας», «UK», «Ολλανδία». Αν λείπει, θεωρείται Ιταλία. Στις χώρες με το μητρώο σε λειτουργία — σήμερα Γαλλία, Γερμανία, Ισπανία, Κάτω Χώρες, Βέλγιο, Φινλανδία, Ελβετία, Τσεχία, Πορτογαλία, Δανία, Νορβηγία, Αυστρία, Σλοβακία, Κροατία, Ελλάδα, Ρουμανία, Ουγγαρία, Σλοβενία, Ιρλανδία, Ισλανδία, Λουξεμβούργο, Λιχτενστάιν, Άγιος Μαρίνος, Μονακό, Ανδόρα, Βατικανό, ο ενημερωμένος κατάλογος βρίσκεται στις Χώρες — οδός και αριθμός επαληθεύονται στο εθνικό μητρώο διευθύνσεων ακριβώς όπως στην Ιταλία: ταχυδρομικός κώδικας επιβεβαιωμένος ή συμπληρωμένος, συντεταγμένες του αριθμού στο geo, συνοικία ή arrondissement στο district όπου η πόλη τα έχει (Hamburg-Altstadt, Paris 4e Arrondissement), κωδικός δήμου στο territory.municipality_code. Στα ιταλικά το αποτέλεσμα φέρει FOREIGN ακολουθούμενο από τις αλλαγές, στις άλλες γλώσσες μόνο τις αλλαγές· αν η οδός υπάρχει και ο αριθμός όχι, HOUSE_NUMBER_NOT_FOUND. Στις άλλες χώρες δουλεύουμε στη μορφή, και το μήνυμα το λέει: ταχυδρομικός κώδικας στη μορφή της χώρας, συντομογραφίες της οδού ολογράφως, κεφαλαία και όνομα πόλης όπως τα γράφει το ταχυδρομείο εκείνης της χώρας (Hauptstr. 5, Munich → Hauptstraße 5, MÜNCHEN), με τη γραμμή της χώρας. Και στις δύο περιπτώσεις επιστρέφει το address_key, η μορφή με την οποία η αφαίρεση διπλοεγγραφών αναγνωρίζει την ίδια οδό γραμμένη με δύο τρόπους. Με "foreign": "detect" μια εγγραφή χωρίς χώρα που δεν βρίσκεται στην Ιταλία αναγνωρίζεται ως ξένη όταν το κείμενο το λέει ξεκάθαρα· η προεπιλογή declared αφήνει ως ξένη μόνο όποια το δηλώνει. Ο πλήρης κατάλογος των χωρών, με σύντομο και επίσημο όνομα, στα αγγλικά και στη γλώσσα της χώρας, είναι διαθέσιμος με GET /api/v1/countries και μπορεί να ερωτηθεί με ?q=Germania, ?q=Deutschland ή ?q=DE.

Για μια παρτίδα από μία μόνο χώρα δεν χρειάζεται να επαναλαμβάνετε τη χώρα σε κάθε στοιχείο: το default_country ("DE", "Germany") ισχύει για τα στοιχεία που δεν τη δηλώνουν, στην επαλήθευση διευθύνσεων, στην αφαίρεση διπλοεγγραφών, στον εμπλουτισμό (επιλέγει το λεξικό των ονομάτων) και στην επαλήθευση τηλεφώνου, και στις ασύγχρονες εργασίες. Η χώρα που είναι γραμμένη στο στοιχείο υπερισχύει πάντα· χωρίς καμία από τις δύο, το στοιχείο είναι ιταλικό.

curl -X POST https://www.radaraddress.com/api/v1/contact \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"address":"via leopardi 4","postcode":"20100","city":"milano","province":"mi","id":"RIF-001"}'

Για την παρτίδα, τα ίδια πεδία μέσα στο items· η απάντηση είναι { count, results: [ { id, result } ] } με την ίδια σειρά που στάλθηκαν.

curl -X POST https://www.radaraddress.com/api/v1/contact \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"items":[{"id":"1","address":"via leopardi 4","city":"milano"},
                   {"id":"2","address":"via roma 1","postcode":"20121","tax_code":"RSSMRA85M01H501Q"}]}'

Το ίδιο endpoint για μια διεύθυνση σε άλλη χώρα: αρκεί το country_code. Εδώ το Αμβούργο, επαληθευμένο στο γερμανικό μητρώο, με τη συνοικία και τις συντεταγμένες του αριθμού.

curl -X POST https://www.radaraddress.com/api/v1/contact \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"address":"Mönckebergstr. 7","postcode":"20095","city":"Hamburg","country_code":"DE"}'
→ { "outcome": "FOREIGN MODIFIED CITY_FORM STREET_FORM",
  "normalized": { "address": "Mönckebergstraße 7", "postcode": "20095", "city": "HAMBURG", "country": "Germany", "country_code": "DE" },
  "municipality": "Hamburg", "district": "Hamburg-Altstadt", "address_key": "MONCKEBERGSTRASSE",
  "geo": { "lat": 53.5512437, "lon": 10.0028651, "precision": "house_number", "source": "inspire" },
  "territory": { "country": "DE", "municipality_code": "AdminUnitName_49021011010101", "municipality_code_type": "inspire" } }

Επιλογές που ισχύουν για ολόκληρη την κλήση: postal_form (φέρνει και το normalized στην ταχυδρομική μορφή), preserve_original (κρατά το όνομα όπως το έγραψε ο χρήστης και εκθέτει χωριστά το κανονικό), precision 1–5 (προεπιλογή 3· πάνω από 3 η αντιστοίχιση είναι προσεγγιστική και η αξιοπιστία δεν θα είναι high).

Τα επίπεδα του precision: το καθένα κάνει και ό,τι κάνουν τα προηγούμενα.

  • 1 Αυστηρή: Η τοποθεσία όπως είναι γραμμένη· στην οδό μόνο οι διορθώσεις που τα δεδομένα επιβεβαιώνουν χωρίς αμφιβολία.
  • 2 Στενή: Επιπλέον διορθώνει λάθος ταχυδρομικούς κώδικες και επαρχίες και αναγνωρίζει τις συντομευμένες τοποθεσίες.
  • 3 Κανονική (προεπιλογή): Επιπλέον βρίσκει τα μισογραμμένα ονόματα και μεταφέρει τη διεύθυνση στον δήμο όπου πράγματι βρίσκεται η οδός.
  • 4 Ευρεία: Επιπλέον δέχεται ονόματα που ακούγονται ίδια και, ανάμεσα σε οδούς με το ίδιο όνομα, επιλέγει την πιο γνωστή. Η αξιοπιστία δεν είναι ποτέ υψηλή.
  • 5 Μέγιστη: Ό,τι μπορεί να βρεθεί. Η αξιοπιστία δεν είναι ποτέ υψηλή.

Μαζί με τη διεύθυνση έρχεται το city_type, που λέει αν το σημείο παράδοσης βρίσκεται σε πρωτεύουσα επαρχίας ή σε πόλη της επαρχίας — η διαφορά που μετράει για όποιον τμηματοποιεί μια καμπάνια ανά πόλη. Το provincial_capital είναι true, false ή null όταν δεν έχουμε στοιχεία για να το πούμε — και στην περίπτωση αυτή δεν μαντεύουμε.

→ { "city_type": { "provincial_capital": true, "label": "Provincial capital" } }

Δίπλα στον ταχυδρομικό κώδικα έρχεται το postcode_check: από πού προέρχεται (source) και με ποια ακρίβεια (precision: house_number ο ίδιος ο αριθμός, interpolated οι γειτονικοί αριθμοί της ίδιας οδού, street η πλειοψηφία της οδού, locality, municipality), πόσοι αριθμοί το λένε (house_numbers) και με ποια συμφωνία (agreement, από 0 έως 1). Αν λείπει επιβεβαίωση για τον αριθμό, το αποτέλεσμα φέρει POSTCODE_UNCONFIRMED και το confirmed είναι false: ο ταχυδρομικός κώδικας μένει όπως δηλώθηκε, εφόσον ανήκει στην πόλη, και πρέπει να ελεγχθεί.

→ { "postcode_check": { "source": "osm", "precision": "house_number", "house_numbers": 3, "agreement": 1, "confirmed": true } }

Επιστρέφουν επίσης οι συντεταγμένες στο geo (γεωγραφικό πλάτος και μήκος WGS84) και τα εδαφικά αναγνωριστικά στο territory: στην Ιταλία ο κωδικός ISTAT και ο κτηματολογικός κωδικός του δήμου, το CAB και το εθνικό αναγνωριστικό της οδού· στις άλλες χώρες το country και ο κωδικός του δήμου στο εθνικό μητρώο (municipality_code). Το πεδίο precision λέει σε ποιο επίπεδο φτάσαμε: house_number όταν ο αριθμός είναι γεωαναφερμένος, interpolated όταν ο ακριβής αριθμός λείπει και το σημείο εκτιμάται, street όταν έχουμε το σημείο της οδού, municipality όταν έχουμε μόνο το κέντρο του δήμου. Το source λέει από πού προέρχεται το σημείο: anncsu είναι το ιταλικό εθνικό μητρώο, inspire το εθνικό μητρώο της χώρας, osm το OpenStreetMap: στην περίπτωση αυτή τα δεδομένα είναι © OpenStreetMap contributors, άδεια ODbL, και η αναφορά προέλευσης πρέπει να αναπαράγεται αν τα δημοσιεύσετε. Όπου το μητρώο μιας χώρας απαιτεί αναφορά προέλευσης, βγαίνει στο μήνυμα. Στο CSV των μαζικών εργασιών είναι οι στήλες latitude, longitude, geo_precision, istat_code και cadastral_code.

→ { "geo": { "lat": 45.4762711, "lon": 9.207104, "precision": "house_number", "source": "anncsu" },
  "territory": { "istat_code": "015146", "cadastral_code": "F205", "cab": "01600", "street_id": "1026700" } }

Ο όροφος, η σκάλα και το διαμέρισμα που γράφονται στη διεύθυνση επιστρέφουν και ως χωριστό στοιχείο στο sub_address: μια λίστα ζευγών type και value, που διαβάζονται με τους ταχυδρομικούς κανόνες της χώρας (στη Γερμανία μετά το «//», στη Γαλλία σε δική τους γραμμή, στην Πορτογαλία «3º Esq»). Οι τύποι είναι unit (διαμέρισμα), staircase (σκάλα), floor (όροφος), block, building, building_number και block_number. Η γραμμή της διεύθυνσης μένει στη μορφή της χώρας. Ό,τι δεν αναγνωρίζουμε μένει όπως γράφτηκε και δεν μπαίνει στη λίστα: δεν το μαντεύουμε. Όταν η μονάδα που δηλώθηκε υπάρχει σε αυτόν τον αριθμό, το sub_address_confirmed είναι true· αλλιώς null, ποτέ false: το ότι δεν τη βρίσκουμε δεν σημαίνει ότι είναι λάθος.

→ { "sub_address": [ { "type": "floor", "value": "3" }, { "type": "unit", "value": "ESQ" } ], "sub_address_confirmed": true }

Endpoint αφαίρεσης διπλοεγγραφών

POST /api/v1/dedupe

Αναγνωρίζει τις εγγραφές που αναφέρονται στο ίδιο πρόσωπο στην ίδια διεύθυνση ακόμη κι όταν είναι γραμμένες διαφορετικά: υποκοριστικά και ισοδυναμίες ονομάτων (Dany ≈ Daniela), επώνυμο και όνομα αντεστραμμένα, συντομογραφίες ("V. Roma" ≈ "Via Roma"), τυπογραφικά λάθη. Η σύγκριση των διευθύνσεων περνά από τη μηχανή κανονικοποίησης: δύο γραφές της ίδιας οδού συμπίπτουν στην κανονική μορφή πριν από τη σύγκριση. Το πολύ 500 επαφές ανά κλήση (εγγραφές + αναφορά)· για μεγαλύτερες λίστες χρησιμοποιήστε τη μαζική εργασία από τον λογαριασμό σας.

Βιβλία επαφών. Μια επαφή σε ένα βιβλίο επαφών (Επαφές της Apple, Google, Outlook: το μοντέλο vCard) έχει περισσότερες διευθύνσεις, τηλέφωνα και email, καθένα με μια ετικέτα. Το endpoint τα δέχεται όπως είναι, χωρίς όριο: το addresses είναι λίστα αντικειμένων με type και τα συνηθισμένα πεδία· τα phones και emails είναι λίστες όπου κάθε στοιχείο είναι η γυμνή τιμή ("340 7491386") ή {"type": "work", "value": "02 66710423"}, και ανάμεικτα· τα συνηθισμένα επίπεδα πεδία παραμένουν έγκυρα και μετρούν ως πρώτη διεύθυνση και πρώτο στοιχείο επικοινωνίας. Δύο επαφές είναι το ίδιο πρόσωπο αν οποιοδήποτε ζεύγος των διευθύνσεών τους ταιριάζει (το γραφείο της μιας με τη μοναδική διεύθυνση της άλλης), ή αν έχουν το ίδιο ονοματεπώνυμο και κοινό τηλέφωνο ή email, σε οποιαδήποτε θέση και με οποιαδήποτε ετικέτα. Η ετικέτα δεν βαραίνει στην αντιστοίχιση: επιστρέφει όπως έφτασε, συν το type_normalized στο λεξιλόγιο vCard (home, work, cell…), ώστε η εφαρμογή να ξέρει πού να γράψει πίσω. Μία επαφή είναι μία επεξεργασία, όσες διευθύνσεις και στοιχεία επικοινωνίας κι αν έχει.

curl -X POST https://www.radaraddress.com/api/v1/dedupe \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "records": [
      { "id": "C1", "last_name": "Rossi", "first_name": "Daniela",
        "address": "Via Leopardi 4", "postcode": "20123", "city": "Milano", "province": "MI" },
      { "id": "C2", "last_name": "Rossi", "first_name": "Daniela",
        "address": "V. Leopardi 4", "postcode": "20100", "city": "milano", "province": "MI" }
    ]
  }'

Η απάντηση ομαδοποιεί τις διπλοεγγραφές στο groups: κάθε ομάδα απαριθμεί τα id των members της, λέει ποια να κρατηθεί (main_record) και προτείνει την ενοποιημένη record: το καλύτερο ονοματεπώνυμο και την ένωση διευθύνσεων και στοιχείων επικοινωνίας (addresses, phones, emails), καθένα με τον τύπο του, με provenance (από ποιες επαφές προέρχεται) και χωρίς διπλά: η ίδια οδός σε δύο γραφές είναι μία διεύθυνση, ο ίδιος αριθμός με δύο ετικέτες ένας αριθμός. Οι επαφές χωρίς αντιστοιχία βρίσκονται στο singles, ως αντικείμενα {id, outcome}: με outcome INTERNAL_DUPLICATE η επαφή δεν έχει διπλοεγγραφές με άλλες αλλά έχει διπλά στοιχεία στο εσωτερικό της (διεύθυνση γραμμένη δύο φορές, επαναλαμβανόμενος αριθμός), και φέρει τη συγχωνευμένη της record. Αναγνωρίζει την ίδια οδό γραμμένη με διαφορετικούς τρόπους ("V. Leopardi 4" ≈ "Via Giacomo Leopardi 4"), τον ταχυδρομικό κώδικα που διορθώθηκε αυτόματα και επώνυμο και όνομα αντεστραμμένα.

Παράμετροι της αφαίρεσης διπλοεγγραφών
ΠαράμετροςΤύποςΠεριγραφή
recordsarrayΥποχρεωτικό. Εγγραφές με last_name, first_name, address, postcode, city, province και προαιρετικά id, gender, email, phone, country. Οι ξένες εγγραφές (πεδίο country, ή επαρχία EE) αναγνωρίζονται ακόμη κι όταν είναι γραμμένες διαφορετικά («Hauptstr. 5» και «Hauptstraße 5»)· δύο διαφορετικές χώρες δεν είναι ποτέ η ίδια εγγραφή. Ένα κοινό τηλέφωνο ή email φέρνει κοντά δύο εγγραφές ακόμη και με διαφορετική διεύθυνση: το πολύ probable αν το στοιχείο επικοινωνίας είναι προσωπικό, μόνο ambiguous αν ανήκει σε κοινόχρηστο χώρο (σταθερό τηλέφωνο, γενικό email)
addresses, phones, emailsarrayΠροαιρετικά, μέσα σε κάθε εγγραφή: οι λίστες του βιβλίου επαφών, χωρίς όριο (βλ. παραπάνω). Τα phone και email δέχονται τις ίδιες τρεις μορφές: τη γυμνή τιμή, μια λίστα τιμών, μια λίστα από {type, value}
tax_codestringΠροαιρετικό, μέσα σε κάθε εγγραφή. Αν είναι έγκυρος και συνεπής με το ονοματεπώνυμο της εγγραφής, δύο εγγραφές με τον ίδιο κωδικό είναι το ίδιο πρόσωπο ακόμη και σε διαφορετικές διευθύνσεις (certain, αιτία «ίδιος φορολογικός κωδικός»)· με δύο έγκυρους, διαφορετικούς κωδικούς δεν είναι ποτέ certain ούτε probable. Ένας κωδικός που δεν ταιριάζει με το ονοματεπώνυμο δεν έχει βαρύτητα
referencearrayΠροαιρετικό: λειτουργία δύο λιστών. Κάθε εγγραφή αναζητείται στη λίστα αναφοράς· απάντηση με matches και not_found
min_levelstringcertain | probable (προεπιλογή) | ambiguous: πόσο ελαστική είναι η αντιστοίχιση. certain = οδός και αριθμός πρέπει να συμπίπτουν· ambiguous αγνοεί τον αριθμό. Δύο εγγραφές χωρίς διεύθυνση ούτε πόλη δεν είναι ποτέ certain
foreignstringdeclared (προεπιλογή: ξένη είναι μόνο η εγγραφή που δίνει τη χώρα) | detect (και από ρητές ενδείξεις στο κείμενο: όνομα της χώρας, γνωστή ξένη πόλη, ταχυδρομικός κώδικας σε μη ιταλική μορφή)
precisionint1–5 (προεπιλογή 3), η ίδια κλίμακα με τον έλεγχο επαφής: εδώ διευρύνει την ανάγνωση του επωνύμου. Έως το 3 διαβάζεται γράμμα προς γράμμα· στο 4 ζευγαρώνουν οι εγγραφές με το επώνυμο γραμμένο με ή χωρίς κενό («La Pera», «Lapera»), στο 5 και εκείνες με επώνυμο που ακούγεται ίδιο («Lepera», «La Pera»). Αυτές οι ομάδες δεν ξεπερνούν ποτέ το ambiguous, και χωρίς min_level μια ακρίβεια 4 ή 5 θέτει το ελάχιστο σε ambiguous. Δεν αλλάζει τον έλεγχο της διεύθυνσης
saveboolΠροεπιλογή true: το αποτέλεσμα παραμένει αναγνώσιμο για 30 ημέρες με GET /api/v1/dedupe?job=<code>· ο κωδικός έρχεται στο πεδίο job. Με POST {"job", "group", "processed": true} σημειώνετε μια ομάδα ως ελεγμένη
asyncboolΠάνω από 500 επαφές, έως 100.000: η κλήση απαντά αμέσως HTTP 202 με τον κωδικό της εργασίας και ο έλεγχος διπλοτύπων μπαίνει στην ουρά των αρχείων. Με GET /api/v1/dedupe?job=<code> διαβάζετε την κατάσταση και, όταν τελειώσει η εργασία, το αποτέλεσμα γραμμή προς γραμμή· με format=zip το zip με το καθαρό αρχείο, τα διπλότυπα προς αφαίρεση, τις ομάδες και τι αλλάζει. Μία μόνο λίστα: χωρίς reference

Endpoint ιταλικού φορολογικού κωδικού

POST /api/v1/tax-code

Τρεις ενέργειες στον ιταλικό φορολογικό κωδικό (codice fiscale) των φυσικών προσώπων: generate από τα προσωπικά στοιχεία, validate έναν υπάρχοντα κωδικό (μορφή, χαρακτήρας ελέγχου και omocodia), extract τις πληροφορίες που περιέχει — ημερομηνία γέννησης, ηλικία, φύλο, δήμος ή ξένη χώρα γέννησης. Επιπλέον το compare ελέγχει ότι ένας κωδικός ταιριάζει με τα δηλωμένα προσωπικά στοιχεία. Καλύπτει τους κτηματολογικούς κωδικούς κάθε ιταλικού δήμου και των ξένων χωρών. Επώνυμο και όνομα πρέπει να δίνονται με λατινικούς χαρακτήρες: για όποιον έχει όνομα σε άλλο αλφάβητο, ο κωδικός υπολογίζεται με τη μεταγραφή που αναγράφεται στο έγγραφο, η οποία δεν είναι μοναδική (Dmitrij/Dmitry)· ένα μη λατινικό όνομα επιστρέφει cognome_non_latino ή nome_non_latino, και στο compare μια διαφορά στο ονοματεπώνυμο κάποιου που γεννήθηκε στο εξωτερικό φέρει σημείωση για πιθανή διαφορετική μεταγραφή.

Οι πρώτες 500 ελαφριές επεξεργασίες τον μήνα είναι δωρεάν (μαζί με τον φορολογικό κωδικό), και η ποσόστωση είναι ενιαία για κάθε τρόπο χρήσης της υπηρεσίας: ό,τι κάνετε εδώ, στον ιστότοπο και στα μαζικά αρχεία μετράει στην ίδια ποσόστωση. Πέρα από αυτήν, οι ελαφριές επεξεργασίες πληρώνονται στην τιμή τους (βλ. τιμές).

curl -X POST https://www.radaraddress.com/api/v1/tax-code \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "generate",
    "last_name": "Rossi", "first_name": "Mario", "gender": "M",
    "birth_date": "1980-01-01", "birth_place": "Roma"
  }'

→ { "ok": true, "tax_code": "RSSMRA80A01H501U", "place": "Roma", "province": "RM" }

Για μεγάλους όγκους: το { "action": "validate", "items": [ … ] } επεξεργάζεται έως 500 στοιχεία ανά κλήση, καθένα με το δικό του id συσχέτισης. Η εξαγωγή επισημαίνει με ambiguous_year τις περιπτώσεις όπου τα δύο ψηφία του έτους δεν ξεχωρίζουν τον αιώνα (1926 έναντι 2026).

Κάθε απάντηση φέρει outcome, reason, notes και comments στη γλώσσα του αιτήματος: GENERATED για generate, κενό για έγκυρο κωδικό στο validate, MATCH ή MISMATCH για compare (με differences: τα πεδία που διαφέρουν). Όταν ο κωδικός δεν περνά τους ελέγχους το αποτέλεσμα είναι ένας από τους κωδικούς TAX_CODE_* παρακάτω και το error δίνει τη σύντομη μορφή (check_digit, length, format, homocode, month, date, place, empty)· στο generate λέει ποιο στοιχείο λείπει ή δεν επιλύεται (last_name, first_name, gender, birth_date, birth_place, ambiguous_place με options, last_name_non_latin). Το suggestion φέρει τον σωστό κωδικό όταν ο έλεγχος μπορεί να τον ανασυνθέσει.

Endpoint εμπλουτισμού

POST /api/v1/enrichment

Εμπλουτίζει ένα ονοματεπώνυμο: φύλο που συνάγεται από το όνομα, τύπος υποκειμένου (φυσικό ή νομικό πρόσωπο), κανονικοποιημένος τίτλος (Dr.ssa, Avv., …) και προσφωνήσεις έτοιμες για αλληλογραφία — "Egregio Sig. Rossi", "Gentile Dr.ssa Bianchi", "Spett.le" για τις εταιρείες, "Gentile Famiglia" για τα νοικοκυριά, "Caro/Cara" για το ανεπίσημο ύφος. Αναγνωρίζει επίσης τη μορφή του επωνύμου συζύγου ("Rossi in Verdi" → γυναίκα, με τη λεπτομέρεια των δύο επωνύμων). Το πεδίο gender δέχεται και γραπτές μορφές («maschio», «donna», «Sig.ra», «male»)· το X δηλώνει φορέα και το G οικογένεια ή ζευγάρι. Αν ο τίτλος λείπει, τον συνάγουμε από το profession (το επάγγελμα) ή από το education, όταν δίνεται. Τα λεξικά είναι ιταλικά.

curl -X POST https://www.radaraddress.com/api/v1/enrichment \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "last_name": "Rossi", "first_name": "Dott.ssa Maria" }'

→ { "ok": true, "gender": "F", "subject_type": "natural_person", "title": "Dr.ssa",
    "formal_salutation": "Gentile Dr.ssa Rossi", "informal_salutation": "Cara Maria", … }

Σε παρτίδες: { "items": [ … ] }, έως 500 ανά κλήση. Το αποτέλεσμα είναι ENRICHED (φύλο και προσφωνήσεις ορισμένα), LEGAL_PERSON (εταιρεία ή φορέας: αντιμετωπίζεται ως επωνυμία) ή PARTIAL (λείπει το όνομα ή το φύλο δεν συνάγεται): το reason λέει γιατί, τα comments τι να προστεθεί.

Endpoint επαλήθευσης email

POST /api/v1/email

Επαληθεύει μια διεύθυνση email: σύνταξη, ύπαρξη του τομέα (εγγραφές MX/A), τυπογραφικά λάθη σε συνηθισμένους τομείς με προτεινόμενη διόρθωση (gmial.com → gmail.com), προσωρινοί τομείς, γενικές διευθύνσεις ρόλου (info@, accounts@: όχι ενός προσώπου). Δεν κάνουμε επαλήθευση SMTP της μεμονωμένης θυρίδας, πρακτική παρεμβατική και αναξιόπιστη. Παρτίδα items έως 500· το "dns": false παραλείπει την αναζήτηση του τομέα.

Ένα βέβαιο τυπογραφικό λάθος διορθώνεται αυτεπάγγελτα: όταν η διεύθυνση όπως είναι γραμμένη δεν είναι καν διεύθυνση (name@domain,com με το κόμμα) ή όταν η διόρθωση καταλήγει σε γνωστό πάροχο (gmai.com → gmail.com, ακόμη και με ένα γράμμα διαφορά όταν ο τομέας όπως γράφτηκε δεν λαμβάνει αλληλογραφία), το email βγαίνει διορθωμένο, το corrected_from φέρει ό,τι είχε γραφτεί και το αποτέλεσμα είναι MODIFIED EMAIL_DOMAIN. Ένα πιθανό τυπογραφικό λάθος σε οποιονδήποτε άλλο τομέα (rossi.con) παραμένει πρόταση: EMAIL_TYPO με τη διόρθωση στο suggestion, και οι έλεγχοι (domain_exists, domain_checked) γίνονται σε αυτήν· η διεύθυνση όπως είναι γραμμένη δεν επαληθεύεται.

Ένα domain που απέχει ένα πάτημα πλήκτρου από γνωστό πάροχο διορθώνεται ανάλογα με το precision (1-5, προεπιλογή 3· τα 4 και 5 μετρούν ως 3). Στο 1 μόνο αν το domain όπως γράφτηκε δεν υπάρχει (gmail.cob, hotmial.ocm)· στο 2 και αν υπάρχει αλλά δεν δέχεται αλληλογραφία (libreo.it)· στο 3 και αν δέχεται email: σταθμευμένα domain, πραγματικοί οργανισμοί (libera.it, lice.it) και γραφές «με το αυτί» (gemail.com, jmail.com). Λάθος κατάληξη σε οποιοδήποτε domain (studiorossi.con) διορθώνεται αν το σωστό domain δέχεται email. Κάτω από το επίπεδο του λάθους, που επιστρέφεται στο typo_level, η διεύθυνση μένει όπως γράφτηκε και το similar_to φέρει τη διεύθυνση που ίσως εννοούνταν, με μια σημείωση. Με "fix_typos": false, για όλη την κλήση ή για ένα μόνο στοιχείο, δεν διορθώνεται κανένα λάθος: η διεύθυνση μένει όπως γράφτηκε και η διόρθωση βγαίνει στο similar_to. Χρησιμεύει όταν το πρόσωπο έχει επιβεβαιώσει ότι θέλει ακριβώς αυτή τη διεύθυνση.

Endpoint επαλήθευσης τηλεφώνου

POST /api/v1/phone

Ελέγχει έναν αριθμό χωρίς να καλέσει κανέναν: μορφή, κατηγορία και τύπος, μήκος σύμφωνα με το σχέδιο αριθμοδότησης, περιοχή του σταθερού και πάροχος στον οποίο αποδόθηκε αρχικά το μπλοκ. Η class είναι η ανάγνωση που χρειάζεστε για να δουλέψετε μια λίστα: mobile (μπορείτε να στείλετε SMS), landline (το καλείτε σε ώρες γραφείου), special (δεν είναι αριθμός προσώπου: έκτακτης ανάγκης, κοινής ωφέλειας, χωρίς χρέωση και με ειδική χρέωση), foreign για τους αριθμούς με διεθνές πρόθεμα. Όταν αναγνωρίζουμε και την ακριβή υπηρεσία, το type το λέει (χωρίς χρέωση, ειδική χρέωση, μερισμένο κόστος, κοινής ωφέλειας). Το ιταλικό πρόθεμα γραμμένο χωρίς το + (39347…, κλασικό λάθος των εξαγωγών) αφαιρείται όταν τα ψηφία δεν αφήνουν αμφιβολία — το 3934567890 παραμένει το κινητό που είναι. Αν το ίδιο πεδίο περιέχει περισσότερους αριθμούς («347… - 338…») τους χωρίζουμε: επιστρέφουν ως phone, phone2, phone3, και το phone δεν είναι ποτέ κενό όταν υπάρχει τουλάχιστον ένας αριθμός. Με "format": "international" ο ιταλικός αριθμός βγαίνει στη μορφή +39…· η προεπιλογή national τον αφήνει γυμνό και βάζει το πρόθεμα μόνο στους ξένους. Για τους ξένους αριθμούς επιστρέφει και το e164, η χώρα του προθέματος στο country_code, και το μηδέν του εθνικού δικτύου μετά το πρόθεμα αφαιρείται («+44 (0)20…» και «+44 20…» δίνουν τον ίδιο αριθμό). Με country_code (ή country) στην κλήση ή στο στοιχείο, ένας αριθμός γραμμένος χωρίς πρόθεμα διαβάζεται ως εθνικός αριθμός εκείνης της χώρας: το «020 7946 0958» σε μια εγγραφή του Ηνωμένου Βασιλείου είναι Λονδίνο, όχι Μιλάνο. Χωρίς χώρα παραμένει ιταλικός. Παρτίδα items έως 500.

Ένας αριθμός από την ίδια τη χώρα της εγγραφής δεν είναι «ξένος»: όπου γνωρίζουμε το σχέδιο αριθμοδότησης παίρνει την class του (mobile, landline, special), με format national μένει χωρίς κωδικό χώρας στη μορφή της χώρας του (μαζί με το μηδέν του εθνικού δικτύου), και επιστρέφει το national_number δίπλα στο e164. Τα PHONE_FOREIGN και class foreign παραμένουν για τους αριθμούς χώρας διαφορετικής από αυτή της εγγραφής.

curl -X POST https://www.radaraddress.com/api/v1/phone \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"phone":"3790328959 - 011 0000000"}'

Endpoint επαλήθευσης ιστότοπου

POST /api/v1/website

Ελέγχει ότι η διεύθυνση είναι σωστά γραμμένη και ότι ο ιστότοπος πράγματι αποκρίνεται: ύπαρξη του τομέα, αίτημα HTTP με παρακολούθηση των ανακατευθύνσεων, τελικός κωδικός, εγκυρότητα του πιστοποιητικού. Καμία κρίση για το περιεχόμενο. Και εδώ περισσότερες διευθύνσεις στο ίδιο πεδίο επιστρέφουν ως website, website2, website3. Με "network": false ελέγχουμε μόνο τη μορφή, χωρίς να προσπελάσουμε τον ιστότοπο. Παρτίδα items έως 100: κάθε έλεγχος ανοίγει μια σύνδεση, οπότε η παρτίδα είναι μικρότερη από τα άλλα endpoint.

curl -X POST https://www.radaraddress.com/api/v1/website \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"website":"www.example.com"}'

Endpoint αυτόματης συμπλήρωσης διεύθυνσης

POST /api/v1/suggest

Ξεκινάτε από το μηδέν; Το widget ra-suggerisci.js και ένας μικρός proxy στον διακομιστή σας αρκούν: το token δεν πηγαίνει ποτέ στον browser.

Προτάσεις όσο ο χρήστης πληκτρολογεί μια διεύθυνση στη φόρμα σας: ολόκληρο το ιταλικό μητρώο οδών, με το όνομα συμπληρωμένο («via verdi» → «Via Giuseppe Verdi»), δήμο και επαρχία· ο ταχυδρομικός κώδικας έρχεται με την επιλογή, στις μεγάλες πόλεις με ζώνες ο σωστός του αριθμού. Λειτουργεί ανά συνεδρία: ο client δημιουργεί ένα UUID για κάθε διεύθυνση που συμπληρώνεται, τα ερωτήματα προτάσεων είναι δωρεάν, και πληρώνετε μία επαλήθευση διεύθυνσης όταν ο χρήστης επιλέγει και τα πεδία συμπληρώνονται (ενέργεια select, που επιστρέφει την εγγραφή ήδη κανονικοποιημένη από τη μηχανή). Τα πεδία που έχουν ήδη συμπληρωθεί στη φόρμα — έστω και εν μέρει — ταξιδεύουν ως πλαίσιο και περιορίζουν τις προτάσεις.

curl -X POST https://www.radaraddress.com/api/v1/suggest \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"session":"CLIENT-UUID","q":"via verdi","city":"monz"}'

# when the user picks one: closes the session and charges the selection
curl -X POST https://www.radaraddress.com/api/v1/suggest \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"session":"CLIENT-UUID","action":"select","street_id":1063428,"house_number":"4"}'

Αφού επιλεγεί η οδός, συμπληρώνεται ο αριθμός: περνώντας το street_id με τον μερικό αριθμό παίρνετε τους υπάρχοντες αριθμούς εκείνης της οδού, με exists true/false για να επικυρωθεί αυτός που πληκτρολογήθηκε — και η επιλογή μπορεί να επαναληφθεί με τον αριθμό χωρίς νέα χρέωση: η χρέωση είναι ανά συνεδρία και ανά οδό, όχι ανά κλικ· άλλη οδός στην ίδια συνεδρία είναι άλλη χρέωση. Οι αριθμοί συμπληρώνονται μόνο στη συνεδρία που επέλεξε εκείνη την οδό. Στις πόλεις με ζώνες ο αριθμός είναι αυτός που καθορίζει τον ακριβή ταχυδρομικό κώδικα.

Το token του API δεν πηγαίνει ποτέ στον browser: το έτοιμο widget (ra-suggerisci.js) καλεί έναν μικρό proxy στον διακομιστή σας, που προσθέτει το token και προωθεί. Κάθε συνεδρία επιτρέπει έως 30 κλήσεις και διαρκεί 10 λεπτά· οι συνεδρίες χωρίς επιλογή είναι δωρεάν έως 200 την ημέρα ανά token, συν πέντε για κάθε επιλογή. Widget, έτοιμο proxy και δείγμα form βρίσκονται στο κιτ του Το δικό σας form.

Λειτουργεί σε κάθε χώρα σε λειτουργία (σήμερα Γαλλία, Γερμανία, Ισπανία, Κάτω Χώρες, Βέλγιο, Φινλανδία, Ελβετία, Τσεχία, Πορτογαλία, Δανία, Νορβηγία, Αυστρία, Σλοβακία, Κροατία, Ελλάδα, Ρουμανία, Ουγγαρία, Σλοβενία, Ιρλανδία, Ισλανδία, Λουξεμβούργο, Λιχτενστάιν, Άγιος Μαρίνος, Μονακό, Ανδόρα, Βατικανό· η ενημερωμένη λίστα βρίσκεται στις Χώρες): με country_code ή country οι προτάσεις προέρχονται από το μητρώο εκείνης της χώρας, και το κείμενο γράφεται όπως το γράφουν εκεί — οδός, αριθμός, ταχυδρομικός κώδικας και πόλη ακόμη και σε ένα μόνο πεδίο: «kalverstraat 92 amst», «92 rue de rivoli paris», στην Ολλανδία «1012PH 92». Κάθε απάντηση φέρει το parsed, δηλαδή πώς ο διακομιστής διάβασε την οδό (street), τον αριθμό (house_number) και τον ταχυδρομικό κώδικα (postcode): η φόρμα σας ξέρει πού βρίσκεται ο αριθμός χωρίς να γνωρίζει τους κανόνες της χώρας. Οι προτάσεις φέρουν οδό, πόλη, τοποθεσία όπου υπάρχει, και source (registry, ή osm όπου το εθνικό μητρώο δεν δημοσιεύει)· ο ταχυδρομικός κώδικας και οι αριθμοί δεν βρίσκονται ποτέ στις προτάσεις: έρχονται με την επιλογή, που περνά από τη μηχανή και επιστρέφει την ίδια εγγραφή με το /contact (postcode επιβεβαιωμένος από το μητρώο, geo στον αριθμό). Με την επιλογή μπορείτε να περάσετε και το postcode, αυτό που γράφτηκε στη φόρμα. Το attribution είναι η αναφορά πηγής που πρέπει να εμφανίζεται δίπλα στις προτάσεις: η άδεια του μητρώου το απαιτεί. Αν λείπει η χώρα θεωρείται IT· για χώρα εκτός λειτουργίας η απάντηση παραμένει HTTP 200 με supported:false και hints:[], χωρίς δημιουργία συνεδρίας και χωρίς χρέωση. Μια συνεδρία ανήκει σε μία χώρα: αν αλλάξει, ο πελάτης δημιουργεί νέο UUID (αλλιώς 409 session_country).

curl -X POST https://www.radaraddress.com/api/v1/suggest \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"session":"CLIENT-UUID","q":"kalverstraat 92 amst","country_code":"NL"}'

{"ok":true,"phase":"streets",
 "hints":[{"type":"street","id":642154,"name":"Kalverstraat","municipality":"Amsterdam","area":"","source":"registry"}],
 "parsed":{"street":"kalverstraat","house_number":"92","postcode":""},
 "attribution":"Bron: Kadaster — BAG"}

Μεγάλοι όγκοι: η ασύγχρονη εργασία

Οι κανονικές κλήσεις αποκρίνονται αμέσως, και γι' αυτό έχουν ένα όριο στοιχείων — ένα αίτημα HTTP που διαρκεί λεπτά δεν χρησιμεύει σε κανέναν. Τα όρια ακολουθούν το πόσο βαριά είναι η επεξεργασία:

Όρια στοιχείων ανά κλήση
EndpointΣτοιχεία ανά κλήσηΓιατί
/phone5.000άμεσος έλεγχος
/tax-code, /enrichment2.000γρήγορος έλεγχος
/contact, /email, /dedupe500πλήρης έλεγχος
/website100μία σύνδεση με τον ιστότοπο για κάθε διεύθυνση

Πέρα από αυτούς τους αριθμούς δεν χρειάζεται να σπάσετε τη λίστα με το χέρι: προσθέτετε "async": true και η κλήση επιστρέφει αμέσως με έναν κωδικό, ενώ η επεξεργασία μπαίνει στην ίδια ουρά με τα ανεβασμένα αρχεία. Έως 100.000 στοιχεία ανά κλήση, και στις Εργασίες μου εμφανίζεται μία μόνο.

curl -X POST https://www.radaraddress.com/api/v1/contact \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"async":true,"items":[ … 100,000 contacts … ]}'

HTTP/1.1 202 Accepted
Location: /api/v1/contact?job=369e46e9e7bb…

{"ok":true,"job":"369e46e9e7bb…","state":"queued","rows":100000,"check":"/api/v1/contact?job=369e46e9e7bb…"}

Έπειτα το διαβάζετε όταν χρειαστεί, και το αποτέλεσμα έρχεται σε JSON ή ως CSV:

curl 'https://www.radaraddress.com/api/v1/contact?job=369e46e9e7bb…' \
  -H 'Authorization: Bearer YOUR_TOKEN'

{"ok":true,"state":"completed","rows":100000,"done":100000,
 "outcomes":{"ok":1240,"modified":95300,"to_check":2100,"unresolved":1360}}

curl 'https://www.radaraddress.com/api/v1/contact?job=369e46e9e7bb…&format=csv' \
  -H 'Authorization: Bearer YOUR_TOKEN' -o result.csv

curl 'https://www.radaraddress.com/api/v1/contact?job=369e46e9e7bb…&format=zip' \
  -H 'Authorization: Bearer YOUR_TOKEN' -o result.zip

Με format=zip κατεβάζετε αντί γι’ αυτό όλα τα αρχεία της εργασίας σε ένα zip: το καθαρό αρχείο, με τις στήλες σας και τις διορθώσεις ήδη γραμμένες όπου είναι επιβεβαιωμένες· τις γραμμές προς έλεγχο· τι αλλάζει, κελί προς κελί· το πλήρες αποτέλεσμα· ένα README που τα εξηγεί. Με format=zip_xlsx τα ίδια αρχεία είναι σε Excel.

Κάτω από τις 5.000 γραμμές το αποτέλεσμα επιστρέφει και στο results μέσα στο JSON· από εκεί και πάνω, κατεβαίνει ως CSV. Η χρέωση γίνεται όταν η εργασία μπαίνει στην ουρά, και το μέρος που δεν επεξεργάστηκε επιστρέφει στο υπόλοιπό σας αν η εργασία σταματήσει. Το token πρέπει να ανήκει σε λογαριασμό: η εργασία καταλήγει στη δική σας ουρά.

Η κλήση που βάζει την εργασία στην ουρά απαντά με HTTP 202 και την κεφαλίδα Location, που δείχνει την εργασία. Όταν δεν χρειάζεστε πια το αποτέλεσμα, το διαγράφετε με DELETE στην ίδια διεύθυνση: η απάντηση είναι HTTP 204, και τα αρχεία και τα δεδομένα δεν υπάρχουν πια. Μια εργασία που είναι ακόμη στην ουρά ή σε επεξεργασία απαντά με 409 job_running: διαγράψτε την όταν ολοκληρωθεί. Αν δεν τη διαγράψετε, η εργασία διαγράφεται αυτόματα μετά από 30 ημέρες. Το ίδιο ισχύει και για το αποθηκευμένο αποτέλεσμα του /dedupe.

curl -X DELETE 'https://www.radaraddress.com/api/v1/contact?job=369e46e9e7bb…' \
  -H 'Authorization: Bearer YOUR_TOKEN'

HTTP/1.1 204 No Content

Κωδικοί αποτελέσματος

Κάθε απάντηση περιλαμβάνει το πεδίο outcome: μια λίστα λέξεων-κλειδιών, κενή όταν δεν υπάρχει τίποτα να αναφερθεί. Το σχήμα είναι πάντα <conditions> [MODIFIED <types>] — οι συνθήκες μπροστά, οι αλλαγές στο τέλος — και ισχύει για όλες τις υπηρεσίες. Δίπλα βρίσκετε το outcome_label (ή kind) με ok, modified, warning, error, και το reason με την εξήγηση σε μία γραμμή. Οι κωδικοί είναι αναγνωριστικά: συγκρίνονται, δεν μεταφράζονται· με "language": "it" βγαίνουν οι ιταλικοί κωδικοί (LOCALITA_NON_TROVATA MODIFICATO CAP INDIRIZZO), οι ίδιοι λέξη προς λέξη.

Διεύθυνση (επαλήθευση διευθύνσεων)

Κωδικοί αποτελέσματος — διεύθυνση (επαλήθευση διευθύνσεων)
ΚωδικόςΣημασία
OKΚαμία αλλαγή δεν χρειάζεται, η διεύθυνση είναι ήδη σωστή (κενό αποτέλεσμα)
MODIFIEDΔιεύθυνση κανονικοποιημένη, ακολουθούμενη από τα πεδία που άλλαξαν: POSTCODE, PROVINCE, CITY/CITY_FORM, STREET/STREET_FORM, BUILDING (το επίθημα _FORM = μόνο μορφή/τόνοι, η τιμή ήταν ήδη σωστή). Το σχήμα του πεδίου είναι <conditions> [MODIFIED <types>]: οι τυχόν συνθήκες έρχονται πρώτες, το MODIFIED και οι τύποι του στο τέλος
PO_BOXΑναγνωρίστηκε παράδοση σε ταχυδρομική θυρίδα (όχι οδός): μορφή CASELLA POSTALE n
LOCALITY_WITHOUT_STREETΗ διεύθυνση είναι τοποθεσία χωρίς όνομα οδού· η παράδοση παραμένει δυνατή
CITY_NOT_FOUNDΟ δήμος δεν αναγνωρίστηκε
CITY_AMBIGUOUSΌνομα δήμου που υπάρχει σε περισσότερες από μία επαρχίες
STREET_NOT_FOUNDΟδός μη καταχωρισμένη για αυτή την πόλη
STREET_AMBIGUOUSΌνομα οδού που υπάρχει σε περισσότερες από μία περιοχές του δήμου
STREET_TYPE_MISSINGΤύπος οδού που δεν αναγνωρίζεται (λείπει Via/Corso/Piazza…)
HOUSE_NUMBER_MISSINGΑριθμός που λείπει ή δεν είναι έγκυρος
HOUSE_NUMBER_INVALID_FORMATΑριθμός σε μη αναγνωρίσιμη μορφή
POSTCODE_UNCONFIRMEDΗ οδός υπάρχει αλλά για τον αριθμό αυτόν δεν υπάρχει επιβεβαίωση του ταχυδρομικού κώδικα: μένει ο δηλωμένος, εφόσον ανήκει στην πόλη
POSTCODE_PRESUMEDΗ οδός υπάρχει και τον ταχυδρομικό κώδικα τον θέσαμε εμείς χωρίς επιβεβαίωση από τον αριθμό: η οδός έχει περισσότερους από έναν και ο αριθμός δεν αποφασίζει, ή δεν είχε δηλωθεί και προέρχεται από τους γειτονικούς αριθμούς
INCOMPLETE_DATAΑνεπαρκείς πληροφορίες για κανονικοποίηση
FOREIGNΜη ιταλική διεύθυνση, στην ταχυδρομική μορφή της χώρας της· όπου το εθνικό μητρώο είναι σε λειτουργία, οδός και αριθμός επαληθεύονται, και το μήνυμα το λέει (μόνο στα ιταλικά)
HOUSE_NUMBER_NOT_FOUNDΕξωτερικό: η οδός υπάρχει στο εθνικό μητρώο, ο αριθμός που δόθηκε όχι (μόνο όπου το μητρώο έχει όλους τους αριθμούς· από μερική πηγή ή από το OpenStreetMap ο αριθμός που λείπει δεν είναι ετυμηγορία)
POSTCODE_INVALID_FORMATΕξωτερικό: ο ταχυδρομικός κώδικας δεν έχει τη μορφή που χρησιμοποιείται στη χώρα που δόθηκε
COUNTRY_UNRESOLVEDΕξωτερικό: η χώρα που γράφτηκε στη διεύθυνση δεν υπάρχει στον κατάλογο ISO 3166-1

Ιταλικός φορολογικός κωδικός (codice fiscale)

Κωδικοί αποτελέσματος — ιταλικός φορολογικός κωδικός
ΚωδικόςΣημασία
TAX_CODE_INVALIDΟ κωδικός δεν περνά τους ελέγχους· το reason λέει ποιον (χαρακτήρας ελέγχου, μήκος, μήνας, ημερομηνία, δήμος) και το suggestion προτείνει τη σωστή μορφή όταν μπορεί να ανασυσταθεί
TAX_CODE_MISMATCHΟ κωδικός είναι έγκυρος αλλά δεν ταιριάζει με το επώνυμο, το όνομα, το φύλο ή την ημερομηνία του αιτήματος
MODIFIED TAX_CODEΈλειπε ο χαρακτήρας ελέγχου: υπολογίστηκε ξανά από τους πρώτους 15
MODIFIED TAX_CODE_FORMΜόνο η μορφή καθαρίστηκε (κεφαλαία, κενά)
GENERATEDEndpoint /tax-code, ενέργεια generate: κωδικός υπολογισμένος από τα προσωπικά στοιχεία
MATCH / MISMATCHEndpoint /tax-code, ενέργεια compare: ο κωδικός συμφωνεί ή όχι με τα στοιχεία· το differences απαριθμεί τα πεδία που διαφέρουν

Στο endpoint /tax-code οι ίδιοι έλεγχοι έχουν δικούς τους κωδικούς — TAX_CODE_CHECK_DIGIT_WRONG, TAX_CODE_CHECK_DIGIT_MISSING, TAX_CODE_LENGTH_WRONG, TAX_CODE_FORMAT_WRONG, TAX_CODE_MONTH_WRONG, TAX_CODE_DATE_INVALID, TAX_CODE_PLACE_UNKNOWN, TAX_CODE_EMPTY — επειδή εκεί ο φορολογικός κωδικός είναι το αντικείμενο του ελέγχου, όχι ένα πεδίο της εγγραφής.

Εμπλουτισμός

Κωδικοί αποτελέσματος — εμπλουτισμός
ΚωδικόςΣημασία
ENRICHEDΦυσικό πρόσωπο: φύλο συναγόμενο ή επιβεβαιωμένο, τίτλος και προσφωνήσεις ορισμένα
LEGAL_PERSONΕταιρεία ή φορέας: η επικεφαλίδα αντιμετωπίζεται ως επωνυμία (Spett.le)
PARTIALΛείπει το όνομα ή το φύλο δεν συνάγεται από το όνομα: ουδέτερη προσφώνηση

Email

Κωδικοί αποτελέσματος — email
ΚωδικόςΣημασία
EMAIL_INVALIDΜη έγκυρη σύνταξη
EMAIL_DOMAIN_NOT_FOUNDΟ τομέας δεν λαμβάνει email (καμία εγγραφή MX/A)
EMAIL_TYPOΠιθανό τυπογραφικό λάθος στον τομέα: η διόρθωση είναι πρόταση, στο suggestion και στο κανονικοποιημένο πεδίο
MODIFIED EMAIL_DOMAINΒέβαιο τυπογραφικό λάθος στον τομέα, διορθωμένο: το corrected_from φέρει ό,τι είχε γραφτεί
EMAIL_DISPOSABLEΤομέας προσωρινού email
EMAIL_ROLE_BASEDΔιεύθυνση οργανισμού (info@, orders@), όχι προσώπου. Είναι επισήμανση, όχι σφάλμα
EMAIL_EMPTYΚαμία διεύθυνση στο πεδίο
MODIFIED EMAIL_FORMΜόνο η μορφή καθαρίστηκε (κενά, κεφαλαία)

Τηλέφωνο

Κωδικοί αποτελέσματος — τηλέφωνο
ΚωδικόςΣημασία
PHONE_INVALIDΔεν είναι αναγνωρίσιμος αριθμός
PHONE_LENGTH_ANOMALOUSΠλήθος ψηφίων ασύμβατο με το σχέδιο αριθμοδότησης
PHONE_OUT_OF_PLANΔεν αρχίζει από 0 (σταθερό) ούτε από 3 (κινητό)
PHONE_FOREIGNΑριθμός με μη ιταλικό διεθνές πρόθεμα (ή εθνικός αριθμός ξένης εγγραφής): ελέγχουμε μόνο τη μορφή του, σε E.164
PHONE_SPECIALΑριθμός χωρίς χρέωση ή με ειδική χρέωση: δεν είναι προσωπικό στοιχείο επικοινωνίας
PHONE_SERVICEΑριθμός κοινής ωφέλειας (112, 118…)
PHONE_WITH_EXTENSIONΤο πεδίο περιείχε και εσωτερικό ή σημείωση: ελέγχουμε μόνο τον αριθμό
PHONE_EMPTYΚανένας αριθμός στο πεδίο
MODIFIED PHONE_FORMΜόνο η μορφή καθαρίστηκε (κενά, τελείες, πρόθεμα)

Ιστότοπος

Κωδικοί αποτελέσματος — ιστότοπος
ΚωδικόςΣημασία
WEBSITE_INVALIDΔεν είναι σωστά γραμμένη διεύθυνση ιστού
WEBSITE_DOMAIN_NOT_FOUNDΟ τομέας δεν υπάρχει (καμία εγγραφή DNS)
WEBSITE_NOT_RESPONDINGΟ τομέας υπάρχει αλλά κανένας διακομιστής δεν αποκρίνεται
WEBSITE_PAGE_NOT_FOUNDΟ ιστότοπος αποκρίνεται αλλά η σελίδα δεν υπάρχει (404/410)
WEBSITE_ACCESS_DENIEDΟ ιστότοπος αρνείται την πρόσβαση (401/403): συχνά είναι προστασία από ρομπότ
WEBSITE_CERTIFICATE_INVALIDΟ ιστότοπος αποκρίνεται αλλά το πιστοποιητικό δεν μπορεί να επαληθευτεί
WEBSITE_RESPONSE_ANOMALOUSΑπροσδόκητος κωδικός απόκρισης
WEBSITE_EMPTYΚαμία διεύθυνση στο πεδίο
MODIFIED WEBSITE_FORMΔιεύθυνση συμπληρωμένη (πρωτόκολλο, www) χωρίς να αλλάξει η ουσία της

Τι καταναλώνει κάθε κλήση

Κάθε κλήση καταναλώνει επεξεργασίες από τον μετρητή της υπηρεσίας: επαλήθευση διευθύνσεων (/contact, /suggest κατά την επιλογή), αφαίρεση διπλοεγγραφών (/dedupe) και ελαφριές επεξεργασίες (/email, /phone, /website, /enrichment, /tax-code πέρα από την ποσόστωση). Οι επεξεργασίες αγοράζονται σε πακέτα που μένουν, ή με μηνιαία συνδρομή· η τιμή ανά 1.000 πέφτει με το μέγεθος και βρίσκεται στη σελίδα τιμών. Κάθε μήνα είναι δωρεάν 50 επαληθεύσεις διευθύνσεων, 100 εγγραφές σε αφαίρεση διπλοεγγραφών και 500 ελαφριές επεξεργασίες.

Κάθε απάντηση λέει τι κατανάλωσε και από πού: το πεδίο credit του JSON (counter, charged, free, subscription και packs με τις επεξεργασίες που αφαιρέθηκαν και το υπόλοιπο, available, auto_topup με τον αριθμό των πακέτων που αγοράστηκαν αυτόματα, note) και οι κεφαλίδες X-RA-Charged, X-RA-Available και, όταν παρεμβαίνει, X-RA-Auto-Topup. Αν οι διαθέσιμες επεξεργασίες δεν καλύπτουν την κλήση και η αυτόματη επαναφόρτιση του μετρητή δεν είναι ενεργή (ή αποτύχει), η απάντηση είναι 402 payment_required και δεν επεξεργάζεται τίποτα.

Το σώμα της απάντησης 402 περιέχει επίσης το credit.purchase_url: τη σελίδα Μονάδες του λογαριασμού σας, με το μικρότερο πακέτο που καλύπτει ό,τι λείπει, έτοιμη να ανοίξει.

Για να μάθετε πόσες επεξεργασίες απομένουν χωρίς να καταναλώσετε καμία υπάρχει το GET /api/v1/credit. Για καθέναν από τους τρεις μετρητές (contact, dedupe, light) επιστρέφει το available, τις δωρεάν (free) που απομένουν στον μήνα και την ημερομηνία που μηδενίζονται (η 1η), τη subscription (υπόλοιπο, μέγεθος, ανανέωση), τα ενεργά packs ένα προς ένα με ό,τι απομένει (δεν λήγουν) και πόσα αγοράσατε, το auto_topup (ενεργό, μέγεθος, όριο και δαπάνη του μήνα σε ευρώ), τη χρήση (used αυτόν τον μήνα, σύνολα, τελευταία χρήση) και προπάντων το state, γιατί ένα μηδέν από μόνο του δεν λέει αν εξαντλήσατε ή αν δεν χρησιμοποιείτε την υπηρεσία: never_used, free (ποτέ δεν αγοράσατε, εργάζεστε με τις δωρεάν του μήνα), free_used_up, active, awaiting_renewal, used_up (αγοράσατε στο παρελθόν και δεν απομένει τίποτα: χρειάζεται νέο πακέτο), με ένα warning. Στην κορυφή το needs_topup απαριθμεί τους μετρητές που χρειάζονται ενέργεια και το endpoint λέει ποιον μετρητή καταναλώνει κάθε endpoint. Απαιτεί token λογαριασμού.

curl https://www.radaraddress.com/api/v1/credit -H 'Authorization: Bearer YOUR_TOKEN'
→ { "ok": true, "counters": { "contact": { "available": 48250, "free": { "remaining": 50, "month": 50 },
      "subscription": { "left": 23200, "size": 25000, "renews_on": "2026-10-03" }, "packs": { "left": 25000, "active_packs": [ … ] },
      "state": "active", "warning": "" }, "dedupe": { "state": "never_used", "warning": "Counter never used: zero does not mean used up. …", … },
      "light": { … } }, "needs_topup": [], "endpoint": { "contact": "contact", "email": "light", … } }
Μετρητής που καταναλώνει κάθε endpoint
EndpointΜετρητήςΕπεξεργασίες
/contactΕπαλήθευση διευθύνσεων1 ανά εγγραφή (διεύθυνση, ονοματεπώνυμο, φορολογικός κωδικός, email, τηλέφωνο και ιστότοπος μαζί)
/suggestΕπαλήθευση διευθύνσεων1 ανά επιλεγμένη διεύθυνση (η πληκτρολόγηση είναι δωρεάν)
/dedupeΑφαίρεση διπλοεγγραφών1 ανά εγγραφή (περιλαμβάνεται η κανονικοποίηση)
/tax-codeΕλαφριές επεξεργασίες1 ανά κωδικό, πέρα από την ποσόστωση
/emailΕλαφριές επεξεργασίες1 ανά email
/phoneΕλαφριές επεξεργασίες1 ανά αριθμό
/websiteΕλαφριές επεξεργασίες1 ανά ιστότοπο
/enrichmentΕλαφριές επεξεργασίες1 ανά ονοματεπώνυμο

Πληρώνετε ανά επαληθευμένο στοιχείο, όχι ανά κλήση: αν ένα πεδίο περιέχει δύο αριθμούς τηλεφώνου ή δύο email, τα επαληθεύουμε όλα (έως τρία ανά γραμμή) και καθένα καταναλώνει μία επεξεργασία. Μια κλήση παρτίδας καταναλώνει όσο οι επεξεργασίες που περιέχει. Αν οι επεξεργασίες έχουν εξαντληθεί και η αυτόματη επαναφόρτιση δεν είναι ενεργή, το API απαντά HTTP 402 (ανεπαρκείς επεξεργασίες)· μετά την υπέρβαση του ορίου ρυθμού απαντά HTTP 429 με retry_after. Αγοράζετε ένα πακέτο από τον λογαριασμό σας, ή ενεργοποιείτε μια συνδρομή για να πληρώνετε λιγότερο ανά επεξεργασία.

Όριο ρυθμού

60 αιτήματα το λεπτό στις μεμονωμένες κλήσεις, 10 το λεπτό στις κλήσεις παρτίδας, 300 το λεπτό στην αυτόματη συμπλήρωση.

Μετρήσεις στο API παραγωγής με είκοσι παράλληλες κλήσεις: περίπου 200 επαληθεύσεις το δευτερόλεπτο, διάμεσος κάτω από 60 χιλιοστά του δευτερολέπτου.

Ενιαία μέτρηση

Το API, ο ιστότοπος και οι μαζικές εργασίες αντλούν από τους ίδιους μετρητές: ένα πακέτο ισχύει παντού.

Εκδόσεις

Τα endpoint έχουν έκδοση (/api/v1/): όταν βγαίνει νέα έκδοση, η παλιά παραμένει σε λειτουργία και η ημερομηνία απενεργοποίησής της ανακοινώνεται εγκαίρως.

Έτοιμοι να ενσωματώσετε;

Δημιουργήστε τον λογαριασμό, παραγάγετε το token σας, αγοράστε τις επεξεργασίες που χρειάζεστε και κάντε την πρώτη κλήση σε λιγότερο από ένα λεπτό.

Δημιουργήστε το token σας

Δείτε τις τιμές