{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"9b53fca1-0578-4596-97ba-14daa47e54da","name":"Sterling API - V1","description":"The Sterling API allows you to integrate background checks into your platform and manage the process from end-to-end.\n\nUsing the Sterling API, you can build applications that:\n\n* Initiate background checks on participants in an online marketplace.\n* Create trusted end users, which enables members in your marketplace to screen other members in your marketplace.\n* Schedule recurring screenings to proactively monitor changes in a candidate's status over time.\n* Receive real-time updates for the screenings you initiate.\n\nGetting Started\n===============\n\nAccess to the Sterling API can be requested from our [Developer Signup page](https://api.sterlingtalentsolutions.com/developers/developer-sign-up/). Once you receive your Client ID and Client Secret, here are the steps that API users typically follow to consume the Sterling APIs and perform end-to-end testing on your own.\n\n* Step 1: [Get Authentication](#authentication)\n    * Once you send an auth request with your Client ID and Client Secret, the response will contain an access token which can be used to send other requests to the API.\n\n* Step 2: [GET /packages](#68d6db52-0d8e-4e0d-8636-870087defe39)\n    * Retrieve a list of the packages available to you (a package is a group of screening products). The response will also specify which fields are required on a candidate in order to process the associated screening.\n\n* Step 3: [POST /candidates](#86ffcfa1-a703-4819-9d90-da0c1e8b1a8a)\n    * Create a candidate. Minimum fields for creation are (first name, last name, email, and clientReferenceId). Further fields will likely be needed to initiate a screening on the candidate. The required fields can be identified via GET /packages.\n\n* Step 4: [POST /screenings](#9f0d3200-3091-4fd4-9487-80aad5028e20)\n    * You will need a candidateId and packageId in order to create a screening. You have three workflow option for creating a screening. \n        * Send the candidate an email invite. \n        * Receive a link to a form which you can either open within your app or on a new tab. \n        * If all required candidate fields already exist, simply initiate the screening. Additionally, you can specify a Callback URI in this request, which will allow you to receive real-time updates for the screenings you initiate.\n\n* Step 5: Process screenings using the [Developer Portal](#dev-portal)\n    * Credentials to log into the Dev Portal are the same as your Client ID and Client Secret. The Dev Portal will allow you to manually set results for your screenings for end-to-end testing.\n\n* Step 6: [Verify callbacks](#callbacks)\n    * In a POST /screenings request, you can set a Callback URI so that you can receive real-time updates for that screening.\n\n**Required Fields & Data Collection**\n\n> **Note**: You’ll want to consider the required candidate fields so that you can design your application to collect the pertinent information.\n>\n> **Invite Feature**: If you don't want to collect all of the required candidate information then the alternative is to have Sterling handle the data collection. To use this feature, set the attribute `invite.method` to `\"email\"` to send the candidate an email, or set `invite.method` to `\"link\"` to receive the form URL within the API response when you call `POST /screenings`.\n\n**Going Live**\n\n> When going live, be sure to switch your host endpoint to the production environment. This will also require you to obtain [authentication](#authentication) credentials for that environment.\n\n| Environment | Endpoint |\n| :---------- | :------- |\n| **Integration** | https://api.us.int.sterlingcheck.app/v1 |\n| **Production** | https://api.us.sterlingcheck.app/v1 |\n \nAuthentication\n==============\n\n<h2>Overview</h2>\n\nThe Sterling API uses OAuth2 for authorization and authentication.\n\nRequests to the Sterling API must be authenticated using short-lived *bearer token* in the `Authorization` header. Applications will obtain bearer tokens via the oauth endpoint:\n\n| Environment | Endpoint |\n| :---------- | :------- |\n| **Integration** | https://api.us.int.sterlingcheck.app/oauth/token |\n| **Production** | https://api.us.sterlingcheck.app/oauth/token |\n\n**cURL**\n\n```\ncurl -X POST -H \"Authorization: Basic <basic auth token>\" \\\n-H 'Content-Type: application/x-www-form-urlencoded' \\\n-d 'grant_type=client_credentials' \\\nhttps://api.us.int.sterlingcheck.app/oauth/token\n```\n\nWhen making a request to the oauth endpoint, the basic auth credentials must be a base64 encoded string in the format `client_id:client_secret`. These credentials are not provided through the API and must be obtained through [Sterling](http://api.sterlingtalentsolutions.com/#signup).\n\n**Base64**\n\n>The base64 encoded string for the credentials will remain unchanged unless your client_secret is changed at your request. \n>\n>For instance, `example@example.com:86753O9` will always encode as `ZXhhbXBsZUBleGFtcGxlLmNvbTo4Njc1M085`.\n\nIf the provided credentials are valid, the oauth endpoint will provide a bearer token, along with an expiry time for the token (in seconds). An access_token will expire after 10 hours.\n\n**JSON**\n\n```\n{\n  \"access_token\": \"RG8gcGVvcGxlIHJlYWxseSBkZWNvZGUgdGhlc2U/IEkgbWVhbiBzZXJpb3VzbHksIHRoaXMgaXMganVzdCBhIHRlc3QgaGFzaCEgV2VsbCwgaWYgeW91IG1hZGUgaXQgdGhpcyBmYXIsIGFsbG93IG1lIHRvIHJld2FyZCB5b3U6DQoNCmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9ZFF3NHc5V2dYY1E=\",\n  \"token_type\": \"bearer\",\n  \"expires_in\": 36000\n}\n```\n\nThis token should be cached until it expires, and must be passed in the `Authorization` header of each request as follows:\n\n**cURL**\n\n```\ncurl -H \"Authorization: Bearer RG8gcGVvcGxlIHJlYWxseSBkZWNvZGUgdGhlc2U/IEkgbWVhbiBzZXJpb3VzbHksIHRoaXMgaXMganVzdCBhIHRlc3QgaGFzaCEgV2VsbCwgaWYgeW91IG1hZGUgaXQgdGhpcyBmYXIsIGFsbG93IG1lIHRvIHJld2FyZCB5b3U6DQoNCmh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9ZFF3NHc5V2dYY1E=\" \\\n-H \"Accept: application/json\" \\ \nhttps://api.us.int.sterlingcheck.app/v1/candidates/7212643\n```\n\n**500 Errors**\n\n>If you receive a 500 error on any API call using an Authorization header, please check that the format is \"Bearer [base64]\".\n\nDeveloper Portal\n==========\n\nSterling provides a [Developer Portal](https://developer.sterlingcheck.app/login) to facilitate testing integrations and ensure all potential workflows are taken into account. Within the Dev Portal you can see all of your submitted screenings, as well as change their statuses.\n\n> The Dev Portal's functionality is specific to Sterling's **test environment**. You can log in with your client ID and secret once we have provisioned a test account and provided those credentials to you.\n\n![Developer Portal](http://api.sterlingtalentsolutions.com/wp-content/uploads/2020/02/dev-portal.png)\n\nCallbacks\n=========\n\nBackground screenings involve gathering information from a variety of public and proprietary records, and as a result the response times for screenings can be unpredictable. As an API user, you can receive notifications when important events related to your screening occur. To receive update notifications, include a `callback` when creating a screening or subscription.\n\n<h2>Callback Types</h2>\n\nThe callback `type` field supports future extensibility. At present, all callbacks are of the `screening` type.\n\nAdditional callback types may be introduced in the future. These new callback types will follow the same pattern as existing callbacks: the callback url will be specified in the `POST` request for the resource. This means that you are free to create one callback handling service exclusively for screenings and other services for each other callback type.\n\nAlternatively, clients may implement a single general-purpose callback handler for all Sterling API callbacks. In that situation, the callback handler can use the `type` field to identify the message type and ensure that the intended parsing or business rules are applied only to the expected message types.\n\n**Retries**\n\n>Callbacks will retry every 15 minutes until an HTTP 200 success response is returned from your server. The retries will attempt 9 more times after the original (for a total of 10 attempts).\n\n<br/>\n\n*Screening Callbacks*\n\nThe most common callback `type` will be a screening, as it is the object that will receive the most changes over time. A sample JSON payload for a screening callback can be seen below.\n\n**JSON**\n\n```\n{\n  \"type\": \"screening\",\n  \"payload\": {\n    \"id\": \"001000063194810\",\n    \"packageId\": \"101337\",\n    \"candidateId\": \"8675309\",\n    \"status\": \"complete\",\n    \"result\": \"alert\",\n    \"reportItems\": [\n      {\n        \"id\": \"62113371\",\n        \"type\": \"Multi-State Instant Criminal Check\",\n        \"status\": \"complete\",\n        \"result\": \"no data\",\n        \"updatedAt\": \"2016-07-08T21:42:46Z\"\n      },\n      {\n        \"id\": \"62113372\",\n        \"type\": \"Nationwide Sex Offender Registry Check\",\n        \"status\": \"complete\",\n        \"result\": \"alert\",\n        \"updatedAt\": \"2016-07-08T21:42:46Z\"\n      }\n    ],\n    \"submittedAt\": \"2017-04-26T20:41:27Z\",\n    \"updatedAt\": \"2017-04-26T20:42:16Z\",\n    \"dispute\": {\n      \"status\": \"active\",\n      \"createdAt\": \"2017-04-26T20:41:27Z\"\n    },\n    \"links\": {\n      \"admin\": {\n        \"web\": \"https://integration.talentwise.com/screening/report.php?ApplicantID=63194810\",\n        \"pdf\": \"https://integration.talentwise.com/screening/pdf-report.php?ApplicantID=63194810\"\n      }\n    },\n    \"adverseActions\": [\n      {\n        \"id\": \"001000063194810\",\n        \"status\": \"awaiting-dispute\",\n        \"updatedAt\": \"2017-04-26T20:41:27Z\",\n        \"reportItemIds\": [\n          \"62113372\"\n        ]\n      }\n    ]\n  }\n}\n```\n\n<br/>\n\n*Callback Statuses*\n\nEvery screening callback will have a `status` property in its payload. The value of `status` will change depending on the status of each item in `reportItems`.\n\n<br/>\n\n*Package(Payload) Statuses*\n\n| Status | Description |\n| :----- | :---------- |\n| new | A new report was created. |\n| complete | All report items are set to complete within the package. |\n| pending | At least 1 report item within this package has a status of pending. |\n| release | A report item within this package is awaiting onset form. |\n| cancelled | Either the candidate did not submit their data by the expiration time or the API user account does not have the ability to create tickets.|\n| n/a, error, other | Any other status should be treated as an error. |\n\n<br/>\n\n*Report Results*\n\nA report's `result` property will give a more detailed description of the response.\n\n| Result | Description |\n| :----- | :---------- |\n| clear | Everything good, the screening passes. |\n| alert | Something found. The screening needs review. |\n| client criteria | Check clientCriteriaResult which will have more information on whether or not the result meets a custom criteria. |\n\n<br/>\n\n*Report Statuses*\n\nEach individual report may have their own statuses and these will vary upon the type of report processed.\n\nIf using these statuses, it's best practice to only concern yourself with the most common values. Here's a list of the top common report status values.\n\n| Status | Description |\n| :----- | :---------- |\n| Complete | The report has completed and `result` property is populated. |\n| Pending | The report started but is not completed yet. |\n| Other | Any other status should be treated as an error. |\n| Expired | The report started but has expired due to inactivity. |\n\n<br/>\n\n**Callback Consumption**\n\n>Callbacks from the Sterling API support data consumption in chunked and non-chunked variants. Chunking is possible when the callback payload data exceeds 1MB in size.\n\nIdempotency\n===========\n\nThe Sterling API supports the use of an `idempotency-key` in your screening requests, which allows you to safely retry these requests without accidentally performing the same operation twice. This is helpful if there are networking issues and you wanted to guarantee that you do not create duplicate screenings.\n\nAn idempotency key can be unique value of your choice and how you create these keys is up to you. To avoid collisions within your own account, try using unpredictable string values or a random V4 UUID. \n\nIf a screening request fails when using the `idempotency-key`, retry using the same key value in order to guarantee that only one screening is created.\n\n**Key Expiration**\n>Any value used as an idempotency key to successfully create a new screening may be reused for **24 hours** after it is successfully associated with a screening record. Retrying screening attempts using the same key will not reset the expiration date and will continue to return the same screening associated with that key until the 24 hour expiration window is met. After the 24 hour window has passed, a new screening can and will be created with the same idempotency key.\n\n**cURL**\n```\ncurl -X POST 'https://api.us.int.sterlingcheck.app/v1/screenings' \\\n-H \"Authorization: Bearer <access token>\" \\\n-H 'Content-Type: application/json' \\\n-H 'idempotency-key: \"ccf492f0-231a-45eb-bc29-8e3687445715\"' \\\n-d '{\n    \"packageId\": \"96193\",\n    \"candidateId\": \"001c8b73-4b0d-4dac-bcc0-479bf91f222a\"\t\n}'\n```\n\nErrors\n======\n\n<h2>Overview</h2>\n\nSterling uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the `2xx` range indicate a success, codes in the `4xx` range indicate a request that failed given the information provided (e.g. a required parameter was omitted, format issues, etc.), and codes in the `5xx` range indicate an error with Sterling's servers.\n\nWhen a request is valid but does not complete successfully, we return a `400#` error code. Below you'll find more detailed information about the possible errors you can expect.\n\n<h2>Error Format</h2>\n\nThe expected format for an error is as follows:\n\n```\n{\n    \"errors\": [\n        {\n            \"code\": \"400#[optional-object]?[optional-reason]\",\n            \"message\": \"[optional-message]\"\n        }\n    ]\n}\n```\n\n**Error _Code_ Format**\n\n* Example: 400#dob?format\n* HTTP error code (i.e. 400#)\n* Offending field when relevant (e.g. dob)\n* Brief message when applicable (e.g. format or required)\n\n**Error _Message_ Format**\n\n* The error message provides more context as to why the error occurred (e.g. `\"message\": \"dob must be in the format of YYYY-MM-DD\"`)\n\nExample:\n\n```\n{\n    \"errors\": [\n        {\n            \"code\": \"400#dob?format\",\n            \"message\": \"dob must be in the format of YYYY-MM-DD\"\n        }\n    ]\n}\n```\n\n> Since the error `message` can change from time to time, we highly recommend you key off of the error `code` if you plan implement any automation for errors.\n\n<h2>Candidate Validation Errors</h2>\n\n**Required Fields**\n\n| Code | Reason |\n| :--- | :----- |\n| 400#address.addressLine | addressLine is required if address is present |\n| 400#address.countryCode | countryCode is required if address is present |\n| 400#address.postalCode | postalCode is required if address is present |\n| 400#candidate?required-fields=address.city | Candidate is missing required field for identity verification: address.city |\n| 400#candidate?required-fields=address.addressLine | Candidate is missing required field for identity verification: address.addressLine |\n| 400#candidate?required-fields=address.state | Candidate is missing required field for identity verification: address.state |\n| 400#candidate?required-fields=address.zip | Candidate is missing required field for identity verification: address.zip |\n| 400#candidate?required-fields=dob | Candidate is missing required field for identity verification: dob | \n| 400#candidate?required-fields=dob | Candidate is missing required field for package: dob | \n| 400#candidate?required-fields=middleName | Candidate is missing required field for package: middleName (or confirmedNoMiddleName set to true) |\n\n**Examples**\n\n_Error Message_\n\n```\n{\n  \"errors\": [\n    {\n      \"code\": \"400#givenName\",\n      \"message\": \"givenName is required\"\n    }\n  ]\n}\n```\n\n_Solution_\n\nInclude the \"givenName\" field in the candidate object:\n\n```\n{\n    //...\n    \"givenName\": \"John\",\n    //...\n}\n```\n\n<br/>\n\n_Error Message_\n\n```\n{\n  \"errors\": [\n    {\n      \"code\": \"400#address.addressLine\",\n      \"message\": \"if address is provided, addressLine is required\"\n    }\n  ]\n}\n```\n\n_Solution_\n\nIn the \"address\" sub-object, include an \"addressLine\" field:\n\n```\n{\n    //...\n    \"givenName\": \"John\",\n    //..\n    \"address\": {\n         \"addressLine\": \"123 Example Street\",\n         \"municipality\": \"ATLANTA\",\n         //..\n     }\n}\n```\n\n<h2>Format Validation Errors</h2>\n\n| Code | Reason |\n| :--- | :----- |\n| 400#dob?format | dob must be in the format of `YYYY-MM-DD` |\n| 400#ssn?format | ssn is not in the expected format |\n| 400#phone?format | phone is not in the expected format |\n| 400#email?format | email is not in the expected format |\n| 400#address.regionCode?format | regionCode format |\n| 400#address.postalCode?format | postalCode format |\n| 400#address.countryCode?format | countryCode format |\n\n<h2>Screening Errors</h2>\n\n| Code | Reason |\n| :--- | :----- |\n| 400#adverse-action-already-in-process | An adverse action has already been initiated for this screening |\n| 400#adverse-action?configuration | Adverse Action has not been configured for this account |\t\n| 400#report-status-not-ready |\tScreening is not eligible for adverse action at this time |\t\n| 400#reportItemIds?not-allowed | This report does not allow you to include the reason for initiating Adverse Action. Please remove the reportItemId(s) and resubmit. |\n| 409#clientReferenceId?already-in-use | clientReferenceId already in use |\t\n| 409#email?already-in-use | email already in use |\t\n| 400#identityId | Trusted identifier already assigned to this candidate |\t\n| 400#fileName | fileName is required |\t\n| 400#driversLicense.licenseNumber?format |\tlicenseNumber is not in the expected format |\t\n| 400#driversLicense.issuingAgency?format |\tissuingAgency is not in the expected format |\t\n| 400#kba.answers?failed | Too many incorrect answers |\t\n| 400#kba.answers?invalid-selection | Answer given for questionId {1-4} does not match any option |\t\n| 400#candidate?required-fields=address.city | Candidate {id} is missing required field for identity verification: address.city |\n| 400#candidate?required-fields=address.addressLine | Candidate {id} is missing required field for identity verification: address.addressLine |\t\n| 400#candidate?required-fields=address.state |\tCandidate {id} is missing required field for identity verification: address.state |\n| 400#candidate?required-fields=address.postalCode | Candidate {id} is missing required field for identity verification: address.postalCode |\t\n| 422#identity?retry-limit-exceeded | Retry limit exceeded |\t\n| 400#candidateId?not-found | candidateId must be a valid candidateId associated with the authenticated account |\n| 400#kba.answers |\tAll kba questions must be answered |\n| 400#packageId?not-found |\tpackageId must be an active packageId associated with the authenticated account |\t\n| 400#trustedUserId?not-found |\ttrusted user must be a valid, active trusted user |\t\n| 400#documentType | documentType must be one of: [end-user-agreement, disclosure-and-authorization] |\n| 400#party | party must be one of: [candidate, trusted-user] |\n| 400#ticketing | Invalid value some-bad-value in field: ticketing |\n| 400#schedule.startAt?format |\tschedule.startAt must be a UTC time with date, hours, and minutes, like 2016-10-30T20:00:00.000Z |\t\n| 400#candidate-and-package-already-subscribed | A subscription already exists for this candidate and package\t|\n| 400#schedule.endAt?format | schedule.endAt must be a UTC time with date, hours, and minutes, like 2016-10-30T20:00:00.000Z |\n| 400#candidate?required-fields=dob | Candidate {id} is missing required field for package {id}: dob |\n| 400#candidate?required-fields=middleName | Candidate {id} is missing required field for package {id}: middleName |\n| 400#identityId | Trusted identifier already assigned to this candidate |\t\n| 400#identityId | identity id must belong to a verified identity |\n\n<h2>Rate Limiting</h2>\n\nWe hold ourselves to a high standard – and part of that means continuing to provide quality service to all customers. In order to make this is possible, the Sterling API is rate limited. \n\nIf the rate limit is exceeded for the specified endpoint in your request, the API will respond with a `429 Too Many Requests` status code. \n\nBelow is a table of the rate limiting thresholds for the most used endpoints:\n\n| Endpoint | Requests / 5 Minute Period |\n| :------- | :------------------- |\n| /oauth/token | 125 |\t\t\n| /candidates | 125 |\n| /candidates/{id} | 500 |\n| /screenings | 125 |\n| /screenings/{id} | 500 |\n\n<h3>Controlling Your Requests</h3>\n\nThere are several ways you can help control the amount of requests you make within limits: \n\n* If you believe there is a possibility that the limits could be exceeded, it is advised that you use exponential backoff logic to retry the requests.\n\n* If processing a large batch of requests, you could implement a delay between requests.\n\n* Check your existing workflow for duplicate or unnecessary API requests. A common example would be making numerous authentication requests when an access token is already valid for the next 10 hours.\n\n* Create a webhook or use callbacks to receive real-time updates about a report instead of retrieving them in batches.\n\nVersioning\n==========\n\nThis document describes Sterling API version 1. The Sterling API follows semantic versioning, which means that we are committed to maintaining this API without _breaking_ changes. The Sterling API considers any removal or renaming of an API endpoint or JSON field from an API response to be a breaking change. Additions of new _required_ input fields would also be incompatible with existing client code, so any newly-added input fields will always be optional.\n\nAlthough fields will not be _removed_ from responses, fields may be added to introduce new capabilities. Applications consuming this API should use permissive deserialization techniques when parsing JSON responses. It will always be safe to ignore unrecognized, optional fields.\n\n**Example of Permissive Deserialization**\n\n>When using the Jackson JSON parsing library for Java, clients should disable the `DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES` flag.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"902667","team":319436,"collectionId":"9b53fca1-0578-4596-97ba-14daa47e54da","publishedId":"S1Lr5BHV","public":true,"publicUrl":"https://apidocs.v1.sterlingcheck.app","privateUrl":"https://go.postman.co/documentation/902667-9b53fca1-0578-4596-97ba-14daa47e54da","customColor":{"top-bar":"FFFFFF","right-sidebar":"303F49","highlight":"FF2C00"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.11.6","publishDate":"2021-01-30T00:03:37.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"INT","id":"7339d01d-891d-4ab0-9cbc-89b5efc93475","owner":"7075989","values":[{"key":"host","value":"https://api.us.int.sterlingcheck.app","enabled":true}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/821597f2e346e2cd87279687884179b76d9d414de12b17edfea3bf2ac90f0fbf","favicon":"https://res.cloudinary.com/postman/image/upload/v1773163808/team/516bf54cd0b68022526d06b3f9ad2bcb.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"INT","value":"7075989-7339d01d-891d-4ab0-9cbc-89b5efc93475"}],"canonicalUrl":"https://apidocs.v1.sterlingcheck.app/view/metadata/S1Lr5BHV"}