Enterprise API v2

Search API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/beans
Authentication
The Beans Search API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

You may also pass another optional header to track responses at your end. This is handy when your service makes asynchronous requests to the API and you want to tie the response back to your original request.

Tracking-Id: <client request tracking identifer>
Query Parameters
Parameter Required? Values
address Yes Full street address (line 1, city, state zip)
unit No Unit number of address (line 2)
origin No Latitude,Longitude pair of the end user's current location
mode No Either of DRIVER_DELIVERS or COSTUMER_OUTSIDE or EMS
Other headers
Parameter Values
format JSON, PROTO, or GOOGLE. GOOGLE return the response in the format same as the Google Geocoding API.
X-Beansai-Include-Notes-And-Markers Boolean. Include notes and markers in the response.
X-Beansai-Include-Points-Of-Interest Boolean. Include points of interest.
X-Beansai-Include-Generated-Route Boolean. Include indoor generated path.
Example Request
$ curl -X GET \
  'https://api2.beans.ai/enterprise/v2/search/beans?address=2255%20Showers%20Dr,%20Mountain%20View,%20CA&unit=352' \
  -H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
The response for a search request is a list of routes, with the first route as the primary route, and others following if any alternatives exist. It also contains a Beans generated query id for audit purposes, and the optional tracking id that may have been provided by the client in the request headers.

When there are no matches, the field routes would either be omitted or be an empty list.

There may be some extra fields in the objects below that are not documented. We advise that your response parsers ignore such fields.

