Sama moottori,
omassa sovelluksessasi.

Yksi päätepiste per palvelu, yksi kutsu, vastaus dokumentoituna kenttä kentältä: yhteystiedon tarkistus, duplikaattien poisto, sähköposti, puhelin, verkkosivu, italialainen verotunnus, automaattitäydennys. Yksittäin tai erissä; suuret tiedostot menevät jonoon, ja noudat työn, kun se on valmis.

OpenAPI-määrittely: openapi.json, jolla voit generoida asiakasohjelman tai tuoda sen työkaluusi.

Yksi päätepiste per palvelu, samalla nimellä kuin palvelulla on tällä sivustolla: /contact, /dedupe, /email, /phone, /website, /tax-code, /enrichment. Jokainen ottaa vastaan yhden kohteen pyynnön rungossa tai listan kentässä items, enintään 500 kutsua kohden (100 verkkosivuille, joihin on otettava yhteys yksi kerrallaan). Duplikaattien poisto on poikkeus ja haluaa aina listan: se vertaa tietueita toisiinsa. Erillään ovat /suggest, lomakkeiden automaattitäydennys (toimii istunnoittain käyttäjän kirjoittaessa, ei erissä), ja /credit, joka kertoo, montako käsittelyä on jäljellä ja missä tilassa kukin laskuri on, kuluttamatta yhtään.

Todennus

API:n isäntä on www.radaraddress.com. Kenttien, päätepisteiden ja arvojen nimet ovat englanninkielisiä tunnisteita, samat kaikilla kielillä; otsikot, syyt ja viestit seuraavat pyynnön kieltä ("language": "de" tai ?language=de, tai Accept-Language-otsake, tai tilin kieli). Content-Language-otsake kertoo, millä kielellä vastaus tuli.

API:a käytetään Bearer-tokenilla. Tili on ilmainen: luot tokenin omalla tililläsi ja liität sen jokaisen pyynnön otsakkeeseen tässä muodossa:

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

Luodessasi tokenin voit antaa sille valinnaisen vanhenemispäivän: sen jälkeen pyynnöt saavat vastauksen HTTP 401 koodilla token_expired; ilman vanhenemispäivää token on voimassa, kunnes peruutat sen. Voit peruuttaa tai luoda sen uudelleen milloin tahansa omalla tililläsi, jossa näet myös viimeisimmän käytön ja palveltujen pyyntöjen määrän. Pyyntö ilman tokenia tai virheellisellä tokenilla palauttaa HTTP 401.

Italialaiset nimet niille, jotka jo käyttävät niitä

API:sta on yksi versio, englanniksi. Sen, joka integroi italialaisilla nimillä, ei tarvitse muuttaa mitään: italialaiset kentät hyväksytään jokaisessa pyynnössä, päätepisteet vastaavat myös italialaisella nimellään (/contatto, /deduplica, /codicefiscale, /arricchimento, /telefono, /sito, /suggerisci, /nazioni, /credito), ja vastaus tulee italialaisilla avaimilla ja koodeilla sille, joka pyytää sitä "language": "it"-arvolla tai kutsuu www.radaraddress.it-osoitetta ilmoittamatta kieltä.

Kenttien täydellinen taulukko: englanti → italia
englantiitaliaenglantiitalia
accountaccount membersmembri
actionazione methodmetodo
activated_onattivato_il metricmetrico
activeattiva min_levellivello_minimo
active_packsattivi missingmancano
addressindirizzo modifiedmodificati
address_keyindirizzo_confronto monthmese
addressesindirizzi monthly_cap_eurtetto_mese_eur
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 originorigine
changedmodificato otheraltro
changesmodifiche outcomeesito
chargedconsumate outcome_labelesito_label
checkcontrolla outcomesesiti
check_digitcontrollo overall_cap_eurtetto_globale_eur
citylocalita packspacchetti
city_keylocalita_confronto parsedletto
city_passescicli_localita phasefase
city_typelocalita_tipo phonetelefono
classclasse phone2telefono2
codecodice phone3telefono3
colourcolore phonestelefoni
commentscommenti placeluogo
conditionscondizioni positionposizione
confidenceconfidenza postcodecap
confirmedconfermato postcode_checkcap_verifica
consolidateconsolida precisionprecisione
contactcontatto preserve_originalpreserva_originale
contact_personreferente presumedpresunto
corrected_fromcorretta_da processedlavorato
countercontatore processed_atdatalav
counterscontatori professionqualifica
countriesnazioni provenanceprovenienza
countrynazione provinceprovincia
country_codenazione_iso2 provincial_capitalcapoluogo
country_originalnazione_originale reachableraggiungibile
country_prefixprefisso_paese reasonmotivo
createdcreato record_outcomeesito_record
creditcredito recordsanagrafiche
dedupededuplica redirectsredirect
detaildettaglio referenceriferimento
differencesdifferenze reference_idriferimento_id
discardedscartati remainingrimaste
disposableusa_e_getta renews_onsi_rinnova_il
districtquartiere reset_onsi_azzerano_il
domain_checkeddominio_verificato rowsrighe
domain_existsdominio_esiste salutationsaluto
donefatte savesalva
duration_msdurata_ms segment_passescicli_arcostradale
e164formato_e164 sessionsessione
educationtitolo_studio shortbreve
entriesschede singlessingoli
errorerrore sizetaglia
existsesiste sourcefonte
expiryscadenza specificityspecificita
explanationsspiegazioni spent_month_eurspeso_mese_eur
extensionestensione spent_overall_month_eurspeso_globale_mese_eur
fieldcampo statestato
final_urlurl_finale statesstati
first_namenome streetstrada
foreignesteri street_idvia_id
foreign_addressestero street_nametoponimo
formal_salutationsaluto_formale street_passescicli_toponimo
formatformato street_proper_nameduf
foundtrovato street_typedug
freegratuite sub_addresssubindirizzo
free_forevergratis_per_sempre sub_address_confirmedsubindirizzo_confermato
full_namenominativo subject_typetipo_soggetto
gendersesso subscriptionabbonamento
gender_sourcefonte_sesso suffixesponente
genericgenerica suggestionsuggerimento
groupgruppo summaryriepilogo
groupsgruppi supportedsupportato
hamletfrazione syntaxsintassi
hintssuggerimenti tax_codecodice_fiscale
homocodeomocodo tax_code_outcomecodice_fiscale_esito
house_numbercivico territoryterritorio
house_number_labelcivico_label texttesto
house_number_verifiedcivico_verificato time_mstempo_ms
house_numberscivici titletitolo
informal_salutationsaluto_informale to_checkda_controllare
iso2codice_iso2 totaltotali
iso3codice_iso3 towncitta
istat_codeistat truncatedtroncato
itemselementi typetipo
joblavoro type_normalizedtipo_norm
languagelingua typestipi
languageslingue unresolvednon_risolti
last_namecognome url_normalizedurl_normalizzato
last_onultimo_il usedusate
last_usedultimo_uso validvalida
leftresiduo valuevalore
legacy_defaultdefault_storico warningavviso
levellivello warningsavvisi
lightleggere websitesito
longlungo website2sito2
long_namenome_esteso website3sito3
main_recordprincipale websitessiti
matchcorrisponde zonedzonato
matchesabbinamenti

