| Version | Change | Date |
| V2026-7.9 | Added additional API parameters to Apendix A | 7/09/2026 |
| V2025-3.25 | Added Combined API information | 3/25/25 |
| V2025-3.11 | Updated Error Messages | 3/11/25 |
| V2025-2.11 | Updated General Service and Performance | 2/11/25 |
| V2024-3.6 | Updated Onboarding Process; Updated Return Codes; Added Multichannel Request information | 3/6/24 |
| V2023-12.19 | Major rewrite; New and Updated Code Samples; Updated Reference Materials; Updated Return Codes | 12/19/23 |
| V2023-9.14 | Added section for “Restricting Returned Data by State.” | 9/14/23 |
| v2022-10.1 | Added long table name and new data table options for Universal Enrichment | 10/1/22 |
| v2022-07.1 | Removed the field limit from Data Append (Universal Enrichment) Appendix | 7/28/22 |
| v2022-04.1 | Updated API Maintenance Window | 4/11/22 |
| v2021-12.1 | Corrected the word perofrmance to performance | 12/20/21 |
| v2021-11.2 | Added service and performance | 11/6/21 |
| v2021-11 | Updated UE return message | 11/5/21 |
| v2021-06 | Revised Automated Password Reset Section | 6/23/21 |
| v2021-05 | Added support for IP Address | 5/30/21 |
| v2021-01.1 | Revision to data dictionary for alias fields | 1/27/21 |
| v2021-01 | Added Support for MAID to Data Append | 1/14/21 |
| v2020-07.1 | Added Process Model Validation API | 7/14/20 |
| v2020-07 | Added new APIs; OmniView Opt-out, OmniView Micro-batch, Universal Enrichment Data Dictionary, Address Cleansing | 7/10/20 |
The Experian Services API allows you to access Experian consumer data in real-time to enable well-timed decision-making and to optimize your marketing and customer data management efforts.
The Experian Services API provides real-time (transaction and micro-batch) access to Experian Marketing Services’ solutions to power your marketing engagements.
The Experian Services API is a backend solution. The user is responsible for creating any front-end interfaces and code development to call the real-time API in the transactional or micro-batch method.
We have two distinct offerings that help you either maintain a view of your customers, OmniView, or build out your view of your customers with Universal Enrichment:
This document is intended for use by developers and other technical resources. It will help you set up the necessary infrastructure to communicate with Experian through the Experian Services API.
There are several steps to getting authority to use the Experian Services Portal. These can be coordinated with an Experian representative. A username and password are issued within 3-5 business days. This does not include the contracting process.
Client credentials are as follows: A client set-up within our system, user(s), name, company address, phone, and e-mail. If the client is a broker, we require that each end-user must have their own credentials for system access.
To use the Experian Services API, you must have:
- Note: The <ProductName> depends on what product (or products) you have purchased from Experian.
- Include your OAuth2 Bearer Token in the request header as an Authorization header.
- Include the consumer’s name / addressable information in the HTTP request body.
- Transmit using the POST method.
The API supports Secure Communications (TLS (Transport Layer Security) v1.2); however, the service does NOT support two-way, mutual authentication using certificates. We have taken this position due to service interruptions regularly incurred by expired certifications, permission changes, missing root chains, etc.
The details regarding services and performance are not legally binding. They serve as general information and guidelines about the practices Experian uses to manage our API solutions.
Definition of terms:
Availability: The total hours the system is operational during the coverage period.
Availability Percentage: The ratio of the total hours the system is operational to the total hours it is scheduled to be operational.
Downtime: The period when the system is not operational. This can be scheduled or unscheduled, but only unscheduled downtime is used to calculate the availability percentage.
Outage: Any unscheduled downtime, typically caused by errors in application software, systems software, systems hardware, or telecommunications lines.
Response Time: The time, measured in seconds and tenths of seconds, that the online system takes to interpret an inquiry, retrieve the necessary data, and prepare the response. This does not include communication time between the Client and Experian or time to/from external data sources.
Single-record Transactions: API requests consisting of a single record sent in the request and the same single record returned with the service output.
Micro-batch Transactions: API requests consisting of two or more records sent in a single request, with the same records returned with the service output.
Service Standards
The goals listed below are measured from January 1 through December 31 each year and are reported monthly (both as a monthly and year-to-date annual percentage).
Cache and reuse. Experian requires clients to cache and reuse OAuth tokens to achieve stated API response times.
Your Experian representative will set up your client credentials and initial login. This takes five to eight business days, depending on the type of account and number of users. Set up information required includes:
Note for brokers: The information provided must be the end user’s credentials.
This information is used to set up your Experian Party ID, username, and initial one-time password. Once these credentials have been defined, you will receive three automated email messages.
To complete the initial registration process:
The URL of the Experian OAuth2 Bearer Token: https://us-api.experian.com/oauth2/v1/token
Experian requires an OAuth2 Bearer Token in the message header. To request one, the user must post a request with the Experian-provided “username,” “password,” ”client_id,” and “client_secret” in JSON format. The User will receive the “access token” for Experian Marketing Services APIs. Tokens are valid for 30 minutes.
You will receive an email from Experian with a PDF document with your production credentials and the information noted above. We do not provide UAT credentials. If you received an API credentials PDF document with a UAT URL, please ignore it. If you only received the UAT credentials, please contact us so we can issue you the proper credentials.
All token requests must be made from the known list of static IPs.
Please set up Token Caching to make full use of the access token's lifetime and avoid unnecessary call overhead.
Token Caching facilitates quicker processing of individual API requests by storing the authorization token. Failing to implement token caching slows down every API request.
Token Caching is a process in which your system generates a token and securely caches it. The token is used for all your service API calls until it expires. When it does, a new token is requested to replace the expiring one in the cache. This cycle is repeated to ensure that your system always uses the latest active token.
All users of the Experian APIs shall implement a timer (<30min).
If the timer is < 30 minutes, use the existing token. Otherwise, get a new token.
Sample curl command:
curl --location --request POST 'https://us-api.experian.com/oauth2/v1/token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw "{
\"username\": \"$USERNAME\",
\"password\": \"$PASSWORD\",
\"client_id\": \"$CLIENT_ID\",
\"client_secret\": \"$CLIENT_SECRET\"
}"
It is essential to change your password at least every 90 days. You can do it manually or through the automated password reset process. You can contact your Client Service Representative to configure your account and follow the instructions for password resets every 90 days or less. Please note that Experian does not provide non-expiring or persistent passwords. To ensure two-factor authentication, Experian requires all calling solutions to list IP Addresses for whitelisting.
To change your password manually, you can log into the Origin system and change it at any point within the 90-day window. It is essential that you coordinate this with your system by following the directions below.
You will also receive an automated email message before the 90-day limit, informing you that you must change your password.
To manually reset your password:
The password automatically expires ninety days after its creation, after which access will be denied. Therefore, users must regularly change their passwords to maintain continuous service.
Production users will receive a password email reminder ten days before its expiration. The email will be sent to the email address associated with the User ID, so the email address must be kept up to date in our Access Control System.
Since the development and testing of an application usually takes less than 90 days, Demo (test) users will not receive an email reminder. It is up to them to remember to maintain their testing password.
Passwords can be changed manually using the appropriate Experian website or automatically using the Automated Password Reset Function (see the “Automated Password Reset Function” section below for details).
If the Automated password reset function is not used, the user’s application should remind users to change their password regularly before its expiration. This is a requirement for third-party software applications.
To manually change the password, use the following Browser URLs:
https://origin-na.experian.com/login
If the software normally changes passwords programmatically and a manual password change is made, it is recommended that the software automatically change the password again to avoid any mismatching and to ensure that the automation process is working properly.
An Automated Password Reset Function is available for those who want to change the password programmatically. It uses an HTTPS POST to the following URLs.
Automated Password Reset URLs
Internet Access:
Extranet Access: (VPN / leased line)
Automated Password Reset Pre-Conditions
The following conditions must be met before the automated password reset process can be used:
Automated Password Reset Process Flow
1. Request a new password: The client connects to Experian using an HTTPS POST and Basic authentication to indicate a new password request. The client passes the user ID and current password in the same manner as in a standard transaction. It also passes the following key-value pairs:
“command=requestnewpassword” “application=netconnect.”
A dump of the HTTPS POST would look like this:
POST /securecontrol/reset/passwordreset HTTP/1.1
Authorization: Basic dGVzdGlkOnBhc3N3b3Jk ß original user ID and password
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Host: ss3.experian.com
Connection: keep-alive
Content-Length: (content length)
Net Connect XML Access Users
&command=requestnewpassword&application=netconnect&version=1
API JSON Access Users &command=requestnewpassword&application=creditprofileapi&version=1
2. Receive new password: The client receives the new password in the Experian response. The client can store this password so that it can be retrieved later. Please note that the password still needs to be reset. A dump of the response would look like this:
HTTP/1.1 200 OK
Date: Tue, 09 Mar 2010 22:29:02 GMT Content-type: text/plain
Set-Cookie: EntlogonWebAppSession=E2C.....
Cache-control: no-cache="set-cookie"
Response: jsdmhyz63 <- suggested password returned
3. Reset password: The client connects to Experian again using an HTTPS POST and Basic authentication to indicate that it is requesting a password reset. The client must authenticate again using the existing user ID and password and pass the following key-value pairs in the transaction:
“newpassword=(password received in step 2 in clear text)
“command=resetpassword”
“application=netconnect”
A dump of the HTTPS POST would look like this:
POST /securecontrol/reset/passwordreset HTTP/1.1
Authorization: Basic dGVzdGlkOnBhc3N3b3Jk ß original user ID and password
Content-Type: application/x-www-form-urlencoded
Host: ss3.experian.com
Content-Length: (content length)
Net Connect XML Access Users
&newpassword=jsdmhyz63&command=resetpassword&application=netconnect&version=1
API JSON Users
&newpassword=jsdmhyz63&command=resetpassword&application=creditprofileapi&version=1
4. Receive the status: The client receives the status of the password reset request as a string in the response. If the reset was successful, the string value is “SUCCESS.” In any other scenario, the status string will have an error message explaining the error (see the Automated Password Reset Errors section below for errors).
HTTP/1.1 200 OK
Date: Tue, 09 Mar 2010 22:31:02 GMT
Content-Type: text/plain
Set-Cookie: EntlogonWebAppSession=Lh1b....; path=/
Transfer-Encoding: chunked
Response: SUCCESS
5. Save password: If the status string is “SUCCESS,” the client saves the new password and uses it in their application.
6. Usage of New Passwords: New Passwords are available to be used immediately in the Production environment but will take up to 10 minutes to be populated throughout the Demo environment.
Automated Password Reset Errors
The response string will have an error message if the process is unsuccessful. The most common is an authentication failure, which will appear in this example:
HTTP/1.1 302 Moved Temporarily
Date: Tue, 09 Mar 2010 22:31:02 GMT
Content-Type: text/plain
Set-Cookie: EntlogonWebAppSession=Lh1bL....; path=/
Response: Unable to authenticate
| Status Code | Response Text | Reason |
| 302 | Unable to authenticate | Invalid user ID/password |
| 400 | Invalid Input | Input parameter is missing or invalid |
| 500 | Application Error | Contact your TSSR |
Recommendation: If the software does not automatically change the password, the software should track the number of days since the supervisor last changed the password. Beginning on the 80th day, the software should remind the supervisor to change their password (both at Experian and within the software). By the 85th day, the software should remind the supervisor that failure to change the password will interrupt service. This message will continue until the supervisor changes the password.
Recommendation: When manually changing the password, the software should ask the supervisor to commit it to memory.
Recommendation: The software should notify any logged-in user when the password expires. The user should be directed to notify the system administrator to log in and change the password.
Recommendation: It is also recommended that when the administrator logs into the software after the password expires, a message should display stating that the password has expired, and it should contain a link to the Experian authentication system's URL.
Recommendation: The Automated Password Reset (APR) function is coded for it and should be executed every 30 days with an email going to the user ID admin if it is unsuccessful so they can troubleshoot the issue. The user ID admin can still change the password manually. However, this will give them 60 days to troubleshoot the APR process.
| Type | Automated Password Reset URL | IP address |
Demo and Prod Extranet (used with VPN (Virtual Private Networks) or MPLS Dedicated connections) |
Demo and Production Net Connect https://www.experiannet.com/securecontrol/reset/passwordreset |
205.174.35.49/443 |
| Prod and UAT (User Acceptance Testing) Internet | API Staging https://stg1-ss6.experian.com/securecontrol/reset/passwordreset |
205.174.34.177/443 |
Demo and Production Net Connect and API Production |
205.174.34.37/443 | |
Demo and Production Net Connect and API Production |
167.107.80.248/443 |
| Type | Manual Password change URL | IP address |
| Demo and Prod Internet | https://origin-na.experian.com/login | 45.60.11.174/443 |
Your Experian Services API user account will be locked under any of the following conditions:
Locked accounts can only be unlocked by Experian. Contact your Customer Service Representative or Experian's Technical Support Center at 800-854-7201 to unlock your account. Be sure to have your user account and email address when you call, as you will be required to provide that information.
If you forget your username, please contact your account representative.
If you forget your password, you can request a special one-time-use login URL.
Please also change your application to reference the new password within the request message header.
Email: Targeting_API_Onboarding@experian.com
If you need any help with your username or password, please call Experian's Technical Support Center at 800-854-7201 between 5:00 AM to 6:00 PM Pacific (Monday - Friday) and 6:00 AM to 3:00 PM Pacific (Saturday – Sunday)
Once you have established your username, password, client ID, and Client Secret and requested an access token (described above in the Account Management section), Experian recommends submitting a sample request to the Experian Services API. This sample request is optional but can help troubleshoot any issues.
This section describes sending a sample request message via the Experian Services API.
There are many free tools available on the internet to test RESTful APIs. This section utilizes Postman, which is available for free through https://www.getpostman.com/products. If you are using Google Chrome, the Talend API Tester extension is a useful tool for manual API calls. Please note that this section assumes that you have received your Experian Services API username, client ID, and client secret, created your password, and defined an Experian Party ID.
To send a sample test request to the Universal Enrichment Experian Services API:
{
"insertpartyid": YOUR PARTY ID GOES HERE,
"erich":"319",
"fname":"DANA",
"lname":"CONSUMER",
"addr1":"123 MAIN ST",
"city":"WEST NEWBURY",
"state":"MA",
"zip":"01985"
"phone":"8125553456"
}
Postman view
REMINDER: add the actual insertpartyid
6. Click on the “Headers" tab and make the following changes:
a. Authorization: Bearer YOUR ACCESS TOKEN
b. Content-Type: application/json
7. The screen should now look like this:
Please note that there is a space between "Bearer" and the Access token. Refer to the "Getting your OAuth2 Bearer Token" section for instructions on requesting the Access Token.
8. Press the Send button to submit the test request message and wait for the response.
If this is the response you see, congratulations!
You have verified that your setup is correct! This record does not contain erich it is only used for setup.
The production endpoint URL of the Experian Services API is: https://us-api.experian.com/marketing-services/targeting/v1/[Api Name]
The "Product Name" component within the URL tells the system what product you want to run for the request message. Currently, the system supports the following APIs:
| Product Name | [API Name] | Brief Product Description | |
| OmniView | omniview omniview2 |
Single Transaction Cross-Channel persistent linkage omniview2 adds postal address cleansing to enhance postal address matching. No address data is returned. |
|
| OmniView Client Opt-Out | omniview-optout | Single Transaction Initiate an opt-out of a customer record from ‘YOUR’ OmniView client repository |
|
| OmniView Micro batch | omniview-microbatch omniview-microbatch2 |
OmniView called with 1-300 records in a single transaction. Omniview-microbatch2 adds postal address cleansing to enhance postal address matching. No address data is returned. |
|
| Address Coding and OmniView | hyov | Single Transaction Address Coding and Standardization standardized postal address is returned with omniview ID Cross-Channel persistent linkage. |
|
| Address Cleansing and Standardization | address-correction | Single Transaction Address Coding and Standardization |
|
| Universal Enrichment | universal-enrichment | Single Transaction Consumer Data Append |
|
| Universal Enrichment Micro Batch | ue-microbatch | Universal Enrichment called with 1-300 records in a single transaction | |
| Universal Enrichment Data Dictionary | ue-datadictionary | Get the details for specific ConsumerView field(s), long description, available values, value meaning and more |
Universal Enrichment API supports single requests or Micro Batches of requests returning a single response for the batch.
Below are samples. For a list of keywords for sending data, reference Appendix A – API Keywords. Please see your account representative for a complete and updated list of available ConsumerView fields that can be appended.
Standard Request Message
Universal Enrichment Example
Standard Response
The response returns the requested data and the field values requested, and for each field value appended, the level of the data appended, such as “GB (postal address)” or “LV” (living unit). See the Data Append Level Field (below) for details on the codes.
Each response includes four match-related fields:
Return Code (Field ID 25038): A consolidated field containing the overall match result.
Match Score (Field ID 27195): Provides OmniView's match result for research purposes. This field contains the same data as positions 1–5 of the Return Code.
Match Level (Field ID 27196): Indicates the highest match level determined from the keys provided by OmniView, along with any subsequent geographic searches performed when OmniView cannot confidently identify a match. This field contains the same data as position 6 of the Return Code.
Match Address (Field ID 27197): Identifies the address used for geographic data appends. This field contains the same data as position 7 of the Return Code.
For more information on return codes out of the Universal Enrichment system, you can read this document.
Every Universal Enrichment System return code is exactly 7 characters long:
| Component | Bytes | Description |
| Base match code | 1-5 | Identifies the type of identity outcome (e.g. FE001, AC100, TA100) |
| Match level | 6 | Strength of the identity match: P = Person, H = Household, A = Address, G = Geographic, N = None |
| Address source | 7 | Which address was used for enrichment: C = Client-supplied, E = Experian/repository, N = None |
Example: FE001PE = FE001 (unique email/phone match) + P (person-level) + E (Experian address used for enrichment)
Byte 6 describes the strongest level of identity resolution published by Universal Enrichment System based on your threshold settings.
| Code | Match Level | What it means |
| P | Person-level | A specific individual was identified. Highest-quality match used for deterministic identity resolution. |
| H | Household-level | A household was identified but not a single person. Common when name evidence is ambiguous or thresholds prevented person-level output. |
| A | Address-level | An address was matched but no individual identity or household record is published. Useful for address and geographic enrichment only. |
| G | Geographic-level | Only a geographic area was matched. No individual identity, household, or address record was published. |
| N | No match | No appendable outcome. Typically seen on no-match, blocklist, and overflow codes. |
Byte 7 indicates which address source Universal Enrichment System retained for geographic enrichment — determined by Universal Enrichment's address resolution logic, not simply whether an address was present on the input.
| Code | Source | What it means |
| C | Client Address | The address you supplied was used for enrichment. Typical when a valid client address is present and matches. |
| E | Experian / repository address | Universal Enrichment System used an address from Experian's repository for enrichment. Common in Trade Area, MAID, IP, and Experian ID lookup flows. |
| N | No address | No usable address was retained for enrichment. No geographic or address-level data was appended. |
The Data Append Level is a dynamically created field that reveals the level (table key) of the specific data appended.
For single real-time transactions, the level is appended as part of the returned data elements in this format: “Field Id”: {“2 Byte Table Code”: “Field Value”}
(e.g., “224” : {”Z5”: ”1M”})
The Data Append Level field ID is assigned for micro batch and batch processing, which is calculated by adding nine million to the requested field id. For example, when Field ID 224 (Marital Status) is requested, it will have an accompanying field of 9000224 in the accompanying response header:
{
"csv_header": "25038|27195|27196|27197|224|9000224",
"rec1": "VE000PE|VE000|P|E|1M|Z5",
"record_count_error": 0,
"record_count_processed": 1
}
| Data Append Level | Table Name | Description |
| Z9 | ZIP9 | Zip code + Zip4 code |
| Z7 | ZIP9[7] | Zip code + first 2 digits of zip4 code |
| Z5 | ZIP9[5] | Zip code |
| LV | LUID | ConsumerView living unit id |
| XS | PixelV5 | Pixel code + Geo Pixel code 2014 (V5) |
| AD | Address | Address id |
| PA | AdultPID | Adult person id |
| GB | GEOCEN | Census state code, county code, tract code and block group |
| GT | GEOCEN[11] | Census state code, county code, tract code |
| GC | GEOCEN[5] | Census state code and county code |
| CB | GEOCEN2020 | Census 2020 state code, county code, tract code and block group |
| CT | GEOCEN2020[11] | Census 2020 state code, county code, tract code |
| CC | GEOCEN2020[5] | Census 2020 state code and county code |
| MD | MAID | Mobile Ad Id |
| IP | IP | IP Address |
| LA | LUIDAID | Living Unit at an Address |
| EM |
Keywords (Adult_2, Adult_3, Adult_4, Adult_5, Adult_6, Adult_7, Adult_8)
The “erich” keyword must also be used for person 1, calling the same field ids.
Sample request:
{
"erich": "10769,3413,876,7820,14708,14577",
"adult_2": "189,224,1066,8216,9126,10769,10799",
"adult_3": "189,224,1066,8216,9126,10769,10799",
"adult_4": "189,224,1066,8216,9126,10769,10799",
"adult_5": "189,224,1066,8216,9126,10769,10799",
"adult_6": "189,224,1066,8216,9126,10769,10799",
"adult_7": "189,224,1066,8216,9126,10769,10799",
"adult_8": "189,224,1066,8216,9126,10769,10799"
}
For the response, each adult maps to the same field ID + (adult # * 100,000,000)
The Adults must be in order and not skip a number.
Appended data can be restricted on a by-state basis by leveraging a combination of “restrict_erich” and “restrict_state.” This can be leveraged with or without a postal address on the input record. Below is an example with the postal address on input. With this example, no data would be returned for field 119 due to the presence of the “restrict” keywords and the restricted state.
Micro Batch allows sending a single request with up to 300 records in it. The user provides the list of enrichment element numbers (same as a single transaction) and a layout preceded by the keyword “layout,” indicating the order of the fields included (fields use the same keywords), a delimiter indicator, and a record identifier.
The record identifier must begin with “rec1” and be numbered sequentially.
An optional keyword is “notables” with the default value of “false.” This provides the append level. If no append level is desired, use “notables”: “true.”
The response provides a header row indicating the order in which the requested fields are returned. In addition, each record will have a return code, match score code, match level code, match address code, and the data appended and append level for the field requested append (reference Data Append Field Level Detail above for additional information).
Standard Request Message
{
"partyid":"####",
"delimiter":"|",
"erich":"319,186 ",
"layout":"fname|lname|suffix|gender|addr1|addr2|city|state|zip|email|phone",
"rec1":"Bob|Smith|||123 Main St||Anytown|IL|12345||",
"rec2":"|||||||||myemail@email.com|",
"rec3":"Sue|Jones|||456 Elm Rd||Anytown|IL|12345||"
}
Keywords: Appendix A - Universal Enrichment Keywords
Standard Response
{
"csv_header": "25038|27195|27196|27197|319|9000319|186|9000186"
"rec1": "VE000PE|VE000|P|E|A01|LV||",
"rec2": "E9999NN|E9999|N|N||||",
"rec3": "VE000PE|VE000|P|E|J36|LV||",
"record_count_error": 0,
"record_count_processed": 3,
"txn_id": "19042516360427701002######"
}
The Universal Enrichment Data Dictionary (metadata) API allows you to look up field IDs and have their metadata (descriptors, valid values, and data format) for use as an informational resource or to add the metadata to reports or user interfaces to add context for end users.
Standard Request
PartyId=0000&fields=319,119
Standard Response
[
{
"Alternate_Name": "MOSAIC_HH_v3",
"Compliance_Hold": "",
"Data_Level": "Household",
"Data_Type": "Modeled",
"FieldCategory_1": "Mosaic",
"FieldCategory_2": "Mosaic Household",
"FieldCategory_3": "",
"Field_ID": "319",
"Field_Name": "Mosaic Household",
"Field_Type": "Character",
"Field_Values": "A01=American Royalty|A02=Platinum Prosperity|A03=Kids and Cabernet|A04=Picture Perfect Families|A05=Couples with Clout|A06=Jet Set Urbanites|B07=Generational Soup|B08=Babies and Bliss|B09=Family Fun-tastic|B10=Cosmopolitan Achievers|C11=Aging of Aquarius|C12=Golf Carts and Gourmets|C13=Silver Sophisticates|C14=Boomers and Boomerangs|D15=Sports Utility Families|D16=Settled in Suburbia|D17=Cul de Sac Diversity|D18=Suburban Attainment|E19=Full Pockets Empty Nests|E20=No Place Like Home|E21=Unspoiled Splendor|F22=Fast Track Couples|F23=Families Matter Most|G24=Status Seeking Singles|G25=Urban Edge|H26=Progressive Potpourri|H27=Birkenstocks and Beemers|H28=Everyday Moderates|H29=Destination Recreation|I30=Stockcars and State Parks|I31=Blue Collar Comfort|I32=Steadfast Conventionalists|I33=Balance and Harmony|J34=Aging in Place|J35=Rural Escape|J36=Settled and Sensible|K37=Wired for Success|K38=Gotham Blend|K39=Metro Fusion|K40=Bohemian Groove|L41=Booming and Consuming|L42=Rooted Flower Power|L43=Homemade Happiness|M44=Red/ White and Bluegrass|M45=Diapers and Debit Cards|N46=True Grit Americans|N47=Countrified Pragmatics|N48=Rural Southern Bliss|N49=Touch of Tradition|O50=Full Steam Ahead|O51=Digital Dependents|O52=Urban Ambition|O53=Colleges and Cafes|O54=Striving Single Scene|O55=Family Troopers|P56=Mid-scale Medley|P57=Modest Metro Means|P58=Heritage Heights|P59=Expanding Horizons|P60=Striving Forward|P61=Humble Beginnings|Q62=Reaping Rewards|Q63=Footloose and Family Free|Q64=Town Elders|Q65=Senior Discounts|R66=Dare to Dream|R67=Hope for Tomorrow|S68=Small Town Shallow Pockets|S69=Urban Survivors|S70=Tight Money|S71=Tough Times|U00=Unknown",
"Length": "3",
"Long_Description": "Mosaic Household is a lifestyle consumer segmentation system providing classifications at the household level and developed by Experian. The Mosaic system identifies consumers into types and groups based upon dimensions of consumer demographics/ household composition/ ethnicity/ socioeconomics/ behaviors and lifestyles.",
"Mask": "",
"Retire_Date": "",
"Royalty": ""
},
{
"Alternate_Name": "Digital_Moms",
"Compliance_Hold": "",
"Data_Level": "Household",
"Data_Type": "Modeled",
"FieldCategory_1": "Lifestyle Models",
"FieldCategory_2": "Life Stages and Events",
"FieldCategory_3": "Parents and Family",
"Field_ID": "119",
"Field_Name": "Digital Moms",
"Field_Type": "Character",
"Field_Values": "0=Unknown/Unscored|1=Extremely Likely|2=Highly Likely|3=Very Likely|4=More than Likely|5=Likely|6=Somewhat Likely|7=Very Unlikely|8=Highly Unlikely|9=Extremely Unlikely",
"Length": "1",
"Long_Description": "Digital Moms tend to be more tech-savvy and resourceful than their counterparts without children when it comes to online and mobile activities. Digital Moms identifies a household's likelihood to contain a Mom that is frequently online/ and a frequent social networker.",
"Mask": "9",
"Retire_Date": "",
"Royalty": ""
}
]
“columns”:”<value>”
Control what columns of the data dictionary are to be returned
| Value | Action |
| Blank (default) | Returns above columns |
| Standard | Field_ID, Field_Name, Field_Type, Field_Values, Length, Mask, Retire_Date |
| data_level | Assumes (Standard) + Data_Level |
| royalty | Assumes (Standard) + Royalty |
| compliance_hold | Assumes (Standard) + Compliance_Hold |
| All | Returns all Data Dictionary return data for the fields |
“fields”:”<value>”
| Value | Action |
| Field ids | List of desired field ids Including alias IDs for persons 2-8 fields |
| all | Returns the entire available data dictionary Optional parameter (Alias:true) to return the alias values for persons 2-8 fields |
“aliases”:”value”
| Value | Action |
| True | When used with "fields":"all," it will return all alias values for persons 2-8 |
Cleansing your postal address can improve match rates and enable better communications with your customers. The service is powered by Experian CorrectAddress service.
| Description | Keyword | Note | Validation Rule |
| Address Line 1 | addr1 | Optional | 1 - 30 (truncates after 30) |
| Address Line 2 | addr2 | Optional | 1 - 30 (truncates after 30) |
| Address Line 3 | addr3 | Optional | 1 - 30 (truncates after 30) |
| City | city | Optional | 1 to 40 characters (truncates after 40) |
| State | state | Optional | 2 alphabetic characters |
| ZIP Code | zip | Optional | 4 or 5 numbers (if 4 numbers, then assume a leading zero) |
| Country Code | country | Optional | 3 alphabetic characters Three-letter ISO code (e.g., ‘USA’), currently only accepts USA and if no code is provided system defaults to USA. |
| Party ID | insterPartyID | Required | 4 to 5 numbers |
Standrd Request Message
This is a sample request for the OmniView service product:
insertPartyID=1234&fname=dana&lname=doe&addr1=475%20Anton%20Blvd&city=Costa%20Mesa&state=CA&zip=92626&country=USA
Standard Response Message
The response message contains the results of address verification and standardization processing. The output fields in the response message are:
{
"Hygiene":{
"DPC": "42",
"addr1": "475 ANTON Blvd",
"addr2": "",
"checkDigit": "8",
"city": "COSTA MESA",
"crrt": "C025",
"errcode": "",
"post": "",
"sname": "ANTON ",
"snum": "475",
"spref": "",
"ssuf": "BLVD",
"state": "CA",
"unit": "",
"unitno": "",
"urb": "",
"z4fn": "1",
"zip": "92626",
"zip4": "4348"
},
"transaction_id": 22584974,
"txn_id": "19120315562661601000602813"
}
The Return Code is the integer value returned after the validation process.
| Return Code | Description |
| 1 | Match found; four-digit ZIP add-on assigned. |
| >1 | Multiple possible results, but no exact match made. The number of results is the value of the return code. |
| <0 | Multiple possible results only when error code contains 11; no exact match made. The number of results is the absolute value of the return code. |
| -1 | When error code contains 07, delivery point validation failed; five-digit ZIP returned. |
| -3 | When error code contains 05 - PO Box, Rural Route, or Highway contract; street name normalized though no match found. |
| -99 | No match found, and the original input has been returned. |
Error Codes are descriptors that will provide information about the address provided and what the system did to correct the address or what was wrong with the address.
| Error Code | Description |
| 00 |
The address is Default Highrise or Rural Route. This address matched to a default delivery record in a multi-unit building, or a rural/highway contract record with route number in the street name field.
|
| 01 |
No match in 5-digit ZIP Code; match found in finance number. Input ZIP code was incorrect. Correction applied successfully using city/state information provided. See Appendix B for information on finance numbers.
|
| 02 | ZIP Code add-on not found; replaced with correct add-on. Input +4 code was incorrect. Correction applied successfully. See Appendix B for information on ZIP-Addon codes. |
| 04 | City name corrected. Input city name was incorrect. Correction applied successfully. |
| 05 | PO Box, Rural Route or Highway Contract address standardized. The input address was a box, rural route, or highway contract address in a non-standard form (e.g., P.O.Box, or POBOX). Standardization performed successfully. |
| 06 | Street number is not a precise match in street range; e.g., alphanumeric 10A within numeric range 1-99. The input address contained extra characters in the street number. These characters were retained in the output. |
| 07 | Address non-deliverable; no add-on assigned. Delivery Point Validation (DPV) check failed. |
| 08 | Secondary number is not precise match in secondary range; e.g., alphanumeric 10A within numeric range 1-99. The input address contained extra characters in the secondary number. These characters were retained in the output. |
| 09 | The address is Delivery Point Alternate. See Appendix B for information on Delivery Point Alternate records. |
| 10 | The city is part of multiple counties. More than one county name is listed for the address city name. Preferred county name is returned. |
| 11 | No match; failed CASS multi-component rule; number of results is absolute value of return code. Several problems were found in the input address. Unable to match using CASS logic. The number of near matches returned is equal to the absolute value of the return code. |
| 12 | All highrise records returned; first result is the CASS-certified address; Z's follow last result. Multiple records containing secondary ranges (apartment low – high numbers) returned in the results parameter. End of results is indicated by a string of ten “Z”s (ZZZZZZZZZZ). This error code always appears with error code “00”. |
| 13 | Military address. |
| 14 | Street address with appended apartment number. The input address contained secondary information that could not be resolved through the CASS process. Secondary number was retained in the output. |
| 15 | No match; near matches placed in results field; Z's follow last result. Multiple records containing possible match candidates returned in the results parameter. End of results is indicated by a string of ten “Z”s (ZZZZZZZZZZ). This error code always appears with error code “99”. |
| 16 |
Preferred city name used. Input city name was changed to a preferred city name for this address.
|
| 18 |
DPV False Positive. DPV process stopped, ZIP+4 codes will no longer be assigned until DPV has been reenabled. Each subsequent call will return error code “21”.
|
| 19 | No match; Address found in Early Warning System database. |
| 20 | Street name modified. Input street name was incorrect. Correction applied successfully. |
| 21 | DPV processing has already stopped; please contact IST to restart the module. See error code “18”. |
| 22 | LACSLink processing has already stopped; please contact IST to restart the module. See error code “24”. |
| 23 | No match; no correlation between city and unique ZIP Code; 5-digit ZIP Code deleted. The input record contained a unique ZIP code, the input city did not match the ZIP. According to CASS rules for handling unique ZIP codes, 5-digit ZIP code was deleted. |
| 24 | LACSLink False Positive. LACSlink process stopped, ZIP+4 codes will no longer be assigned until LACSlink has been reenabled. Each subsequent call will return error code “22”. |
| 30 | Foreign address. |
| 31 | Geocoder files missing or corrupt. |
| 40 | Multiple matches; incorrect post-directional. The input address contained an incorrect post-directional abbreviation. Unable to correct automatically. Candidate records returned. |
| 41 | Multiple matches; incorrect pre-directional. The input address contained an incorrect pre-directional abbreviation. Unable to correct automatically. Candidate records returned. |
| 42 | Multiple matches; incorrect street suffix. Input address contained an incorrect street suffix. Unable to correct automatically. Candidate records returned. |
| 43 | ZIP Code is PO Box or Rural Route only. ZIP code contains no street records. Match is made to a PO Box, route, or general delivery record. |
| 44 | Apparent extraneous information removed. Some input information was considered unnecessary and was removed. |
| 45 | Street suffix modified. Input address contained an incorrect street suffix. Correction applied successfully. |
| 46 | Street directional modified. Input address contained an incorrect pre- or post-directional abbreviation. Correction applied successfully. |
| 47 | Address requires apartment/suite number; none provided. Missing secondary number. |
| 48 | Multiple matches; would resolve with pre-directional. Input address contained no pre-directional abbreviation. Unable to correct automatically. Candidate records returned. |
| 49 | Multiple matches; would resolve with post-directional. The input address contained no post-directional abbreviation. Unable to correct automatically. Candidate records returned. See Appendix B for information on post-directionals. |
| 50 | Multiple matches; would resolve with street suffix. Input address contained no street suffix. Unable to correct automatically. Candidate records returned. |
| 51 | Address does not require apartment/suite; none provided. This address matched to a default delivery record in a multi-unit building, or a rural/highway contract record with route number in the street name field. (See error code “00”.) No secondary information was required. |
| 52 | Address does not require apartment/suite; incorrect input. This address matched to a default delivery record in a multi-unit building, or a rural/highway contract record with route number in the street name field. (See error code “00”.) Secondary information was provided, but incorrect. |
| 57 | Address not standardized; not enough information provided. |
| 58 | Address not standardized; invalid ZIP Code. Input ZIP code was incorrect. Unable to standardize address. |
| 59 | Address not standardized; belongs to US territory. Unable to standardize address. State abbreviation indicates that the address belongs to one of the territories. |
| 60 | Expired verification database; DPV/LACSLINK processing disabled. Postal data files expired. Address validation halted. Data expires 105 days after the build date. Build date can be obtained by calling GetBuildDate API function. |
| 61 | House number not on street. Input street number was incorrect. |
| 64 | Data mismatch. Postal data files do not match CorrectAddress library. |
| 65 | Unable to open data file(s). Postal data files are missing or corrupt. |
| 66 | Out of memory. |
| 67 | Trial expired. |
| 68 | Invalid or missing license key. |
| 80 | RDI error: unable to open data files. Residential Delivery Indicator lookup files are missing or corrupt. |
| 81 | RDI error: out of memory. |
Marketers are faced with the problem of "fragmented identity." They have bits and pieces of information about consumers, gathered from disparate sources, that cannot easily be linked to a known, identified individual or enhanced with demographic or behavioral data.
Data must be retained in a permanent repository to make sense of all these different fragments. As the client sends in periodic updates, the hope is that some of the latest information can link together previously unrelated fragments. In simple terms, the repository can "learn." As Experian gains more information and fills in more of the details around an individual, a clearer picture of that individual emerges. Successfully identifying an individual opens the ability to expand a profile with Experian’s demographic, behavioral, and survey data.
The request message keywords supported by OmniView are as follows:
| Description | Keyword | Note | Validation Rule |
| First Name | fname | Optional | 1 to 100 characters (truncates after 100) |
| Middle Name | mname | Optional | 1 to 100 characters (truncates after 100) |
| Last Name | lname | Optional | 1 to 100 characters (truncates after 100) |
| Second Last Name | lname2 | Optional | 1 to 100 characters (truncates after 100) |
| Name Suffix | suffix | Optional | 1 to 15 characters (truncates after 15) |
| Gender | gender | Optional | 1 character M for Male, F or Female (case insensitive) |
| Date of Birth | dob | Optional | 8 numeric YYYYMMDD |
| Address Line 1 | addr1 | Optional | 1 - 30 (truncates after 30) |
| Address Line 2 | addr2 | Optional | 1 - 30 (truncates after 30) |
| Address Line 3 | addr3 | Optional | 1 - 30 (truncates after 30) |
| City | city | Optional | 1 to 40 characters (truncates after 40) |
| State | state | Optional | 2 alphabetic characters |
| ZIP Code | zip | Optional | 4 or 5 numbers (if 4 numbers, then assume a leading zero) |
| Country Code | country | Optional | 3 alphabetic characters Three-letter ISO code (e.g., ‘USA’), currently only accepts USA and if no code is provided system defaults to USA. |
| Email Address | Optional | 50 with '@' and '.' within string | |
| Phone Number | phone | Optional | 10 numbers |
| Party ID | insertPartyID | Required | 4 to 5 numbers |
| Inquiry Mode | inquiryOnly | Optional | inquiryOnly keyword, along with a value of "true" |
Please reference Appendix A for a complete list of API keywords.
Please note that "Party ID" is the only required field to get a valid response. However, to receive a "meaningful" response (that is, a response that contains linkage IDs), you must provide a consumer name and at least one valid addressable channel (such as postal address or email, for example).
Inquiry Mode is a special, optional mode within OmniView that allows you to look for existing matches in the Linkage repository. Inquiry Mode does not perform any merges with existing records or generate new IDs in the case of a non-match to the repository. To use "Inquiry Mode," the request message must contain the "inquiryOnly" keyword, along with a value of "true."
This is a sample request Headers:
This is a sample request for the OmniView service product.
Sample Response Message
{
"address_id": "3747401211502440678",
"household_id": "2435364666769872899",
"individual_id": "3291549116741943296",
"match_code": "",
"response_code": "VG000",
"transaction_id": 21119861,
"txn_id": "15082816092411701000102813"
}
The response message contains the results of OmniView's linkage processing. The output fields in the response message are:
| Description | Keyword |
| Address ID | address_id |
| Household ID | household_id |
| Individual ID | individual_id |
| Matching Party ID | match_code |
| Return Code | response_code |
| Transaction Code | transaction_id |
| Transaction ID | txn_id |
The Address ID is a unique, numeric representation of any addressable channel. "Address ID" is often used interchangeably with "U.S. Postal Address ID," which can be misleading. Technically, a "U.S. Postal Address ID" is a type of "Address ID," but there could be other types of "Address IDs" for other channels.
The Household ID is a unique, numeric representation of a household, defined as a family sharing a last name and either residing at the same postal address or sharing any piece of address data. When a family moves to a new postal address, that family will receive a brand-new Household ID.
The Individual ID is a unique, numeric representation of a person, defined by a collection of name variations and an address across one or more supported channels.
The Matching Party ID field contains the Party ID that the record matched to in the repository. If the record does not match any existing records in the repository, this field is blank.
The Transaction Code is an OmniView system-generated number that uniquely defines each transaction; this field is used for troubleshooting purposes.
The Transaction ID is a system-generated number that uniquely defines each transaction; this field is used for troubleshooting.
The Return Code field indicates what happened during processing or why the input record failed during the linkage process.
Remove customer records from ‘your’ OmniView repository.
The OmniView Opt-out is a separate process from OmniView. It does not count against OmniView volume.
OmniView Opt-out is a service that allows marketers to remove records from their OmniView repository. It does not remove records from the Experian reference data.
Opt-outs are compiled through the API transactions and applied nightly.
Process Walkthrough:
1. OmniView Lookup
2. OmniView Opt-out
3. The system executes the Opt-outs every night
4. Confirm opt-out: OmniView Lookup
OptOut Request Message
Use POST
This is a sample request for the OmniView OptOut "/omniview-optout"
insertPartyID=1234&fname=dana&lname=doe&email=danadoe%40gmail.com&addr1=475%20Anton%20Blvd&city=Costa%20Mesa&state=CA&zip=92626&country=USA
OptOut Response Message
{
"record_id": "[72, 73]",
"records_opted_out": "2",
"response": "Record received, will be opted out in 24 hours",
"transaction_id": 0,
"txn_id": "20021116230442901000102813"
}
Micro Batch allows sending up to 300 records in a single request. The user provides the list of multiple records and a layout preceded by the keyword “layout,” indicating the order of the fields included (fields use the same keywords), a delimiter indicator, and a record identifier.
The record identifier must begin with “rec1” and be numbered sequentially, not skipping numbers.
The response provides a header row indicating the order in which the requested fields are returned. In addition, each record will have the same information provided in a transactional OmniView call.
Microbatch transactions are limited to 300 records in a single request.
Micro Batch must use “raw” as the data option.
Standard Request Message
Header
Body
{
" partyid":"####",
"delimiter":"|",
"layout":"fname|lname|suffix|gender|addr1|addr2|city|state|zip|email|phone",
"rec1":"Bob|Smith|||123 Main St||Anytown|IL|12345||",
"rec2":"|||||||||myemail@email.com|",
"rec3":"Sue|Jones|||456 Elm Rd||Anytown|IL|12345||"
}
Standard Response Message
{
"csv_header": "individual_id,household_id,address_id,match_code,response_code",
"rec1": "2813405268656785415,5471187138245507583,-8439935269078990433,BOTH,VB000",
"rec2": "2813394547933972480,5471187138245507583,-8439935269078990433,BOTH,VB000",
"rec3": "2813394535606913027,-8164884287276253420,4099623137368913659,BOTH,VB000",
"record_count_error": 0,
"record_count_processed": 9,
"transaction_id": 7147711,
"txn_id": "19120908301497001002102813"
}
OmniView Microbatch Inquiry Only
Body
{
" partyid":"####",
"delimiter":"|",
"inquiry_only": "true"
"layout":"fname|lname|suffix|gender|addr1|addr2|city|state|zip|email|phone",
"rec1":"Bob|Smith|||123 Main St||Anytown|IL|12345||",
"rec2":"|||||||||myemail@email.com|",
"rec3":"Sue|Jones|||456 Elm Rd||Anytown|IL|12345||"
}
Standard Response Message
{
"csv_header": "individual_id,household_id,address_id,match_code,response_code",
"rec1": "2813405268656785415,5471187138245507583,-8439935269078990433,BOTH,VB000",
"rec2": "2813394547933972480,5471187138245507583,-8439935269078990433,BOTH,VB000",
"rec3": "2813394535606913027,-8164884287276253420,4099623137368913659,BOTH,VB000",
"record_count_error": 0,
"record_count_processed": 9,
"transaction_id": 7147711,
"txn_id": "19120908301497001002102813"
}
When making requests through OmniView Single Record and Micro Batch, you can include multiple channels, such as postal addresses, emails, and phones, for each record you send. All channels will be considered in the matching process. To include multiple addresses, emails, or phones, add a sequence number to the end of the attribute name. For example, you can add email, email_1, email_2, email_3, and so on. It's important to note that the response format will remain the same.
Single Record Multichannel Request Message
{
"fname": "Avery",
"mname": "",
"lname": "Morgan",
"suffix": "",
"addr1": "100 Example Ave",
"addr2": "",
"city": "Example City",
"state": "CA",
"zip": "90000",
"addr1_1": "200 Sample St",
"addr2_1": "",
"city_1": "Demo Town",
"state_1": "NY",
"zip_1": "10000",
"addr1_2": "300 Fiction Ln",
"addr2_2": "Apt 5F",
"city_2": "Testville",
"state_2": "TX",
"zip_2": "70000",
"email": "avery.morgan@example.com",
"email_1": "a.morgan@example.com",
"email_2": "amorgan@example.org",
"phone": "(202) 555-0101",
"phone_1": "(202) 555-0102",
"phone_2": "(202) 555-0103",
"insertpartyid": "<ClientPartyID>"
}
Micro Batch Multichannel Request Message
{
"partyid": "<ClientPartyID>",
"delimiter": ",",
"layout": "fname,mname,lname,suffix,addr1,addr2,city,state,zip,addr1_1,addr2_1,city_1,state_1,zip_1,addr1_2,addr2_2,city_2,state_2,zip_2,phone,phone_1,phone_2,email,email_1,email_2",
"rec1": "Avery,,Morgan,,100 Example Ave,,Example City,CA,90000,200 Sample St,,Demo Town,NY,10000,300 Fiction Ln,Apt 5F,Testville,TX,70000,(202) 555-0101,(202) 555-0102,(202) 555- 0103,avery.morgan@example.com,a.morgan@example.com,amorgan@example.org"
}
Correct, code, and standardize a postal address, improve customer postal address data, and receive all the benefits of OmniView.
Sample Request Message
This is a sample request for the OmniView service product:
Response Message
The response message contains the results of Address Cleansing and OmniView's linkage processing:
{
"Hygiene":{ Address Coding and Standardization response
"DPC": "42",
"addr1": "475 ANTON Blvd",
"addr2": "",
"checkDigit": "8",
"city": "COSTA MESA",
"crrt": "C025",
"errcode": "",
"post": "",
"sname": "ANTON ",
"snum": "475",
"spref": "",
"ssuf": "BLVD",
"state": "CA",
"unit": "",
"unitno": "",
"urb": "",
"z4fn": "1",
"zip": "92626",
"zip4": "4348"
},
"RETURN_CODE": "VB000", OmniView response
"address_id": "-14567713844710505",
"household_id": "945747049608938167",
"individual_id": "-4943021943975156851",
"match_code": "BOTH",
"transaction_id": 22584974,
"txn_id": "19120315562661601000602813"
}
The Return Code is the integer value returned after the validation process.
See return codes in the “Address Cleansing and Standardization” section.
Error Codes are descriptors that will provide information about the address provided and what the system did to correct the address or what was wrong with the address.
See return codes in the “Address Cleansing and Standardization” section.
Validate batch automation model options.
Authentication URL: https://us-api.experian.com/oauth2/v1/token
Service URL: https://us-api.experian.com/marketing-services/targeting/v1/msvalidate?
Standard Request Message
This is a sample request for the Process Model Validation service product.
partyId=<number>&modelName=M#######&stsFolder=<folderTargetingTestFolder
Standard Response Message
A Positive return
{"validate":true}}
A Negative return
{"validate":false}
This section outlines the usage of the Combined API for Universal Enrichment, featuring Reverse Append and Hygiene. It includes sample requests, responses, field definitions, and further information for a successful integration.
Authentication URL: https://us-api.experian.com/oauth2/v1/token
Endpoints
The production endpoint URL of the Experian Services API is:
https://us-api.experian.com/marketing-services/targeting/v1/[Api Name]
| API Name | Method | Endpoint URL | Description |
| Universal Enrichment with Reverse Append and Hygiene | POST | {HOSTNAME}/ue-ov | Single Transaction: Identity resolution, address coding, and standardization for postal addresses. |
| Universal Enrichment with Reverse Append and Hygiene Microbatch | POST | {HOSTNAME}/ue-ov-microbatch | Handles 1-300 records in a single batch transaction. |
Input erich Fields
When using this API, specify the requested enrichment fields in the erich element of the request.
Erich Request Example:
"erich": "29770,10789"
Erich Response Examples:
If a match is found for the provided erich value, the response will indicate a successful lookup:
"data_lookup_results": {
"29770": "Y",
"10789": "John"
}
If no match is found, the response will return an empty object for the corresponding erich value:
"data_lookup_results": {
"29770": {},
"10789": {}
}
Sample Combined Microbatch Request
{
"insertpartyid": "1234",
"delimiter": ",",
"erich": "10799,3413,10796,10789,10795,11385,11387,10361,10157,10161,10114,10581,10579",
"layout": "fullname,fname,mname,lname,addr1,addr2,city,state,zip,phone,email,md5email",
"rec1": "AVERY MORGAN,,,,,,,,90000,,,",
"rec2": ",,,,,,,,,,,9ccc719de921cfef3a6ff1a43fa00181"
}
Request Fields
| Field | Description | Required |
| insertpartyid | Specifies the client's Party ID created during onboarding | Yes |
| delimiter | Defines the delimiter for the input records, e.g., ",". | Yes |
| layout | Specifies the header for the CSV input format. | Yes |
| rec[n] | Input data rows, aligned with the fields specified in the layout. | Yes |
| erich | Indicates the enrichment types for the data. Comma-seprated list of enrichment field IDs. | Yes |
Sample Combined Microbatch Response
{
"csv_header": "FlowControl_Return_Code,25038,27195,27196,27197,10799,9010799,3413,9003413,10796,9010796,10789,9010789,10795,9010795,11385,9011385,11387,9011387,10361,9010361,10157,9010157,10161,9010161,10114,9010114,10581,9010581,10579,9010579,hy_z4fn,hy_errcode,hy_MatchLevel,hy_addr1,hy_addr2,hy_city,hy_state,hy_zip,hy_zip4,zip11,hy_pre_directional,hy_street_number,hy_street_name,hy_street_suffix,hy_post_directional,hy_unit,hy_unit_number,hy_dpc,hy_check_digit,hy_crrt,hy_urb,pinning_individual_id,pinning_household_id,pinning_address_id,pinning_matchReturnType,pinning_Return_Code",
"rec1": "FC000,TA100PC,TA100,P,C,2025550104,PA,2025550105,LV,MS,PA,AVERY,PA,,,MORGAN,PA,,,100 EXAMPLE AVE,AD,,,EXAMPLE CITY,Z9,CA,AD,90000,Z9,0001,Z9,1,,1,100 EXAMPLE AVE,,EXAMPLE CITY,CA,90000,0001,90000000100,,100,EXAMPLE,AVE,,,,00,0,R000,,3000000000000101,2000000000000101,1000000000000101,,VG000",
"rec2": "FC000,FE001PE,FE001,P,E,2025550106,PA,2025550107,LV,MS,PA,JAMIE,PA,Q,PA,SAMPLE,PA,,,200 DEMO RD,AD,,,EXAMPLE CITY,Z9,CA,AD,90000,Z9,0002,Z9,1,,1,200 DEMO RD,,EXAMPLE CITY,CA,90000,0002,90000000200,,200,DEMO,RD,,,,00,0,R000,,3000000000000102,2000000000000102,1000000000000102,,VG000",
"record_count_error": 0,
"record_count_input": 2,
"record_count_output": 2,
"record_count_processed": 2,
"transaction_id": 16878099
}
Response Fields
| Field | Description |
| csv_header | Header row of the returned CSV. |
| rec[n] | Processed output data rows corresponding to the layout fields |
| record_count_error | Count of records with errors during processing |
| record_count_input | Total number of input records |
| record_count_output | Total number of successfully processed records |
| record_count_processed | Total records processed |
| transaction_id | Unique identifier for the API transaction |
Sample Combined Single Transaction Request
{
"insertpartyid": "1234",
"erich": "10799,3413,10796,10789,10795,11385,11387,10361,10157,10161,10114,10581,10579",
"fname": "",
"mname": "",
"lname": "",
"prefix": "",
"suffix": "",
"addr1": "",
"addr2": "",
"city": "",
"state": "",
"zip": "",
"md5email": "2ad40c0d9a866eed7076030292e78124",
"sha1email": "",
"sha256email": "",
"md5phone": "",
"sha1phone": "",
"sha256phone": ""
}
Request Fields
The following fields are included in the Sample Combined Microbatch Request:
| Field Names | Description | Required |
| `insertpartyid` | The client's Party ID created during onboarding. | Yes |
| `erich` | A comma-separated list of codes identifying specific records. | Yes |
| `fname` | First name of the individual. | No |
| `mname` | Middle name of the individual. | No |
| `lname` | Last name of the individual. | No |
| `prefix` | Name prefix (e.g., Mr., Dr., etc.). | No |
| `suffix` | Name suffix (e.g., Jr., Sr., etc.). | No |
| `addr1` | Primary address line. | No |
| `addr2` | Secondary address line. | No |
| `city` | City name. | No |
| `state` | State code (e.g., CA, NY). | No |
| `zip` | ZIP code. | No |
| `md5email` | Email address hashed using the MD5 algorithm. | No |
| `sha1email` | Email address hashed using the SHA-1 algorithm. | No |
| `sha256email` | Email address hashed using the SHA-256 algorithm. | No |
| `md5phone` | Phone number hashed using the MD5 algorithm. | No |
| `sha1phone` | Phone number hashed using the SHA-1 algorithm. | No |
| `sha256phone` | Phone number hashed using the SHA-256 algorithm. | No |
Sample Combined Single Transaction Response
{
"FlowControl_Return_Code": "FC000",
"data_lookup_results": {
"10161": "EXAMPLE CITY",
"10361": "300 FICTION LN",
"10581": "90000",
"10789": "CASEY",
"10799": "2025550110",
"10579": "0003",
"3413": "2025550111",
"11385": "RIVERA",
"11387": "III",
"10796": {},
"10114": "CA",
"10795": "E",
"10157": {}
},
"hygiene_results": {
"hy_zip11": "90000000300",
"hy_street_name": "FICTION",
"hy_dpc": "00",
"hy_z4fn": "1",
"hy_unit": "",
"hy_pre_directional": "",
"hy_post_directional": "",
"hy_MatchLevel": "1",
"hy_state": "CA",
"hy_check_digit": "0",
"hy_city": "EXAMPLE CITY",
"hy_crrt": "C001",
"hy_errcode": "",
"hy_street_number": "300",
"hy_zip4": "0003",
"hy_street_suffix": "LN",
"hy_urb": "",
"hy_addr3": "",
"hy_addr1": "300 FICTION LN",
"hy_addr2": "",
"hy_zip": "90000",
"hy_unit_number": ""
},
"pinning_results": {
"pinning_Return_Code": "VG000",
"pinning_household_id": "2000000000000000301",
"pinning_address_id": "1000000000000000301",
"pinning_individual_id": "3000000000000000301",
"pinning_matchReturnType": ""
},
"transaction_id": 16892228,
"ue_results": {
"27197": "E",
"27195": "FE001",
"Records Processed": "valid",
"27196": "P",
"25038": "FE001PE"
}
}
Response Fields
FlowControl Fields
| Field Name | Type | Description |
| 'FlowControl_Return_Code' | String | Indicates the overall status of the request. |
Data Lookup Results
| Field Name | Type | Description |
| Various enrichment fields (e.g., `10161`, `10361`) |
String | Represents matched data for the corresponding input record. Possible values: "EXAMPLE CITY", "300 FICTION LN", etc. – indicates the enrichment data {} – indicates that a match wasn’t found and enrichment information is available |
Hygiene Results
| Field Name | Type | Description |
| `hy_zip11` | String | Full ZIP+4 code and carrier route. |
| `hy_state` | String | State code. |
| `hy_city` | String | City name. |
| `hy_addr1` | String | Cleaned and standardized primary address line. |
| `hy_MatchLevel | String | Level of address match (e.g., exact, partial). |
Pinning Results
| Field Name | Type | Description |
| `pinning_Return_Code` | String | Status of the pinning operation. |
| `pinning_household_id` | String | Unique identifier for the household. |
| `pinning_address_id` | String | Unique identifier for the address. |
| `pinning_individual_id` | String | Unique identifier for the individual. |
UE Results
| Field Name | Type | Description |
| `Records Processed` | String | Indicates if the record is valid. |
| Various codes (e.g., `27197`, `27196`) | String | Represents specific processing outcomes for the input records. |
Transaction Metadata
| Field Name | Type | Description |
| `transaction_id` | Integer | Unique identifier for the transaction. |
The two required keywords are:
Request Keywords
| Description | Keyword | Required? | UE/OV | Notes |
| Inquiry Mode | inquiryOnly | N | OV | inquiryOnly keyword, along with a value of "true" |
| Party ID | insertPartyID | Y | UE/OV | |
| Requested Enrichment Fields | erich | Y | UE | Indicates the enrichment types for the data. Comma-separated list of enrichment field IDs. |
| Restrict appended data by state | restrict_erich | N | UE | Field IDs to restrict; used together with restrict_state. Works with or without a postal address on input. |
| State restriction value | restrict_state | N | UE | State code(s) for which restricted fields return no data; pairs with restrict_erich. |
| No Tables | notables | N | UE/OV | Default: false When including this keyword, followed by “true”, the table name where each value was appended from is NOT returned. Note: the default is “false” meaning the table names are returned. |
| First Name | fname | N | UE/OV | |
| Middle Name | mname | N | UE/OV | |
| Last Name | lname | N | UE/OV | |
| Second Last Name | lname2 | N | UE/OV | |
| Name Prefix | prefix | N | UE/OV | |
| Name Suffix | suffix | N | UE/OV | |
| Full Name | fullname | N | UE/OV | |
| Gender | gender | N | UE/OV | 1 character, M for Male, F or Female (case insensitive) |
| Date of Birth | dob | N | UE/OV | 8 numeric YYYYMMDD |
| Data append for household persons 2–8 | adult_# (adult_2 … adult_8) | N | UE | Field-ID list, same as erich (which must also be used for person 1). Adults must be in order without skipping. Response maps to field ID + (adult # × 100,000,000). |
| Address Line 1 | addr1 | N | UE/OV | |
| Address Line 2 | addr2 | N | UE/OV | |
| Address Line 3 | addr3 | N | UE/OV | |
| City | city | N | UE/OV | |
| State | state | N | UE/OV | |
| ZIP Code | zip | N | UE/OV | |
| Zip+4 | zip4 | N | UE/OV | |
| Country Code | country | N | UE/OV | |
| Multichannel: additional addresses | addr1_#, addr2_#, addr3_#, city_#, state_#, zip_#, zip_4#, country_# | N | UE/OV | OmniView Single Record & Micro Batch multichannel requests: append a sequence number (_1, _2, _3 …) to include multiple addresses. |
| Email Address | N | UE/OV | ||
| Multichannel: additional emails | email_# | N | UE/OV | Multichannel sequence-number pattern (email, email_1, email_2 …) |
| MD5 Email | md5email | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| SHA1 Email | sha1email | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| SHA256 Email | sha256email | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| Phone Number | phone | N | UE/OV | |
| Multichannel: additional phones | phone_# | N | UE/OV | Multichannel sequence-number pattern (email, email_1, email_2 …) |
| MD5 Phone | md5phone | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| SHA1 Phone | sha1phone | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| SHA256 Phone | sha256phone | N | UE/OV | Also supports multichannel (_1, _2, ...) |
| Email/Phone Threshold | ep_threshold | N | UE | Default: coverage Other values: balanced, accuracy coverage = accept all matches; balanced = all name+email/phone matches plus email/phone-only matches with a single matching individual; accuracy = name+email/phone matches only |
| Mobile Ad ID | maid | N | UE | |
| Internet Protocol address | ip | N | UE | |
| IP Address Type | ip_type | N | UE | IPV4 or IPV6 Default: IPV4 |
| IP Hash Type | ip_hash | N | UE | Raw, MD5, SHA1, SHA256 Default: Raw |
| Address Append | address_append | N | UE | Y or N |
| Digital Precision | digital_precisions | N | UE | Default: 1:many 1:1 returns the first entity only 1:many can return multiple `maid_entity_N` objects |
| Append Head of Household | append_hoh | N | UE | Default: Household Other values: Individual, Address individual = append Person 1 on individual-level matches only; household (default) = append Person 1 on person and household matches; address = append Person 1 on person, household, and address matches |
| Use New Household | use_new_household | N | OV | Return persistent household ID |
| Pin All Records | pin_all_records | N | OV | Creates consistent pins for error records or no match records |
| MAID Score threshold | maid_threshold | N* | UE | Default: `coverage` Other values: balanced, accuracy *Required for MAID processing coverage = all results; balanced = PID/LUID associations with MAID Accuracy Score ≥ 0.2; accuracy = ≥ 0.4 |
| MAID: MD5 Hash | md5maid | N | UE | |
| MAID: SHA1 Hash | sha1maid | N | UE | |
| MAID: SHA256 Hash | sha2maid | N | UE | |
| MAID: SHA256 Hash | sha256maid | N | UE | |
| IP Threshold | ip_threshold | N* | UE | Default: `coverage` Other values: balanced, accuracy coverage = all results; balanced = LUID associations with IP Accuracy Score ≥ 0.2; accuracy = ≥ 0.4 |
| IP: MD5 Hash | md5ip | N | UE | |
| IP: SHA1 Hash | sha1ip | N | UE | |
| IP: SHA256 Hash | sha2ip | N | UE | |
| IP: SHA256 Hash | sha256ip | N | UE | |
| Match Level | match_level | N | UE | Default: ALL Other values: PERSON, HOUSEHOLD, ADDRESS Restricts matching to the level; does not change the level of data appended. HOUSEHOLD includes Person; ADDRESS includes Person and Household |
| Address Capture Threshold | ac_threshold | N | UE | Default: `coverage` Other values: balanced, accuracy, precision |
| Search radius around input zip | zip_radius | N | UE | Miles. Default: -1 (skip Trade Area) |
| Mirco-batch: Delimiter | delimiter | N* | UE/OV | *Required for Micro Batch only – represents delimiter used to separate fields in array |
| Mirco-batch: Layout | layout | N* | UE/OV | *Required and used for Micro Batch only – represents the order of the fields within each request record |
| Mirco-batch: Record ID | rec$ | N* | UE/OV | *Required and used for Micro Batch only – represents the record id where # = unique number. Must begin at 1 (rec1) and number continuously. Skipping a number will result in records not being processed. |
| Person ID | pid | N | UE | |
| Living Unit ID | luid | N | UE | |
| Encrypted Person ID | encrypted_pid | N | UE | |
| Encrypted Living Unit ID | encrypted_luid | N | UE | |
| Account Number | acct | N | UE | |
| Carry Input | carryinput | N | UE/OV | true or false. Default: false Used for microbatch. Returns original record with requested fields on output. |
| Name Return | name_return | N | UE | Default: "All". Values: All, InitialOnly. "InitialOnly" appends name fields (10789, 10794, 11387) only when the input first initial matches the appended first name; otherwise, they return blank. |
| Special ConsumerView Multi Address | cvmulti | N | Special ConsumerView multi-address system parameter |
Thresholds normalize as follows:
| Threshold | Normalized Value | Description |
| coverage | 0.0 | No filtering is applied. All Address Capture and Trade Area matches are accepted. |
| balanced | 0.2 | The appended zip code must match only if the input record lacks a postal address (blank Address 1 and Address 2 fields). |
| accuracy | 0.4 | The appended record's zip code must match the input zip code (or trade area zip codes) for all Address Capture and Trade Area matches. |
| precision | 0.6 | Only the highest-confidence Address Capture and Trade Area matches are accepted; lower-confidence match tiers are filtered out. |
Thresholds normalize as follows:
| Threshold | Normalized Value | Description |
| coverage | 0.0 | Least restrictive. Returns MAID/IP matches at the lowest accepted score level. |
| balanced | 0.2 | Applies a moderate score cutoff and filters out the lowest-confidence MAID/IP matches. |
| accuracy | 0.4 | Applies a higher score cutoff and returns stronger MAID/IP matches. |
Thresholds normalize as follows:
| Threshold | Normalized Value | Description |
| coverage | 0.0 | Least restrictive. Accepts all matches. |
| balanced | 0.2 | Accepts all name plus email/phone matches, and email/phone matches if there is only one corresponding individual. |
| accuracy | 0.4 | Accepts only name plus email/phone matches. |
| Code | Name | Description |
| 200 | OK | See response body |
| 202 | Field Request Error | Data Append Error. The field requested is not on your list of contracted fields. If you would like to purchase this field, please contact your sales representative. |
| 302 | Unable to authenticate response | Automated Password – Static IP not on file |
| 401 | Unable to authenticate | Unable to authenticate username / password |
| 400 | Bad Request | Request was malformed, Error in json input |
| 401 | Invalid Party ID or Service for Login | Login is not authorized to use this Party ID or invalid security Token. |
| 403 | Token Generation Error | There was a problem generating the token, please validate your client id and secret and username and password. Ensure all calls are being sent from the known list of static IPs |
| 404 | Not Found | Match failed. Match details available in JSON response body |
| 405 | Method Not Allowed | For an Enrichment request, this error indicates that the request message contains a marketing element that the client is not authorized to use. |
| 500/501 | Internal Server Error | System malfunction, Experian is automatically notified of these. |
| 503 | Service Unavailable | The service is intentionally down for maintenance. |
A positive response will contain data from the request (Real-Time only), a Universal Enrichment Match Code (Field ID 25038 for Batch), and for every enrichment element in addition to data, it provides the level the associated field data was appended.
Note: Real-Time and Batch always provide the Data Append level. For Micro Batch, there is the option to exclude.
Missing or Invalid User Credentials
If the Experian Services API request message is missing your user credentials, or if those credentials are invalid, then Experian's Single Sign On (SSO) authentication system will reject the request message. In this scenario, you will receive a response message containing a status of "401" (see Appendix A for a list of all status values).
Missing or Invalid Party ID
If the Party ID is missing from the Experian Services API request message or the Party ID value is invalid, then the API cannot process the request. In this scenario, the response message will contain a status of "401" (see Appendix B for a list of status values).
Invalid User Credentials / Party ID / Service
The combination of your user credentials, Party ID, and the requested service (the "product model" component of the URL) must be valid. Your credentials must be associated with the Party ID, and the Party ID must be associated with the requested service. If the combination of these three elements is invalid, then the API cannot process the request. In this scenario, the response message will contain a status of "401" (see Appendix B for a list of status values).
Invalid Enrichment Request
If using the Enrichment service, you must have a contractual agreement with Experian. This agreement governs your access to specific marketing elements. If your request message contains a marketing element you do not have access to, then the API cannot process the request. In this scenario, the response message will contain a status of "405" (see Appendix B for a list of status values).
Compliance Approval Required Fields Response
Some Enrichment elements are governed by Compliance and require additional agreements in addition to the standard contract. If your request message contains a compliance-governed marketing element and you do not have authorization for it, you will get the following response:
Sample code is available for the following program languages:
This section contains sample C# code that can be used to construct and send a message to the Experian Services API service.
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class ExperianService
{
private readonly HttpClient _httpClient;
public ExperianService(HttpClient httpClient)
{
_httpClient = httpClient ?? throw new ArgumentNullException(nameof(httpClient));
_httpClient.BaseAddress = new Uri("https://us-api.experian.com");
_httpClient.DefaultRequestHeaders.Add("Host", "us-api.experian.com");
_httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json");
}
public async Task<string> GetAccessTokenAsync()
{
var tokenRequest = new
{
username = "tester1@experian.com",
password = "yourpassword",
client_id = "your client_id",
client_secret = "your client_secret"
};
var json = JsonConvert.SerializeObject(tokenRequest);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync("/oauth2/v1/token", content);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
var token = JsonConvert.DeserializeObject<Tokens>(responseContent);
return "Bearer " + token.access_token;
}
public async Task<HttpResponseMessage> PostDataAsync(string token)
{
var requestData = new
{
insertpartyid = "YOUR PARTY ID",
erich = "319",
fname = "DANA",
lname = "CONSUMER",
addr1 = "123 MAIN ST",
city = "WEST NEWBURY",
state = "MA",
zip = "01985",
phone = "8125553456"
};
var json = JsonConvert.SerializeObject(requestData);
var content = new StringContent(json, Encoding.UTF8, "application/json");
_httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
return await _httpClient.PostAsync("/marketing-services/targeting/v1/universal-enrichment", content);
}
}
// Usage example:
public async Task UseExperianService()
{
var httpClient = new HttpClient();
var experianService = new ExperianService(httpClient);
var token = await experianService.GetAccessTokenAsync();
var response = await experianService.PostDataAsync(token);
// Process the response as needed
if (response.IsSuccessStatusCode)
{
// Successful response handling
var responseData = await response.Content.ReadAsStringAsync();
// Process responseData
}
else
{
// Handle unsuccessful response
Console.WriteLine($"Error: {response.StatusCode}");
}
}
This section contains sample Java code that can be used to construct and send a message to the Experian Services API service.
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.nio.charset.StandardCharsets;
import com.google.gson.Gson;
public class ExperianService {
private final HttpClient httpClient;
public ExperianService() {
this.httpClient = HttpClient.newBuilder().build();
}
public String getAccessToken() throws Exception {
String url = "https://us-api.experian.com/oauth2/v1/token";
String requestBody = "{\"username\": \"tester1@experian.com\", \"password\": \"yourpassword\", \"client_id\": \"your client_id\", \"client_secret\": \"your client_secret\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Host", "us-api.experian.com")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
Gson gson = new Gson();
Tokens tokens = gson.fromJson(response.body(), Tokens.class);
return "Bearer " + tokens.getAccessToken();
} else {
throw new Exception("Failed to retrieve access token. Status code: " + response.statusCode());
}
}
public HttpResponse<String> postData(String token) throws Exception {
String url = "https://us-api.experian.com/marketing-services/targeting/v1/universal-enrichment";
String requestBody = "{\"insertpartyid\":\"YOUR PARTY ID\",\"erich\":\"319\",\"fname\":\"DANA\",\"lname\":\"CONSUMER\",\"addr1\":\"123 MAIN ST\",\"city\":\"WEST NEWBURY\",\"state\":\"MA\",\"zip\":\"01985\",\"phone\":\"8125553456\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", token)
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
return httpClient.send(request, HttpResponse.BodyHandlers.ofString());
}
public static void main(String[] args) {
try {
ExperianService experianService = new ExperianService();
String token = experianService.getAccessToken();
HttpResponse<String> response = experianService.postData(token);
if (response.statusCode() == 200) {
// Process the successful response
String responseBody = response.body();
System.out.println("Response: " + responseBody);
} else {
// Handle unsuccessful response
System.out.println("Failed to post data. Status code: " + response.statusCode());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Tokens {
private String access_token;
public String getAccessToken() {
return access_token;
}
}
This section contains sample Python code that can be used to construct and send a message to the Experian Services API service.
import requests
import json
class ExperianService:
def __init__(self):
self.base_url = "https://us-api.experian.com"
def get_access_token(self):
url = f"{self.base_url}/oauth2/v1/token"
payload = {
"username": "tester1@experian.com",
"password": "yourpassword",
"client_id": "your client_id",
"client_secret": "your client_secret"
}
headers = {
"Host": "us-api.experian.com",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
token = response.json().get("access_token")
return f"Bearer {token}" if token else None
def post_data(self, token):
url = f"{self.base_url}/marketing-services/targeting/v1/universal-enrichment"
payload = {
"insertpartyid": "YOUR PARTY ID",
"erich": "319",
"fname": "DANA",
"lname": "CONSUMER",
"addr1": "123 MAIN ST",
"city": "WEST NEWBURY",
"state": "MA",
"zip": "01985",
"phone": "8125553456"
}
headers = {
"Content-Type": "application/json",
"Authorization": token
}
response = requests.post(url, headers=headers, json=payload)
return response
def main():
experian_service = ExperianService()
try:
token = experian_service.get_access_token()
if token:
response = experian_service.post_data(token)
if response.status_code == 200:
# Process the successful response
print("Response:", response.json())
else:
# Handle unsuccessful response
print(f"Failed to post data. Status code: {response.status_code}")
else:
print("Failed to obtain access token.")
except requests.RequestException as e:
print("Request Error:", e)
if __name__ == "__main__":
main()
This section contains sample Python code that can be used to construct and send an Opt-Out request to the Experian Services API service.
import requests
import json
class ExperianService:
def __init__(self, access_token, okta_username):
self.base_url = "https://us-api.experian.com/marketing-services/targeting/v1"
self.access_token = access_token
self.okta_username = okta_username
def omniview_optout(self, party_id, first_name, last_name, email, address, city, state, zip_code, country):
url = f"{self.base_url}/omniview-optout/"
payload = {
"insertpartyid": party_id,
"fname": first_name,
"lname": last_name,
"email": email,
"addr1": address,
"city": city,
"state": state,
"zip": zip_code,
"country": country
}
headers = {
'Authorization': f"Bearer {self.access_token}",
'Content-Type': 'application/json',
'CT-REMOTE-USER': self.okta_username
}
response = requests.post(url, data=json.dumps(payload), headers=headers)
return response.json() if response.ok else f"Request failed with status code {response.status_code}"
# Example usage:
def main():
access_token = "<Your Access Token>"
okta_username = "<Your Okta Username>"
experian_service = ExperianService(access_token, okta_username)
# Replace <Your PartyID>, <INFO>, etc. with actual data
response = experian_service.omniview_optout(
"<Your PartyID>",
"<INFO>",
"<INFO>",
"<INFO>",
"<INFO>",
"<INFO>",
"<INFO>",
"<INFO>",
"<INFO>"
)
print(response) # View the response
if __name__ == "__main__":
main()
This section contains sample PHP code that can be used to construct and send a message to the Experian Services API service.
class ExperianService {
private $base_url = "https://us-api.experian.com";
public function getAccessToken() {
$url = $this->base_url . "/oauth2/v1/token";
$data = array(
"username" => "tester1@experian.com",
"password" => "yourpassword",
"client_id" => "your client_id",
"client_secret" => "your client_secret"
);
$headers = array(
"Host: us-api.experian.com",
"Content-Type: application/json"
);