Response Object Type Required? Description
routes Array No Route object
queryId String Yes Beans generated query id
pointsOfInterest Array No PointOfInterest object
trackingId String No Client provided optional tracking id
PointOfInterest Object
Each PointOfInterest object represents a contextual object around the Routes. For example, building footprints, facilities.
PointOfInterest Object Type Required? Description
type String Yes One of FACILITIES, UNIT, BUILDING, ENTRANCE, STAIR, ELEVATOR, or PARKING.
name String No Any descriptive name given to this point of interest
footprint.point Array No Array of LatLng objects describing the polygon for point of interest
Route Object
Each route consists of a sequence of ordered fragments, one for each part of the route. It also consists of other the points of interest along the route, such as parking meters, society entrances, and other visual indicators that may be benefical to the end user.
Route Object Type Required? Description
fragments Array Yes Fragment Object
pointsOfInterest Array No Point Object (note: this is of different type from the top level PointOfInterest)
origin LatLng Object Yes Specifies the origin of the route. This is the first point to which an end user must navigate to before moving to locations provided in the fragments objects.
destination Location Object Yes Specifies the terminal point of the route. This is the location at which the delivey is most likely to take place. For the mode DRIVER_DELIVERS, for instance, this will often be the exact unit location. However, when we know from the building policy, for example, that the delivery must be to the doorman, the destination may be the location of the reception. For the mode CUSTOMER_OUTSIDE, the destination is often a location on the street where the driver can safely pull over without getting a traffic ticket. For the mode EMS, this will always be the exact unit location, if available. However, when exact unit location is not available, the destination will indicate the nearest known location to the unit.
Fragment Object
Each fragment consists of an origin and a destination, each of which is an important waypoint when navigating. The fragment also captures whether the path from the origin to destination is drivable or only accessible on foot.
Fragment Object Type Required? Description
origin Point Object Yes Specifies the starting waypoint of the fragment
destination Point Object Yes Specifies the terminal waypoint of the fragment
type String Yes One of DRIVING, WALKING, or UNKNOWN.
Point Object
A point object is a semantic waypoint that specifies a checkpoint for the end user. It primarily consists of three parts -- the location of the waypoint, its type, and occasionally a payload which provides more detailed information about the waypoint.
Point Object Type Required? Description
location LatLng Object Yes Specifies the coordinates of the waypoint.
type String Yes Specifies the semantic type of the waypoint. Although the API returns a vanilla string, the waypoints can be further grouped semantically. Our current set of waypoints is described below.
data Data Object Yes Consists of a payload that gives more descriptive data for the waypoint.
Point Object Types
Entrances Description
ENTRANCE The primary entrance of a building.
Elevators and Stairs Description
ELEVATOR An elevator inside the building.
STAIR A staircase inside the building.
Parkings Description
PARKING A parking spot close to the entrance.
Terminals Description
UNIT The destination unit for the queried address, if the delivery terminates at the unit.
LOBBY One of the lobbies of the building, and often the one with a doorman, security, or the leasing agent.
LOCKER One of the available food or storage lockers in the building.
STOP_POINT A point outside the building where the driver can pull over safely without getting a ticket. A stop point is only returned if the request mode is CUSTOMER_OUTSIDE.
Location Object
A location object captures both the coordinates of a given location as well as its legal address.
Location Object Type Required? Description
address String No Full street address (line 1, city, state zip).
unit String No Unit number of address (line 2).
location LatLng Object Yes Specifies the coordinates of the location.
LatLng Object
A latlng object captures the coordinates of a given location.
LatLng Object Type Required? Description
latitude double Yes Latitude of the location to maximum precision.
longitude double Yes Longitude of the location to maximum precision.
Data Object
Each route point has more details attached to in terms of a data object. It captures string descriptions, security codes, and other descriptors.
Data Object Type Required? Description
text String Yes Text description of the route point.
code String No The access code, if required and available for this way point.
floor Integer No The floor of the waypoint, if known and not zero.
shape.point Array No Array of LatLng objects describing the polygon for this route point.
unitData
entranceData
stopPointData
Variable JSON Object No Consists of a payload that gives more variable instructions which be different for different waypoints. Currently, we support payloads for parkings, entrances, and terminal waypoints.
Variable JSON Data Objects
A data object is the payload associated with a given point object.
Entrances Type Required? Description
entranceData.realm String No Specifies the physical space this entrance will lead to. One of BUILDING, COMMUNITY, GARAGE, ELEVATOR, STAIR, OFFICE, WAREHOUSE, LOADING_DOCK, PARKING, or UNKNOWN_REALM
entranceData.modalities Array No An array of strings that specifies the mode through which one is expected to go through the entrance; takes values from DRIVING, WALKING, BIKING, or FLYING
entranceData.instructions Array No EntranceInstruction Object
entranceData.entranceTimes Array No EntranceTime Object
entranceData.parkingInstruction String No Specifies the best parking type associated with this address. One of DESIGNATED_PARKING, PUBLIC_PARKING, NO_PARKING
entranceData.bestModesOfTransport Array No An array of strings that specifies the bets possible delivery modes of transport to this address. Possible values are CAR, MOTORCYCLE, BIKE, BIKE_SCOOTER, FOOT
entranceData.easeOfParking Integer No Specifies an integer value for ease of parking for that address and/or unit. values will be between 1 and 5 (1 being most accessible and 5 being most difficult to find parking)
entranceData.easeOfDelivery Boolean No Specifies an integer value for ease of delivery for that address and/or unit. values will be between 1 and 5 (1 being easy and 5 being most difficult)
entranceData.accessToUnit Boolean No Specifies if the personnel will be allowed to go to the unit. If set to true, there may be additional fragments on the route that take the personnel to the elevator and then the unit.
entranceData.notes String No Freeform notes specific to this entrance.
Parkings Type Required? Description
stopPointData.type String No Type of the parking. One of NO_PARKING, NO_STOP, PARKING_AVAILABLE, PARKING_CAR, PARKING_GARAGE, PARKING_METERED, PARKING_METERED_CAR, PARKING_METERED_MOTORCYCLE, PARKING_MOTORCYCLE, PARKING_PRIVATE, PARKING_PUBLIC, PARKING_TRUCK, RESERVED_PARKING, STOP_CAR, STOP_TRUCK, or UNKNOWN_STOP_POINT
EntranceInstruction Object
Each entrance instruction consists of a type.
EntranceInstruction Object Type Required? Description
type String Yes The type of this instruction. One of BUZZER, SECURITY_CODE, WALK_IN, KNOCK_ON_DOOR, CALL_CUSTOMER_LET_IN, OPEN_PARKING, SCAN_GATE, FRONT_DESK, DROP_OFF, or UNKNOWN_INSTRUCTION.
EntranceTime Object
Each entrance may consist of effective time windows. We pick the best one for you based on the request time.
EntranceTime Object Type Required? Description
dayOfWeek String No The day of week when this entrance time is applicable.
start String No Time of day in HH:mm format in the local timezone that specifies when this entrance opens. If missing, the entrance is accessible 24/7.
end String No Time of day in HH:mm format in the local timezone that specifies when this entrance closes. If missing, the entrance is accessible 24/7.
Example Response without Policy
Policies are seldom applicable for properties in garden-style settings, such as suburban apartment complexes. Such responses, therefore, consist of a more predictable sequence of steps the personnel needs to take to complete the job.
Example Response with Policy
Policies are often applicable for properties in downtowns, such as offices or high-rise buildings. Such responses, therefore, are more nimble and change based on the policy. For example, if the personnel are not allowed to go beyond the front desk, a route may end at the front desk and the location of the unit may never be required.