Myös vaihtoehtojen arvoilla on italialainen nimi: format nazionale/internazionale, action genera/valida/estrai/confronta/seleziona, foreign dichiarati/rileva, min_level certo/probabile/ambiguo; "language": "it"-arvolla samoin tulevat level, confidence, state, outcome-koodit ja tiedostojen sarakeotsikot. Syötteessä hyväksytään myös yleisiä synonyymejä (zip, surname, phone_number, date_of_birth…) ja samat otsikot erätöiden tiedostoissa.

Yhteystiedon tarkistuksen päätepiste

POST /api/v1/contact

Korjaa koko yhteystiedon: osoitteen maansa postistandardin mukaan — Italiassa ja maissa, joiden rekisteri on käytössä, katu ja talonumero tarkistetaan kansallisesta osoiterekisteristä; muissa maissa osoite palautuu maan postimuodossa —, nimen ja — jos pyyntö sisältää sen — italialaisen verotunnuksen, joka siistitään, täydennetään jos vain tarkistusmerkki puuttuu ja verrataan sukunimeen, etunimeen, sukupuoleen ja syntymäaikaan. Yksi yhteystieto kerrallaan tai enintään 500 kentässä items: rakenne on sama kuin kaikissa muissa päätepisteissä.

Maa annetaan kentällä country_code (ISO 3166-1: IT, DE, FR…) tai kentällä country, kirjoitettuna miten tahansa: ”Germania”, ”Germany”, ”Deutschland”, ”Saksan liittotasavalta”, ”UK”, ”Hollanti”. Jos se puuttuu, oletetaan Italia. Maissa, joiden rekisteri on käytössä — tänään Ranska, Saksa, Espanja, Alankomaat, Belgia, Suomi, Tšekki, Portugali, Tanska, Norja, Itävalta, Sveitsi, Slovakia, Kroatia, Romania, Unkari, Slovenia, Irlanti, Islanti, Luxemburg, Liechtenstein, San Marino, Monaco, Andorra, Vatikaanivaltio, ajantasainen luettelo on sivulla Maat — katu ja talonumero tarkistetaan kansallisesta osoiterekisteristä kuten Italiassa: postinumero vahvistetaan tai täydennetään, talonumeron koordinaatit kentässä geo, kaupunginosa tai arrondissement kentässä district, jos kaupungissa on sellaisia (Hamburg-Altstadt, Paris 4e Arrondissement), kunnan koodi kentässä territory.municipality_code. Italiaksi tuloksessa on FOREIGN, jota seuraavat muutokset, muilla kielillä vain muutokset; jos katu on olemassa mutta numero ei, HOUSE_NUMBER_NOT_FOUND. Muissa maissa työstämme muotoa, ja viesti kertoo sen: postinumero maan muodossa, kadun lyhenteet avattuina, isot kirjaimet ja kaupungin nimi niin kuin sen maan posti ne kirjoittaa (Hauptstr. 5, München → Hauptstraße 5, MÜNCHEN), maarivin kanssa. Molemmissa tapauksissa palautuu address_key, muoto, jolla kaksoiskappaleiden tunnistus tunnistaa saman kadun kahdella tavalla kirjoitettuna. Arvolla "foreign": "detect" tietue ilman maata, jota ei löydy Italiasta, tunnistetaan ulkomaiseksi, kun teksti sanoo sen selvästi; oletusarvo declared jättää ulkomaiseksi vain sen, mikä ilmoittaa sen. Täydellinen maaluettelo lyhyine ja virallisine nimineen, englanniksi ja maan kielellä, on saatavilla osoitteessa GET /api/v1/countries, ja sitä voi hakea parametreilla ?q=Germania, ?q=Deutschland tai ?q=DE.

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"}'

Erässä samat kentät kentän items sisällä; vastaus on { count, results: [ { id, result } ] } samassa järjestyksessä kuin lähetys.

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"}]}'

Sama päätepiste toisen maan osoitteelle: country_code riittää. Tässä Hampuri, tarkistettu Saksan rekisteristä, kaupunginosan ja talonumeron koordinaattien kanssa.

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" } }

Koko kutsua koskevat asetukset: postal_form (pakottaa myös kentän normalized postimuotoon), preserve_original (säilyttää käyttäjän kirjoittaman nimen ja antaa kanonisen erikseen), precision 1–5 (oletus 3; yli 3:n vastaavuus on likimääräinen eikä luotettavuus ole high).

Osoitteen mukana palautuu city_type, joka kertoo, onko jakelupaikka maakunnan pääkaupungissa vai maakunnan muussa kunnassa — ero, jolla on merkitystä sille, joka jakaa kampanjan kaupungeittain. provincial_capital on true, false tai null, kun meillä ei ole perusteita sanoa — ja silloin emme arvaa.

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

