> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://documentation.sayari.com/api/api-reference/project-entity/get-project-entity/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://documentation.sayari.com/_mcp/server. # Get Project Entity GET https://api.sayari.com/v1/projects/{project_id}/entities/{project_entity_id} Retrieves a specific entity in a project. Reference: https://documentation.sayari.com/api/api-reference/project-entity/get-project-entity ## Authentication - OAuth2 — send the obtained token as `Authorization: Bearer ` ## Servers - `https://api.sayari.com` (Production, default) - `https://api.internal.sayari.com` (Dev) - `https://api.uk.sayari.com` (Production_UK) ## Request ### Path parameters - `project_id` (string, required) - `project_entity_id` (string, required) ## Response ### 200 - `data` (ProjectEntityResponse, required) ## Errors ### 400 Bad Request - `any` ### 401 Unauthorized - `any` ### 404 Not Found - `status` (integer, required) - `message` (list of string, required) - `success` (boolean, required) ### 405 Method Not Allowed - `status` (integer, required) - `message` (list of string, required) - `success` (boolean, required) ### 429 Rate Limit Exceeded - `any` ### 500 Internal Server Error - `any` ## Types ### ProjectEntityResponse - `project_entity_id` (string, required) - `project_id` (string, required) - `label` (string, required) - `upload_ids` (list of string, required) - `strength` (enum, required) - Allowed values: `strong`, `partial`, `no_match`, `manual` - `created_at` (string, required) - `attributes` (map from string to AttributeValues, required) - `countries` (list of string, required) - `risk_categories` (list of ProjectRiskCategory, required) - `risk_factors` (list of ProjectRiskFactor, required) - `upstream` (UpstreamInfo, required) - `tags` (list of TagResponse, required) - `matches` (list of ProjectEntityMatchResponse, required) - `case` (CaseInfo, optional) - `updated_at` (string, optional) - `updated_by` (string, optional) ### AttributeValues - `match_resolution` (boolean, required) - `values` (list of string, required) ### ProjectRiskCategory - `id` (string, required) - `label` (string, required) - `risk_factors` (list of string, required) ### ProjectRiskFactor - `id` (string, required) ### UpstreamInfo - `risk_factors` (list of ProjectRiskFactor, required) - `countries` (list of string, required) - `trade_counts` (TradeCounts, required) - `has_upstream` (boolean, required) - `products` (list of string, required) - `risk_counts` (map from string to map from string to list of ProductCount, optional) - `country_counts` (map from string to map from string to list of ProductCount, optional) ### TagResponse - `id` (string, required) - `label` (string, required) - `created_at` (string, required) - `updated_at` (string, optional) ### ProjectEntityMatchResponse - `match_id` (string, required) - `sayari_entity_id` (string, required) - `type` (string, required) - `label` (string, required) - `countries` (list of string, required) - `risk_categories` (list of ProjectRiskCategory, required) - `risk_factors` (list of ProjectRiskFactor, required) - `business_purpose` (list of BusinessPurpose, required) - `upstream` (UpstreamInfo, required) - `sources` (list of SourceField, required) - `addresses` (list of Address, required) - `hs_codes` (list of string, required) - `created_at` (string, required) - `updated_at` (string, optional) - `match_profile` (enum, optional) - Allowed values: `corporate`, `suppliers`, `screen`, `search` - `deleted_at` (string, optional) - `match_explanation` (list of ProjectEntityMatchExplanation, optional) ### CaseInfo - `id` (string, required) - `status` (enum, required) - Allowed values: `not_assigned`, `in_review`, `approved`, `rejected` - `created_at` (string, required) - `comment` (string, optional) ### TradeCounts - `receiver_of` (integer, required) - `shipper_of` (integer, required) ### ProductCount - `count` (integer, required) - `product` (string, optional) ### BusinessPurpose - `code` (string, required) - `standard` (string, required) ### SourceField - `id` (string, required) - `label` (string, required) ### Address - `value` (string, required) - `country` (string, optional) - `city` (string, optional) - `state` (string, optional) - `location` (Location, optional) ### ProjectEntityMatchExplanation - `field` (string, required) - `quality` (enum, required) — Quality of the match - Allowed values: `high`, `medium`, `low`, `na` - `description` (list of string, optional) - `matches` (list of string, optional) ### Location - `lat` (double, required) - `lon` (double, required) ## Examples **Response** ```json { "data": { "project_entity_id": "project_entity_id", "project_id": "project_id", "label": "label", "upload_ids": [ "upload_ids", "upload_ids" ], "strength": "strong", "created_at": "created_at", "attributes": { "attributes": { "match_resolution": true, "values": [ "values", "values" ] } }, "countries": [ "countries", "countries" ], "risk_categories": [ { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] }, { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] } ], "risk_factors": [ { "id": "id" }, { "id": "id" } ], "upstream": { "risk_factors": [ { "id": "id" }, { "id": "id" } ], "countries": [ "countries", "countries" ], "trade_counts": { "receiver_of": 1, "shipper_of": 1 }, "has_upstream": true, "products": [ "products", "products" ], "risk_counts": { "risk_counts": { "risk_counts": [ { "count": 1, "product": "product" }, { "count": 1, "product": "product" } ] } }, "country_counts": { "country_counts": { "country_counts": [ { "count": 1, "product": "product" }, { "count": 1, "product": "product" } ] } } }, "tags": [ { "id": "id", "label": "label", "created_at": "created_at", "updated_at": "updated_at" }, { "id": "id", "label": "label", "created_at": "created_at", "updated_at": "updated_at" } ], "matches": [ { "match_id": "match_id", "sayari_entity_id": "sayari_entity_id", "type": "type", "label": "label", "countries": [ "countries", "countries" ], "risk_categories": [ { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] }, { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] } ], "risk_factors": [ { "id": "id" }, { "id": "id" } ], "business_purpose": [ { "code": "code", "standard": "standard" }, { "code": "code", "standard": "standard" } ], "upstream": { "risk_factors": [ { "id": "id" }, { "id": "id" } ], "countries": [ "countries", "countries" ], "trade_counts": { "receiver_of": 1, "shipper_of": 1 }, "has_upstream": true, "products": [ "products", "products" ], "risk_counts": { "risk_counts": { "risk_counts": [ { "count": 1 }, { "count": 1 } ] } }, "country_counts": { "country_counts": { "country_counts": [ { "count": 1 }, { "count": 1 } ] } } }, "sources": [ { "id": "id", "label": "label" }, { "id": "id", "label": "label" } ], "addresses": [ { "value": "value", "country": "country", "city": "city", "state": "state", "location": { "lat": 1.1, "lon": 1.1 } }, { "value": "value", "country": "country", "city": "city", "state": "state", "location": { "lat": 1.1, "lon": 1.1 } } ], "hs_codes": [ "hs_codes", "hs_codes" ], "created_at": "created_at", "updated_at": "updated_at", "match_profile": "corporate", "deleted_at": "deleted_at", "match_explanation": [ { "field": "field", "quality": "high", "description": [ "description", "description" ], "matches": [ "matches", "matches" ] }, { "field": "field", "quality": "high", "description": [ "description", "description" ], "matches": [ "matches", "matches" ] } ] }, { "match_id": "match_id", "sayari_entity_id": "sayari_entity_id", "type": "type", "label": "label", "countries": [ "countries", "countries" ], "risk_categories": [ { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] }, { "id": "id", "label": "label", "risk_factors": [ "risk_factors", "risk_factors" ] } ], "risk_factors": [ { "id": "id" }, { "id": "id" } ], "business_purpose": [ { "code": "code", "standard": "standard" }, { "code": "code", "standard": "standard" } ], "upstream": { "risk_factors": [ { "id": "id" }, { "id": "id" } ], "countries": [ "countries", "countries" ], "trade_counts": { "receiver_of": 1, "shipper_of": 1 }, "has_upstream": true, "products": [ "products", "products" ], "risk_counts": { "risk_counts": { "risk_counts": [ { "count": 1 }, { "count": 1 } ] } }, "country_counts": { "country_counts": { "country_counts": [ { "count": 1 }, { "count": 1 } ] } } }, "sources": [ { "id": "id", "label": "label" }, { "id": "id", "label": "label" } ], "addresses": [ { "value": "value", "country": "country", "city": "city", "state": "state", "location": { "lat": 1.1, "lon": 1.1 } }, { "value": "value", "country": "country", "city": "city", "state": "state", "location": { "lat": 1.1, "lon": 1.1 } } ], "hs_codes": [ "hs_codes", "hs_codes" ], "created_at": "created_at", "updated_at": "updated_at", "match_profile": "corporate", "deleted_at": "deleted_at", "match_explanation": [ { "field": "field", "quality": "high", "description": [ "description", "description" ], "matches": [ "matches", "matches" ] }, { "field": "field", "quality": "high", "description": [ "description", "description" ], "matches": [ "matches", "matches" ] } ] } ], "case": { "id": "id", "status": "not_assigned", "created_at": "created_at", "comment": "comment" }, "updated_at": "updated_at", "updated_by": "updated_by" } } ``` **SDK Code** ```python import requests url = "https://api.sayari.com/v1/projects/project_id/entities/project_entity_id" headers = {"Authorization": "."} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.sayari.com/v1/projects/project_id/entities/project_entity_id'; const options = {method: 'GET', headers: {Authorization: '.'}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.sayari.com/v1/projects/project_id/entities/project_entity_id" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", ".") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.sayari.com/v1/projects/project_id/entities/project_entity_id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = '.' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.sayari.com/v1/projects/project_id/entities/project_entity_id") .header("Authorization", ".") .asString(); ``` ```php request('GET', 'https://api.sayari.com/v1/projects/project_id/entities/project_entity_id', [ 'headers' => [ 'Authorization' => '.', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.sayari.com/v1/projects/project_id/entities/project_entity_id"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "."); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "."] let request = NSMutableURLRequest(url: NSURL(string: "https://api.sayari.com/v1/projects/project_id/entities/project_entity_id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```