Reverse Geocoding API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/geocode
Authentication
The Beans Reverse Geocoding API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
latlng String Yes comma separated latitude, longitude values (WGS84)
elevation Double No Elevation data (Z-Axis). height in meters
distance Integer No maximum distance in meters to specify search radius (Default: 20)
maxResults Integer No max address results to return (ordered by closest distance first)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/search/geocode?latlng=41.875373,-87.6279018&distance=20' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of one more civic location addresses (see Unit object) along with unit level information if available. Response will be an ordered list with the closest matching address to distance (lat, lng) and followed by elevation (z-axis) match if available.
Unit Object
Unit consists of address info with secondary unit information along with additional data which is described in UnitData object
Unit Object Type Required? Description
address String Yes Address info for the specific unit. P.S: this could be different that the society address
unit String Yes Secondary Unit designation and number. e.g. Apt 101
building String Yes Building number or label if available
location LatLng Object Yes Accurate location info of the unit
distance Double Yes Specifies the distance from the request latlng in meters
unitData UnitData Object Yes Additional info of the unit
UnitData Object
UnitData consists of additional useful about the unit including floor and the access to the unit (elevator, stair, parking) etc
UnitData Object Type Required? Description
floor String No Floor of the unit if applicable
hasElevator Boolean No indicates if the building has an elevator
hasStair Boolean No indicates if the building has stairs
hasParking Boolean No indicates if the building has parking
The response for the above address autocomplete sample request is below

Address Autocomplete API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/auto-complete
Authentication
The Beans Address Verifier API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
address String Yes Part of street address that needs completing
center String No lat,lng (for example, 37.40694497143785,-122.108284)
searchRadius double No distance from center in meters (for example, 10000 meters)
country String No ISO3-Country code (Default: USA)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/search/auto-complete?address=299+West+W' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of one more autocomplete items, each repesenting a potential completion of the address. The response for the above address autocomplete sample request is below

Address Unitcomplete API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/unit-complete
Authentication
The Beans Address Unitcomplete API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
address String Yes Full street address (line 1, city, state zip)
unit String Yes Part of unit address that needs completing
country String No ISO3-Country code (Default: USA)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/search/unit-complete?address=299+West+Washington+Ave%20+Sunnyvale%20+CA&unit=31' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of one more unitcomplete items, each repesenting a potential variation of the address. Each unitcomplete item further contains a list of units that match the specified unit prefix. The response for the above address unitcomplete sample request is below

Feedback API v2

Request