Postinumeron rinnalla tulee postcode_check: mistä se tulee (source) ja millä tarkkuudella (precision: house_number numero itse, interpolated saman kadun naapurinumerot, street kadun enemmistö, locality, municipality), kuinka moni osoitenumero sen sanoo (house_numbers) ja millä yksimielisyydellä (agreement, 0–1). Jos numerolle ei ole vahvistusta, tulos kantaa arvoa POSTCODE_UNCONFIRMED ja confirmed on false: postinumero jää annetuksi, jos se kuuluu kaupungille, ja se kannattaa tarkistaa.

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

Myös koordinaatit palautuvat kentässä geo (leveys- ja pituusaste WGS84) ja aluetunnisteet kentässä territory: Italiassa kunnan ISTAT-koodi ja kiinteistökoodi, CAB ja kadun kansallinen tunniste; muissa maissa country ja kunnan koodi kansallisessa rekisterissä (municipality_code). Kenttä precision kertoo, mille tasolle päästiin: house_number, kun talonumero on paikannettu, interpolated, kun tarkka numero puuttuu ja piste on arvioitu, street, kun meillä on kadun piste, municipality, kun meillä on vain kunnan keskipiste. source kertoo, mistä piste on peräisin: anncsu on Italian kansallinen rekisteri, inspire maan kansallinen rekisteri, osm OpenStreetMap: silloin tiedot ovat © OpenStreetMap contributors, ODbL-lisenssi, ja lähdemaininta on toistettava, jos julkaiset ne. Jos maan rekisteri vaatii lähdemaininnan, se tulee viestiin. Eräajojen CSV-tiedostossa ne ovat sarakkeet latitude, longitude, geo_precision, istat_code ja 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" } }

Osoitteeseen kirjoitettu kerros, porras ja huoneisto palautuvat myös omana tietonaan kentässä sub_address: luettelo type- ja value-pareja, luettuna maan postisääntöjen mukaan (Saksassa merkin ”//” jälkeen, Ranskassa omalla rivillään, Portugalissa ”3º Esq”). Tyypit ovat unit (huoneisto), staircase (porras), floor (kerros), block, building, building_number ja block_number. Osoiterivi pysyy maan muodossa. Mitä emme tunnista, jää sellaiseksi kuin se kirjoitettiin eikä tule luetteloon: emme arvaa. Kun annettu yksikkö löytyy tästä osoitenumerosta, sub_address_confirmed on true, muuten null, ei koskaan false: se, ettemme löydä sitä, ei tarkoita, että se olisi väärä.

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

Duplikaattien poiston päätepiste

POST /api/v1/dedupe

Tunnistaa tietueet, jotka viittaavat samaan henkilöön samassa osoitteessa, vaikka ne olisi kirjoitettu eri tavalla: lempinimet ja nimien vastaavuudet (Dany ≈ Daniela), sukunimi ja etunimi vaihtaneet paikkaa, lyhenteet ("V. Roma" ≈ "Via Roma"), kirjoitusvirheet. Osoitteiden vertailu kulkee normalisointimoottorin kautta: saman kadun kaksi kirjoitusasua yhdistyvät kanoniseen muotoon ennen vertailua. Enintään 500 yhteystietoa kutsua kohden (tietueet + vertailulista); suuremmille listoille käytä erätyötä omalta tililtäsi.

Osoitekirjat. Osoitekirjan yhteystiedolla (Applen Yhteystiedot, Google, Outlook: vCard-malli) on useita osoitteita, puhelinnumeroita ja sähköposteja, kullakin oma nimikkeensä. Päätepiste ottaa ne vastaan sellaisinaan, ilman ylärajaa: addresses on lista objekteja, joissa on type ja tavalliset kentät; phones ja emails ovat listoja, joissa kukin alkio on pelkkä arvo ("340 7491386") tai {"type": "work", "value": "02 66710423"}, myös sekaisin; tavalliset litteät kentät pysyvät voimassa ja lasketaan ensimmäiseksi osoitteeksi ja ensimmäiseksi yhteystiedoksi. Kaksi yhteystietoa on sama henkilö, jos mikä tahansa niiden osoitteiden pari täsmää (toisen työpaikka toisen ainoan osoitteen kanssa), tai jos niillä on sama nimi ja yhteinen puhelin tai sähköposti, missä tahansa asemassa ja millä tahansa nimikkeellä. Nimike ei vaikuta täsmäytykseen: se palautuu sellaisena kuin se saapui, lisäksi type_normalized vCard-sanastossa (home, work, cell…), jotta sovellus tietää, mihin kirjoittaa takaisin. Yksi yhteystieto on yksi käsittely riippumatta siitä, montako osoitetta ja yhteystietoa sillä on.

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" }
    ]
  }'

Vastaus ryhmittelee duplikaatit kenttään groups: jokainen ryhmä luettelee jäsentensä id-tunnisteet kentässä members, ilmoittaa, mikä säilytetään (main_record), ja ehdottaa yhdistettyä tietuetta record: paras nimi ja osoitteiden ja yhteystietojen yhdiste (addresses, phones, emails), kullakin tyyppinsä, alkuperä kentässä provenance (mistä yhteystiedoista se tulee) ja duplikaatit poistettuina: sama katu kahdella kirjoitusasulla on yksi osoite, sama numero kahdella nimikkeellä yksi numero. Yhteystiedot, joille ei löytynyt vastinetta, ovat kentässä singles objekteina {id, outcome}: tuloksella outcome INTERNAL_DUPLICATE yhteystiedolla ei ole duplikaatteja muiden kanssa, mutta sillä on niitä sisällään (osoite kirjoitettu kahdesti, toistuva numero), ja se sisältää sulautetun tietueensa record. Se tunnistaa saman kadun eri tavoin kirjoitettuna ("V. Leopardi 4" ≈ "Via Giacomo Leopardi 4"), automaattisesti korjatun postinumeron ja paikkaa vaihtaneet sukunimen ja etunimen.

