Before you start using the API, we have a few guidelines that we'd like to tell you about. We encourage you to read the full API Terms of Use, but here are the bullet points:
Protected REST endpoints can be access by making HTTP requests with the access token for a given user. The ID.me server will validate the access token to ensure it has not expired and that its scope covers the requested resource.
After receiving a successful verification response from the API, you should apply business logic to unlock the benefit you are offering to the end user. From a user experience perspective, it is recommended that you store the verified status in the user's session to keep the experience consistent in case the page is refreshed, the back button is pressed, etc. By hiding or disabling the button that inititiates the API call, you can prevent duplicate calls being made.
If you're writing an AJAX application, require a JSONP response, and would like to wrap our response with a callback, all you have to do is specify a callback parameter with the API call.
URI | Type |
---|---|
https://api.id.me/api/public/v3/attributes.json
?access_token=ACCESS_TOKEN |
JSON |
https://api.id.me/api/public/v3/attributes.json
?access_token=ACCESS_TOKEN &callback=callbackFunction |
JSONP |
GET
application/json
The response from ID.me's REST API attributes endpoint is returned in JSON format.
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Zoraida" }, { "handle": "lname", "name": "Last Name", "value": "Conn" }, { "handle": "email", "name": "Email", "value": "zoraida.conn@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "12920-0180" }, { "handle": "military_branch", "name": "Military Branch", "value": "Navy" }, { "handle": "military_service_component", "name": "Military Service Component", "value": "active" }, { "handle": "military_service_started", "name": "Military Service Started", "value": "2018-02-18" }, { "handle": "military_service_ended", "name": "Military Service Ended", "value": "1998-02-18" } ], "status": [ { "group": "military", "subgroups": [ "Service Member" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Clarence" }, { "handle": "lname", "name": "Last Name", "value": "Roob" }, { "handle": "email", "name": "Email", "value": "clarence.roob@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "35083-9077" }, { "handle": "military_branch", "name": "Military Branch", "value": "Army" }, { "handle": "military_service_component", "name": "Military Service Component", "value": "natguard" }, { "handle": "military_service_started", "name": "Military Service Started", "value": "2018-02-18" }, { "handle": "military_service_ended", "name": "Military Service Ended", "value": "2014-02-18" } ], "status": [ { "group": "military", "subgroups": [ "Veteran" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Aron" }, { "handle": "lname", "name": "Last Name", "value": "Mills" }, { "handle": "email", "name": "Email", "value": "aron.mills@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "46669" }, { "handle": "military_branch", "name": "Military Branch", "value": "Army" }, { "handle": "military_service_component", "name": "Military Service Component", "value": "active" }, { "handle": "military_service_started", "name": "Military Service Started", "value": "2018-02-18" }, { "handle": "military_service_ended", "name": "Military Service Ended", "value": "1998-02-18" } ], "status": [ { "group": "military", "subgroups": [ "Retiree" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Lane" }, { "handle": "lname", "name": "Last Name", "value": "Monahan" }, { "handle": "email", "name": "Email", "value": "lane.monahan@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "94758" }, { "handle": "military_member_branch", "name": "Military Member Branch", "value": "Navy" }, { "handle": "military_member_service_component", "name": "Military Member Service Component", "value": "active" }, { "handle": "military_member_service_started", "name": "Military Member Service Started", "value": "2018-02-18" }, { "handle": "military_member_service_ended", "name": "Military Member Service Ended", "value": "1998-02-18" } ], "status": [ { "group": "military", "subgroups": [ "Military Spouse" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Shaunte" }, { "handle": "lname", "name": "Last Name", "value": "Schmitt" }, { "handle": "email", "name": "Email", "value": "shaunte.schmitt@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "04665" }, { "handle": "military_member_branch", "name": "Military Member Branch", "value": "Marine Corps" }, { "handle": "military_member_service_component", "name": "Military Member Service Component", "value": "reserve" }, { "handle": "military_member_service_started", "name": "Military Member Service Started", "value": "2018-02-18" }, { "handle": "military_member_service_ended", "name": "Military Member Service Ended", "value": "1998-02-18" } ], "status": [ { "group": "military", "subgroups": [ "Military Family" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Nickolas" }, { "handle": "lname", "name": "Last Name", "value": "Runolfsdottir" }, { "handle": "email", "name": "Email", "value": "nickolas.runolfsdottir@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "68209-7748" }, { "handle": "canada_military_branch", "name": "Canadian Military Branch", "value": "Information Management Group" } ], "status": [ { "group": "military_canada", "subgroups": [ "Service Member for Canada" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Federico" }, { "handle": "lname", "name": "Last Name", "value": "Terry" }, { "handle": "email", "name": "Email", "value": "federico.terry@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "31708" }, { "handle": "canada_military_branch", "name": "Canadian Military Branch", "value": "Canadian Rangers" } ], "status": [ { "group": "military_canada", "subgroups": [ "Veteran for Canada" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Kelly" }, { "handle": "lname", "name": "Last Name", "value": "Ebert" }, { "handle": "email", "name": "Email", "value": "kelly.ebert@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "00300" }, { "handle": "canada_military_branch", "name": "Canadian Military Branch", "value": "Royal Canadian Navy" } ], "status": [ { "group": "military_canada", "subgroups": [ "Retiree for Canada" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Shavonda" }, { "handle": "lname", "name": "Last Name", "value": "Gorczany" }, { "handle": "email", "name": "Email", "value": "shavonda.gorczany@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "62921-6725" }, { "handle": "government_department", "name": "Government Department", "value": "Department of the Treasury" } ], "status": [ { "group": "government", "subgroups": [ "State" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Florida" }, { "handle": "lname", "name": "Last Name", "value": "Rippin" }, { "handle": "email", "name": "Email", "value": "florida.rippin@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "96431" }, { "handle": "government_department", "name": "Government Department", "value": "Department of the Treasury" } ], "status": [ { "group": "government", "subgroups": [ "Local" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Trisha" }, { "handle": "lname", "name": "Last Name", "value": "Kohler" }, { "handle": "email", "name": "Email", "value": "trisha.kohler@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "11069-7143" }, { "handle": "student_school_name", "name": "Student School Name", "value": "Grimes Institute" }, { "handle": "student_anticipated_graduation_date", "name": "Student Anticipated Graduation Date", "value": "2020-02-18" }, { "handle": "student_enrollment_status", "name": "Student Enrollment Status", "value": "Y" }, { "handle": "student_school_type", "name": "Student School Type", "value": "Less than 2 YR" } ], "status": [ { "group": "student", "subgroups": [ null ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Jacqualine" }, { "handle": "lname", "name": "Last Name", "value": "Jast" }, { "handle": "email", "name": "Email", "value": "jacqualine.jast@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "25366-3502" }, { "handle": "teacher_school", "name": "Teacher School", "value": "Thomas Jefferson High School" }, { "handle": "teacher_district", "name": "Teacher District", "value": "Fairfax County" }, { "handle": "teacher_state", "name": "Teacher State", "value": "VA" } ], "status": [ { "group": "teacher", "subgroups": [ null ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Karol" }, { "handle": "lname", "name": "Last Name", "value": "Emard" }, { "handle": "email", "name": "Email", "value": "karol.emard@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "38048" } ], "status": [ { "group": "responder", "subgroups": [ "Police Officer" ], "verified": true } ] }
{ "attributes": [ { "handle": "fname", "name": "First Name", "value": "Maria" }, { "handle": "lname", "name": "Last Name", "value": "Goyette" }, { "handle": "email", "name": "Email", "value": "maria.goyette@id.me" }, { "handle": "uuid", "name": "Unique Identifier", "value": "d733a89e2e634f04ac2fe66c97f71612" }, { "handle": "zip", "name": "Zip Code", "value": "66322" } ], "status": [ { "group": "responder_canada", "subgroups": [ "Police Officer for Canada" ], "verified": true } ] }
The JSON response contains the verification status and attributes for the user. The specific attributes returned depend on your application configuration and needs.
Attributes | ||
Handle | Name | Value Description |
---|---|---|
uuid |
Unique Identifier |
ID randomly generated and unique to user |
fname |
First Name |
First name set by user |
lname |
Last Name |
Last name set by user |
|
Unique email set by user |
|
zip |
Zip Code |
Zip code set by user |
These are typical response values. The data passed back depends on your application configuration. |
Status | |
group |
Troop ID -
Government ID -
Responder ID -
Student ID -
Alumni ID -
Teacher ID -
Employee ID -
|
subgroups |
Troop ID -
Government ID -
Responder ID -
Student ID -
Alumni ID -
Teacher ID -
Employee ID -
|
verified |
|
Transactions | |
Transactional data can be passed back in the JSON response as well. If you are interested in learning more about the value of transactional data and how to add this data to the JSON response, please contact us. |
If the user denies the access request or if the request is invalid, the client will be informed using the following parameters appended to the redirect uri:
Name | Description |
---|---|
error |
A single error code as described below. |
error_description |
A human-readable text providing additional information, used to assist in the understanding and resolution of the error occurred. |
error_uri |
A URI identifying a human-readable web page with information about the error, used to provide the end-user with additional information about the error. |
Code | Description |
---|---|
invalid_request |
The request is missing a required parameter, includes an unsupported parameter or parameter value, or is otherwise malformed. |
invalid_client |
The client identifier provided is invalid. |
unauthorized_client |
The client is not authorized to use the requested response type. |
redirect_uri_mismatch |
The redirection URI provided does not match a pre-registered value. |
access_denied |
The end-user or authorization server denied the request. |
unsupported_response_type |
The requested response type is not supported by the authorization server. |
invalid_scope |
The requested scope is invalid, unknown, or malformed. |
Once you have retreived the user’s attributes it is recommended that you store them in the user’s session to keep the experience consistent in case the page is refreshed, the back button is pressed, etc.
Storing key attributes about the user is vital to a seamless group verification experience. It is recommended to store these attributes in a seperate table within your database with some relation to the user record.
Handle | Name | Description |
---|---|---|
uuid | Unique Identifer | Unique identifier that is randomly generated and unique to user. |
Unique email set by the user. | ||
fname | First Name | First name set by user. |
lname | Last Name | Last name set by user. |