Base Url
POST https://api.beans.ai/enterprise/v2/search/feedback
Authentication
The Beans Feedback API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Body
Request Object Type? Required? Values
address String Yes Full street address (line 1, city, state zip)
unit String No Unit number of address (line 2)
geo Double,Double No Latitude,Longitude pair of the end user's current location
action String No Either of DELIVERY or PICKUP or DROPOFF
actionAt Long No Epoch timestamp of when the action was performed
notes String No General notes from drivers or other personnel
precision Integer No Accuracy (in meters)
Example Request
$ curl -X POST \
'https://api2.beans.ai/enterprise/v2/search/feedback/XRf4aGQA3TYEVRjzdz2wOYLzd-moymlOzPqn_3cyWqj' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
The response for a feedback request is a standard http response code.

Address Verifier API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/verify/address
Authentication
The Beans Address Verifier API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
address String Yes Full street address (line 1, city, state zip)
unit String No Unit number of address (line 2)
country String No ISO3-Country code (Default: USA)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/verify/address?address=299+West+Washington+Ave%20+Sunnyvale%20+CA&unit=' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of one more address items, each repesenting a potential variation of the address. If only one item with zero or one unit is returned, then the address is not ambiguous. The response for the above Address verifier sample request is below

POI Lookup API v2

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/poi
Authentication
The Beans POI Lookup API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
topLeft Double,Double Yes Latitude,Longitude pair of the top left (NW) corner of the area to be searched
bottomRight Double,Double Yes Latitude,Longitude pair of the bottom right (SE) corner of the area to be searched
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/search/poi?topLeft=37.412859,-122.086259&bottomRight=37.347142,-121.99' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of one more point of interest items, each repesenting a potential point of interest.

Address Classification(RBDI) API

Request

Base Url
GET https://api.beans.ai/enterprise/v2/search/rbdi
Authentication
The Beans Address Verifier API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
address String Yes Full street address (line 1, city, state zip)
unit String No Unit number of address (line 2)
country String No ISO3-Country code (Default: USA)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/search/rbdi?address=299+West+Washington+Ave%20+Sunnyvale%20+CA&unit=' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of an address and its primary, secondary and an optional tertiary classification. Primary classification indicates whether the provided address is Residential, Business or mixed. Secondary classification indicates MDU-Apartments, Condos, Mobile homes, colleges, shopping malls, hospitals, etc. Tertiary classification indicates high-rise, mid-rise, garden-style etc. The response for the above Address classification sample request is below

Address Type Identifier API

Request

Base Url
GET https://api.beans.ai/enterprise/v2/address/type
Authentication
The Beans Address Type Identifier API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
address String Yes Full street address (line 1, city, state zip)
country String No ISO3-Country code (Default: USA)
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/address/type?address=299+West+Washington+Ave%20+Sunnyvale%20+CA&country=USA' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will indicate the type of the request address, primarily if its residential and if its a MDU. The response for the above Address Type sample request is below

Published Data API

Request

Base Url
GET https://api.beans.ai/enterprise/v2/published/{contractID}
Authentication
The Beans Published Data API uses a standard authorization header to authenticate client requests. You must sign in and create an enterprise account here to get your key before you access the API. If you use an unauthorized key or do not provide one, you will get a NOT_ALLOWED response.
Once you have your key and secret available, you are required to specify them in the Authorization header of all your requests, as below, where a2V5OnNlY3JldA== is the base64 encoding of the string "key:secret". For more information, see wiki:Basic access authentication

Authorization: Basic a2V5OnNlY3JldA==

Request Parameters
Request Parameters Type? Required? Values
updatedAfter String No Date in yyyy-MM-dd format to get the data published after a specific date
Example Request
$ curl -X GET \
'https://api2.beans.ai/enterprise/v2/published/{data.client:yyyy:n}' \
-H 'Authorization: Basic a2V5OnNlY3JldA=='

Response

Response Object
Response will consist of an array of data objects published for the specified contract.