Duplikaattien poiston parametrit
ParametriTyyppiKuvaus
recordsarrayPakollinen. Tietueet kentillä last_name, first_name, address, postcode, city, province ja valinnaisilla id, gender, email, phone, country. Ulkomaiset tietueet (kenttä country tai maakunta EE) tunnistetaan myös eri tavalla kirjoitettuina (”Hauptstr. 5” ja ”Hauptstraße 5”); kaksi eri maata ei ole koskaan sama tietue. Yhteinen puhelin tai sähköposti yhdistää kaksi tietuetta myös eri osoitteella: enintään probable, jos yhteystieto on henkilökohtainen, vain ambiguous, jos se kuuluu jaetulle paikalle (lankapuhelin, yleinen sähköpostiosoite)
addresses, phones, emailsarrayValinnaisia, jokaisen tietueen sisällä: osoitekirjan listat, ilman ylärajaa (ks. yllä). phone ja email hyväksyvät samat kolme muotoa: pelkän arvon, listan arvoja, listan {type, value}-objekteja
tax_codestringValinnainen, jokaisen tietueen sisällä. Jos se on kelvollinen ja vastaa tietueen nimeä, kaksi tietuetta samalla koodilla ovat sama henkilö myös eri osoitteissa (certain, peruste ”sama verotunnus”); kahdella kelvollisella mutta erilaisella koodilla ne eivät ole koskaan certain eivätkä probable. Koodi, joka ei vastaa nimeä, ei vaikuta
referencearrayValinnainen: kahden listan tila. Jokaista tietuetta haetaan vertailulistasta; vastaus kentillä matches ja not_found
min_levelstringcertain | probable (oletus) | ambiguous: kuinka joustava täsmäytys on. certain = kadun ja talonumeron on täsmättävä; ambiguous jättää talonumeron huomiotta. Kaksi tietuetta ilman osoitetta ja paikkakuntaa eivät ole koskaan certain
foreignstringdeclared (oletus: ulkomainen on vain tietue, joka ilmoittaa maan) | detect (myös tekstin selvistä merkeistä: maan nimi, tunnettu ulkomainen kaupunki, postinumero muodossa, jota Italiassa ei ole)
saveboolOletus true: tulos pysyy luettavissa 30 päivää kutsulla GET /api/v1/dedupe?job=<koodi>; koodi saapuu kentässä job. Kutsulla POST {"job", "group", "processed": true} merkitset ryhmän tarkistetuksi

Italialaisen verotunnuksen päätepiste

POST /api/v1/tax-code

Kolme toimintoa luonnollisten henkilöiden italialaiselle verotunnukselle (codice fiscale): generate luo sen henkilötiedoista, validate tarkistaa olemassa olevan koodin (muoto, tarkistusmerkki ja omocodia), extract poimii sen sisältämät tiedot — syntymäaika, ikä, sukupuoli, syntymäkunta tai ulkomainen syntymävaltio. Lisäksi compare tarkistaa, että koodi vastaa ilmoitettuja henkilötietoja. Kattaa kaikkien Italian kuntien ja ulkomaisten valtioiden kiinteistörekisterikoodit. Sukunimi ja etunimi on annettava latinalaisin kirjaimin: jos nimi on kirjoitettu muulla kirjaimistolla, koodi lasketaan asiakirjaan merkitystä translitteraatiosta, joka ei ole yksiselitteinen (Dmitrij/Dmitry); ei-latinalainen nimi palauttaa cognome_non_latino tai nome_non_latino, ja compare-toiminnossa ulkomailla syntyneen nimen ero tuo mukanaan huomautuksen mahdollisesti erilaisesta translitteraatiosta.

Ensimmäiset 500 kevyttä käsittelyä kuukaudessa ovat ilmaisia (verotunnus mukaan lukien), ja kiintiö on yksi ja sama kaikissa käyttötavoissa: se, mitä teet täällä, verkkosivulla ja erätiedostoissa, lasketaan samasta kiintiöstä. Sen ylittävältä osalta kevyet käsittelyt maksavat hintansa (ks. hinnat).

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" }

Suurille määrille: { "action": "validate", "items": [ … ] } käsittelee enintään 500 kohdetta kutsua kohden, kullakin oma korrelaatio-id. Poiminta merkitsee arvolla ambiguous_year tapaukset, joissa vuoden kaksi numeroa eivät erota vuosisataa (1926 vs. 2026).

Jokainen vastaus sisältää kentät outcome, reason, notes ja comments pyynnön kielellä: GENERATED toiminnolle generate, tyhjä kelvolliselle koodille toiminnossa validate, MATCH tai MISMATCH toiminnolle compare (ja differences: poikkeavat kentät). Kun koodi ei läpäise tarkistuksia, tulos on jokin alla luetelluista TAX_CODE_*-koodeista ja error antaa lyhyen muodon (check_digit, length, format, homocode, month, date, place, empty); toiminnossa generate se kertoo, mikä tieto puuttuu tai ei ratkea (last_name, first_name, gender, birth_date, birth_place, ambiguous_place ja options, last_name_non_latin). suggestion sisältää oikean koodin, kun tarkistus osaa rakentaa sen.

Rikastamisen päätepiste

POST /api/v1/enrichment

Rikastaa nimen: sukupuoli pääteltynä etunimestä, kohteen tyyppi (luonnollinen henkilö tai oikeushenkilö), normalisoitu titteli (Dott.ssa, Avv., …) ja tervehdysmuodot valmiina kirjeenvaihtoon — "Egregio Sig. Rossi", "Gentile Dott.ssa Bianchi", "Spett.le" yrityksille, "Gentile Famiglia" perheille, "Caro/Cara" tuttavalliseen sävyyn. Tunnistaa myös sukunimen avioliittomuodon ("Rossi in Verdi" → nainen, molempien sukunimien erittelyllä). Kenttä gender hyväksyy myös kirjoitetut muodot (”maschio”, ”donna”, ”Sig.ra”, ”male”); X tarkoittaa organisaatiota ja G perhettä tai pariskuntaa. Jos titteli puuttuu, päättelemme sen kentästä profession (ammatti) tai education, kun jompikumpi on annettu. Sanastot ovat italialaisia.

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": "Dott.ssa",
    "formal_salutation": "Gentile Dott.ssa Rossi", "informal_salutation": "Cara Maria", … }

Erissä: { "items": [ … ] }, enintään 500 kutsua kohden. Tulos on ENRICHED (sukupuoli ja tervehdykset asetettu), LEGAL_PERSON (yritys tai yhteisö: käsitellään toiminimenä) tai PARTIAL (etunimi puuttuu tai sukupuolta ei voi päätellä): reason kertoo miksi, comments mitä lisätä.

Sähköpostin tarkistuksen päätepiste

POST /api/v1/email

Tarkistaa sähköpostiosoitteen: syntaksi, verkkotunnuksen olemassaolo (MX/A-tietueet), yleisten verkkotunnusten kirjoitusvirheet korjausehdotuksen kanssa (gmial.com → gmail.com), kertakäyttöiset verkkotunnukset, yleisosoitteet (info@, laskutus@: eivät henkilön osoitteita). Emme tee yksittäisen postilaatikon SMTP-tarkistusta, joka on tungetteleva ja epäluotettava käytäntö. Erä items enintään 500; "dns": false ohittaa verkkotunnuksen haun.

Varma kirjoitusvirhe korjataan suoraan: kun osoite sellaisenaan ei ole edes osoite (nimi@verkkotunnus,fi pilkulla) tai kun korjaus osuu tunnettuun palveluntarjoajaan (gmai.com → gmail.com, myös yhden kirjaimen päässä, jos kirjoitettu verkkotunnus ei vastaanota postia), email palautuu korjattuna, corrected_from sisältää kirjoitetun muodon ja tulos on MODIFIED EMAIL_DOMAIN. Mahdollinen kirjoitusvirhe missä tahansa muussa verkkotunnuksessa (rossi.con) jää ehdotukseksi: EMAIL_TYPO ja korjaus kentässä suggestion, ja tarkistukset (domain_exists, domain_checked) tehdään sille; osoitetta sellaisenaan ei tarkisteta.

Puhelinnumeron tarkistuksen päätepiste

POST /api/v1/phone

Tarkistaa numeron soittamatta kenellekään: muoto, luokka ja tyyppi, pituus numerointisuunnitelman mukaan, lankanumeron suuntanumeroalue ja operaattori, jolle numerolohko alun perin osoitettiin. class on se tulkinta, jota listan työstämiseen tarvitaan: mobile (voit lähettää tekstiviestin), landline (soitat virka-aikana), special (ei henkilön numero: hätänumerot, yleishyödylliset palvelunumerot, maksuttomat ja erikoismaksulliset numerot), foreign numeroille, joissa on kansainvälinen suuntanumero. Kun tunnistamme myös tarkan palvelun, type kertoo sen (maksuton, erikoismaksullinen, jaettu kustannus, yleishyödyllinen palvelu). Ilman plusmerkkiä kirjoitetun Italian suuntanumeron (39347…, klassinen vientitiedostojen virhe) poistamme, kun numerot eivät jätä epäilystä — 3934567890 pysyy matkapuhelinnumerona, joka se on. Jos samassa kentässä on useita numeroita (”347… - 338…”), erotamme ne: ne palautuvat kenttinä phone, phone2, phone3, eikä phone ole koskaan tyhjä, kun vähintään yksi numero on olemassa. Asetuksella "format": "international" italialainen numero tulee muodossa +39…; oletusarvo national jättää sen ilman suuntanumeroa ja lisää suuntanumeron vain ulkomaisiin. Ulkomaisille numeroille palautuu myös e164, suuntanumeron maa kentässä country_code, ja suuntanumeron jälkeinen kotimaan nolla poistetaan (”+44 (0)20…” ja ”+44 20…” antavat saman numeron). Kun kutsussa tai kohteessa on country_code (tai country), ilman suuntanumeroa kirjoitettu numero luetaan kyseisen maan kansalliseksi numeroksi: ”020 7946 0958” Yhdistyneen kuningaskunnan tietueessa on Lontoo, ei Milano. Ilman maata se pysyy italialaisena. Erä items enintään 500.

Tietueen oman maan numero ei ole ”ulkomainen”: siellä missä tunnemme numerointisuunnitelman se saa oman class-arvonsa (mobile, landline, special), format-arvolla national se pysyy ilman maatunnusta maansa muodossa (suuntanumeron nolla mukaan lukien), ja e164-kentän rinnalla palautuu national_number. PHONE_FOREIGN ja class foreign jäävät numeroille, jotka ovat eri maasta kuin tietue.

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

Verkkosivun tarkistuksen päätepiste

POST /api/v1/website

Tarkistaa, että osoite on oikein kirjoitettu ja että sivusto todella vastaa: verkkotunnuksen olemassaolo, HTTP-pyyntö uudelleenohjauksia seuraten, lopullinen vastauskoodi, varmenteen kelvollisuus. Sisältöä ei arvioida. Myös tässä useat osoitteet samassa kentässä palautuvat muodossa website, website2, website3. Asetuksella "network": false tarkistamme vain muodon ottamatta yhteyttä sivustoon. Erä items enintään 100: jokainen tarkistus avaa yhteyden, joten erä on pienempi kuin muissa päätepisteissä.

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"}'

Osoitteiden automaattitäydennyksen päätepiste

POST /api/v1/suggest

Aloitatko tyhjästä? Widget ra-suggerisci.js ja pieni välityspalvelin omalla palvelimellasi riittävät: token ei koskaan päädy selaimeen.

Ehdotuksia sitä mukaa kuin käyttäjä kirjoittaa osoitetta lomakkeeseesi: koko Italian katurekisteri nimi täydennettynä (”via verdi” → ”Via Giuseppe Verdi”), kunta ja maakunta; postinumero tulee valinnan mukana, suurissa postinumeroalueisiin jaetuissa kaupungeissa talonumeron oikea. Toimii istunnoittain: asiakasohjelma luo UUID:n jokaiselle täytettävälle osoitteelle, ehdotuskyselyt ovat ilmaisia, ja maksat yhden yhteystiedon tarkistuksen, kun käyttäjä valitsee ja kentät täyttyvät (toiminto select, joka palauttaa moottorin jo normalisoiman tietueen). Lomakkeeseen jo täytetyt kentät — myös osittaiset — kulkevat mukana kontekstina ja rajaavat ehdotuksia.

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"}'

Kun katu on valittu, talonumero täydentyy: antamalla street_id osittaisen numeron kanssa saat kadun olemassa olevat numerot ja arvon exists tosi/epätosi kirjoitetun numeron tarkistamiseen — ja valinnan voi toistaa talonumeron kanssa ilman lisäveloitusta: veloitus on istunto- ja katukohtainen, ei napsautuskohtainen; toinen katu samassa istunnossa on uusi veloitus. Talonumerot täydennetään vain siinä istunnossa, joka valitsi kyseisen kadun. Postinumeroalueisiin jaetuissa kaupungeissa juuri talonumero määrää tarkan postinumeron.

API-token ei koskaan mene selaimeen: valmis widget (ra-suggerisci.js) kutsuu palvelimellasi olevaa pientä välityspalvelinta, joka lisää tokenin ja välittää pyynnön eteenpäin. Jokainen istunto sallii enintään 30 kutsua ja kestää 10 minuuttia; istunnot ilman valintaa ovat ilmaisia 200:aan asti päivässä tokenia kohti, plus viisi jokaista valintaa kohti. Widget, valmis proxy ja esimerkkilomake ovat Oma lomakkeesi -kitissä.

Toimii jokaisessa palvelussa olevassa maassa (tänään Ranska, Saksa, Espanja, Alankomaat, Belgia, Suomi, Tšekki, Portugali, Tanska, Norja, Itävalta, Sveitsi, Slovakia, Kroatia, Romania, Unkari, Slovenia, Irlanti, Islanti, Luxemburg, Liechtenstein, San Marino, Monaco, Andorra, Vatikaanivaltio; ajantasainen luettelo on kohdassa Maat): kun annat country_code tai country, ehdotukset tulevat sen maan rekisteristä, ja teksti kirjoitetaan kuten siellä kirjoitetaan — katu, numero, postinumero ja kaupunki vaikka yhteen kenttään: «kalverstraat 92 amst», «92 rue de rivoli paris», Alankomaissa «1012PH 92». Jokainen vastaus sisältää kentän parsed, eli miten palvelin luki kadun (street), numeron (house_number) ja postinumeron (postcode): lomakkeesi tietää, missä numero on, tuntematta maan sääntöjä. Ehdotukset sisältävät kadun, kaupungin, mahdollisen kylän ja kentän source (registry, tai osm siellä, missä kansallinen rekisteri ei julkaise); postinumero ja talonumerot eivät koskaan ole ehdotuksissa: ne tulevat valinnan mukana, joka kulkee moottorin läpi ja palauttaa saman tietueen kuin /contact (postcode rekisterin vahvistamana, geo talonumeron tarkkuudella). Valinnan mukana voit antaa myös kentän postcode, lomakkeeseen kirjoitetun. attribution on lähdemerkintä, joka näytetään ehdotusten vieressä: rekisterin lisenssi vaatii sen. Jos maa puuttuu, oletetaan IT; maalle, joka ei ole palvelussa, vastaus on edelleen HTTP 200 ja supported:false sekä hints:[], ilman istuntoa ja ilman veloitusta. Istunto kuuluu yhdelle maalle: jos maa vaihtuu, asiakas luo uuden UUID:n (muuten 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"}

Suuret määrät: asynkroninen työ

Tavalliset kutsut vastaavat heti, ja siksi niillä on kohteiden yläraja — minuutteja kestävä HTTP-pyyntö ei hyödytä ketään. Ylärajat seuraavat käsittelyn raskautta:

Kohteiden ylärajat kutsua kohden
PäätepisteKohteita kutsua kohdenMiksi
/phone5.000välitön tarkistus
/tax-code, /enrichment2.000nopea tarkistus
/contact, /email, /dedupe500täydellinen tarkistus
/website100yksi yhteys sivustoon jokaista osoitetta kohden

Näiden lukujen yli listaa ei tarvitse pilkkoa käsin: lisää "async": true, niin kutsu palaa heti koodin kanssa ja käsittely menee samaan jonoon kuin tiedostojen lataukset. Enintään 100 000 kohdetta kutsua kohden, ja sivulla Omat työt näkyy vain yksi työ.

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 … ]}'

{"ok":true,"job":"369e46e9e7bb…","state":"queued","rows":100000}

Sen jälkeen tulos luetaan tarvittaessa, ja se saapuu JSON-muodossa tai CSV-tiedostona:

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

Alle 5 000 rivillä tulos palautuu myös kentässä results JSON-vastauksen sisällä; sen yli se ladataan CSV-tiedostona. Veloitus tapahtuu, kun työ laitetaan jonoon, ja käsittelemättä jäänyt osa palautuu saldoosi, jos työ pysähtyy. Tokenin on kuuluttava tilille: työ päätyy sinun jonoosi.

Tuloskoodit

Jokainen vastaus sisältää kentän outcome: luettelo avainsanoja, tyhjä, kun ei ole mitään ilmoitettavaa. Kaava on aina <conditions> [MODIFIED <types>] — ehdot edessä, muutokset lopussa — ja se pätee kaikkiin palveluihin. Vieressä on outcome_label (tai kind) arvoilla ok, modified, warning, error, sekä reason, joka selittää yhdellä rivillä. Koodit ovat tunnisteita: niitä verrataan, ei käännetä; "language": "it"-arvolla tulevat italialaiset koodit (LOCALITA_NON_TROVATA MODIFICATO CAP INDIRIZZO), samat sana sanalta.

Osoite (yhteystiedon tarkistus)

Tuloskoodit — osoite (yhteystiedon tarkistus)
KoodiMerkitys
OKEi muutoksia tarpeen, osoite jo oikein (tyhjä tulos)
MODIFIEDOsoite normalisoitu, perässä muuttuneet kentät: POSTCODE, PROVINCE, CITY/CITY_FORM, STREET/STREET_FORM, BUILDING (pääte _FORM = vain muoto/aksentit, arvo oli jo oikein). Kentän rakenne on <ehdot> [MODIFIED <tyypit>]: mahdolliset ehdot tulevat ensin, MODIFIED ja sen tyypit lopussa
PO_BOXJakelu postilokeroon tunnistettu (ei katu): muoto CASELLA POSTALE n
LOCALITY_WITHOUT_STREETOsoite on kylä tai taajama ilman kadunnimeä; jakelu on silti mahdollinen
CITY_NOT_FOUNDKuntaa ei tunnistettu
CITY_AMBIGUOUSKunnan nimi esiintyy useammassa maakunnassa
STREET_NOT_FOUNDKatua ei ole rekisteröity tälle paikkakunnalle
STREET_AMBIGUOUSKadunnimi esiintyy kunnan useammalla alueella
STREET_TYPE_MISSINGKadun tyyppiä ei tunnisteta (Via/Corso/Piazza… puuttuu)
HOUSE_NUMBER_MISSINGTalonumero puuttuu tai ei kelpaa
HOUSE_NUMBER_INVALID_FORMATTalonumero tunnistamattomassa muodossa
POSTCODE_UNCONFIRMEDKatu on olemassa, mutta sille numerolle ei ole vahvistusta postinumerosta: annettu jää, jos se kuuluu kaupungille
POSTCODE_PRESUMEDKatu on olemassa ja postinumeron asetimme itse ilman osoitenumeron vahvistusta: kadulla on useampi eikä numero ratkaise, tai sitä ei ollut annettu ja se tulee naapurinumeroista
INCOMPLETE_DATATietoa ei riitä normalisointiin
FOREIGNMuu kuin italialainen osoite maansa postimuodossa; jos kansallinen rekisteri on käytössä, katu ja talonumero on tarkistettu, ja viesti kertoo sen (vain italiaksi)
HOUSE_NUMBER_NOT_FOUNDUlkomaat: katu on kansallisessa rekisterissä, annettu talonumero ei (vain siellä, missä rekisterissä on kaikki talonumerot: osittaisesta lähteestä tai OpenStreetMapista puuttuva numero ei ole tuomio)
POSTCODE_INVALID_FORMATUlkomainen: postinumero ei ole annetussa maassa käytössä olevassa muodossa
COUNTRY_UNRESOLVEDUlkomainen: osoitteeseen kirjoitettua maata ei ole ISO 3166-1 -luettelossa

Italian verotunnus (codice fiscale)

Tuloskoodit — italialainen verotunnus
KoodiMerkitys
TAX_CODE_INVALIDKoodi ei läpäise tarkistuksia; reason kertoo, mitä (tarkistusmerkki, pituus, kuukausi, päivämäärä, kunta), ja suggestion ehdottaa oikeaa muotoa, kun se on pääteltävissä
TAX_CODE_MISMATCHKoodi on kelvollinen, mutta se ei täsmää pyynnön sukunimeen, etunimeen, sukupuoleen tai päivämäärään
MODIFIED TAX_CODETarkistusmerkki puuttui: laskettu uudelleen 15 ensimmäisestä merkistä
MODIFIED TAX_CODE_FORMVain muoto siistittiin (isot kirjaimet, välilyönnit)
GENERATEDPäätepiste /tax-code, toiminto generate: koodi laskettu henkilötiedoista
MATCH / MISMATCHPäätepiste /tax-code, toiminto compare: koodi täsmää tietoihin tai ei; differences luettelee poikkeavat kentät

Päätepisteessä /tax-code samoilla tarkistuksilla on omat koodinsa — 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 — koska siellä verotunnus on tarkistuksen kohde, ei tietueen kenttä.

Rikastaminen

Tuloskoodit — rikastus
KoodiMerkitys
ENRICHEDLuonnollinen henkilö: sukupuoli pääteltiin tai vahvistettiin, titteli ja tervehdykset asetettu
LEGAL_PERSONYritys tai yhteisö: otsikko käsitellään toiminimenä (Spett.le)
PARTIALEtunimi puuttuu tai sukupuolta ei voi päätellä nimestä: neutraali tervehdys

Sähköposti

Tuloskoodit — sähköposti
KoodiMerkitys
EMAIL_INVALIDVirheellinen syntaksi
EMAIL_DOMAIN_NOT_FOUNDVerkkotunnus ei vastaanota sähköpostia (ei MX/A-tietuetta)
EMAIL_TYPOMahdollinen kirjoitusvirhe verkkotunnuksessa: korjaus on ehdotus, kentässä suggestion ja normalisoidussa kentässä
MODIFIED EMAIL_DOMAINVarma kirjoitusvirhe verkkotunnuksessa, korjattu: corrected_from sisältää kirjoitetun muodon
EMAIL_DISPOSABLEKertakäyttöinen sähköpostiverkkotunnus
EMAIL_ROLE_BASEDOrganisaation osoite (info@, tilaukset@), ei henkilön. Se on huomautus, ei virhe
EMAIL_EMPTYKentässä ei ole osoitetta
MODIFIED EMAIL_FORMVain muoto siistittiin (välilyönnit, isot kirjaimet)

Puhelin

Tuloskoodit — puhelin
KoodiMerkitys
PHONE_INVALIDEi tunnistettava numero
PHONE_LENGTH_ANOMALOUSNumeroiden määrä ei sovi numerointisuunnitelmaan
PHONE_OUT_OF_PLANEi ala numerolla 0 (lankapuhelin) eikä 3 (matkapuhelin)
PHONE_FOREIGNNumero, jossa on muu kuin Italian kansainvälinen suuntanumero (tai ulkomaisen tietueen kansallinen numero): tarkistamme vain muodon, E.164-muodossa
PHONE_SPECIALMaksuton tai erikoismaksullinen numero: ei henkilökohtainen yhteystieto
PHONE_SERVICEYleishyödyllinen palvelunumero (112, 118…)
PHONE_WITH_EXTENSIONKentässä oli myös alanumero tai huomautus: tarkistamme vain numeron
PHONE_EMPTYKentässä ei ole numeroa
MODIFIED PHONE_FORMVain muoto siistittiin (välilyönnit, pisteet, suuntanumero)

Verkkosivu

Tuloskoodit — verkkosivu
KoodiMerkitys
WEBSITE_INVALIDEi oikein kirjoitettu verkko-osoite
WEBSITE_DOMAIN_NOT_FOUNDVerkkotunnusta ei ole olemassa (ei DNS-tietuetta)
WEBSITE_NOT_RESPONDINGVerkkotunnus on olemassa, mutta mikään palvelin ei vastaa
WEBSITE_PAGE_NOT_FOUNDSivusto vastaa, mutta sivua ei ole (404/410)
WEBSITE_ACCESS_DENIEDSivusto kieltää pääsyn (401/403): usein bottisuojaus
WEBSITE_CERTIFICATE_INVALIDSivusto vastaa, mutta varmennetta ei voi tarkistaa
WEBSITE_RESPONSE_ANOMALOUSOdottamaton vastauskoodi
WEBSITE_EMPTYKentässä ei ole osoitetta
MODIFIED WEBSITE_FORMOsoite täydennetty (protokolla, www) muuttamatta sen sisältöä

Mitä kukin kutsu kuluttaa

Jokainen kutsu kuluttaa palvelun laskurin käsittelyjä: yhteystiedon tarkistus (/contact, /suggest valittaessa), duplikaattien poisto (/dedupe) ja kevyet käsittelyt (/email, /phone, /website, /enrichment, /tax-code ilmaiskiintiön yli). Käsittelyjä ostetaan paketteina, jotka säilyvät, tai kuukausitilauksella; hinta 1 000 käsittelyä kohden laskee koon kasvaessa ja löytyy hintasivulta. Joka kuukausi ilmaisia ovat 50 yhteystiedon tarkistusta, 100 tietuetta duplikaattien poistossa ja 500 kevyttä käsittelyä.

Jokainen vastaus kertoo, mitä se kulutti ja mistä: JSON-vastauksen kenttä credit (counter, charged, free, subscription ja packs otettujen käsittelyjen ja jäljellä olevien kanssa, available, auto_topup automaattisesti ostettujen pakettien määrän kanssa, note) sekä otsakkeet X-RA-Charged, X-RA-Available ja, kun se aktivoituu, X-RA-Auto-Topup. Jos käytettävissä olevat käsittelyt eivät kata kutsua eikä laskurin automaattinen täydennys ole käytössä (tai se epäonnistuu), vastaus on 402 payment_required eikä mitään käsitellä.

Jäljellä olevien käsittelyjen määrän saa selville kuluttamatta yhtään kutsulla GET /api/v1/credit. Jokaiselle kolmesta laskurista (contact, dedupe, light) se palauttaa arvon available, kuukauden jäljellä olevat ilmaiset (free) ja päivän, jolloin ne nollautuvat (1. päivä), tilauksen subscription (jäljellä, koko, uusiutuminen), aktiiviset paketit packs yksi kerrallaan jäljellä olevine käsittelyineen (ne eivät vanhene) ja ostettujen määrän, automaattisen täydennyksen auto_topup (käytössä, koko, katto ja kuukauden kulutus euroina), käytön (used tässä kuussa, yhteensä, viimeisin käyttö) ja ennen kaikkea tilan state, koska pelkkä nolla ei kerro, ovatko käsittelyt loppuneet vai etkö käytä kyseistä palvelua: never_used, free (ei koskaan ostettu, työskentelet kuukauden ilmaisilla), free_used_up, active, awaiting_renewal, used_up (olet ostanut aiemmin eikä mitään ole jäljellä: täydennä), sekä huomautuksen warning. Ylimpänä needs_topup luettelee laskurit, jotka vaativat toimia, ja endpoint kertoo, mitä laskuria kukin päätepiste kuluttaa. Vaatii tilin tokenin.

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", … } }
Kunkin päätepisteen kuluttama laskuri
PäätepisteLaskuriKäsittelyt
/contactYhteystiedon tarkistus1 tietuetta kohden (osoite, nimi ja verotunnus yhdessä)
/suggestYhteystiedon tarkistus1 valittua osoitetta kohden (kirjoittaminen on ilmaista)
/dedupeDuplikaattien poisto1 tietuetta kohden (sisältää normalisoinnin)
/tax-codeKevyet käsittelyt1 koodia kohden, ilmaiskiintiön yli
/emailKevyet käsittelyt1 sähköpostia kohden
/phoneKevyet käsittelyt1 numeroa kohden
/websiteKevyet käsittelyt1 sivustoa kohden
/enrichmentKevyet käsittelyt1 nimeä kohden

Maksat tarkistettua kohdetta kohden, et kutsua kohden: jos kentässä on kaksi puhelinnumeroa tai kaksi sähköpostia, tarkistamme ne kaikki (enintään kolme riviä kohden), ja jokainen maksaa oman hintansa. Eräkutsu kuluttaa yhtä paljon kuin sen sisältämät käsittelyt. Jos krediitit ovat lopussa eikä automaattinen täydennys ole käytössä, API vastaa HTTP 402 (riittämättömät krediitit); kutsurajan ylityttyä se vastaa HTTP 429 arvolla retry_after. Ostat paketin omalta tililtäsi tai aktivoit tilauksen maksaaksesi käsittelystä vähemmän.

Kutsuraja

60 pyyntöä minuutissa yksittäisillä kutsuilla, 10 minuutissa eräkutsuilla, 300 minuutissa automaattitäydennyksellä.

Mitattu tuotanto-API:ssa kahdellakymmenellä rinnakkaisella kutsulla: noin 200 tarkistusta sekunnissa, mediaani alle 60 millisekuntia.

Yksi laskenta

API, verkkosivu ja erätyöt kuluttavat samoja laskureita: paketti kelpaa kaikkialla.

Versiointi

Päätepisteet on versioitu (/api/v1/): kun uusi versio julkaistaan, vanha pysyy toiminnassa, ja sen sulkemispäivä ilmoitetaan hyvissä ajoin.

Valmis integroimaan?

Rekisteröi tili, luo token, osta tarvitsemasi käsittelyt ja tee ensimmäinen kutsu alle minuutissa.

Luo oma tokenisi

Katso hinnat