One API for the whole merchant risk lifecycle.

Onboarding, KYB, Underwriting, Transaction Monitoring, Merchant Monitoring and Disputes Automation.

POST /merchant_profiler/Sample
Acme Plumbing Co.
San Jose, CA
Legal entity
ACTIVE
legal_entity.​status
Industry
1711
establishment_industry.​mcc_code
Website
acmeplumbing.example
establishment_website.​website_url
License
Active
legal_entity_licenses[0].​licensing_status
Fictional sample.See the full response
By how you use Coris

Which describes you?

By workflow

Start from your task

Make your first call

Log in to see your sandbox key in the samples.

  1. Get a sandbox key. Create one under Profile, then Account Settings, then Partner API Keys. Open the sandbox portal
  2. Start a profile. POST the business details. The response has a request_id. Try it in the API explorer
  3. Poll for the result. A 425 means wait. A 206 has partial data. A 200 is complete.

Read the full quickstart

curl -X POST https://sandbox-api.coris.ai/api/v0_2/merchant_profiler/ \ -H 'Authorization: Token YOUR_SANDBOX_KEY' \ -H 'Content-Type: application/json' \ -d '{"business_name": "Acme Plumbing Co.", "address": {"city": "San Jose", "state": "CA", "country": "US", "address_type": "Registration"}}' # Copy the request_id from the response, then poll. curl -i 'https://sandbox-api.coris.ai/api/v0_2/merchant_profiler/?request_id=REQUEST_ID' \ -H 'Authorization: Token YOUR_SANDBOX_KEY'
import time import requests API = "https://sandbox-api.coris.ai/api/v0_2" HEADERS = {"Authorization": "Token YOUR_SANDBOX_KEY"} BUSINESS = { "business_name": "Acme Plumbing Co.", "address": {"city": "San Jose", "state": "CA", "country": "US", "address_type": "Registration"}, } start = requests.post(f"{API}/merchant_profiler/", headers=HEADERS, json=BUSINESS) start.raise_for_status() request_id = start.json()["request_id"] while True: result = requests.get( f"{API}/merchant_profiler/", headers=HEADERS, params={"request_id": request_id} ) if result.status_code == 200: break if result.status_code not in (206, 425): result.raise_for_status() time.sleep(5) print(result.json()["legal_entity"]["status"])
const API = 'https://sandbox-api.coris.ai/api/v0_2'; const headers = { Authorization: 'Token YOUR_SANDBOX_KEY', 'Content-Type': 'application/json', }; const start = await fetch(`${API}/merchant_profiler/`, { method: 'POST', headers, body: JSON.stringify({ business_name: 'Acme Plumbing Co.', address: { city: 'San Jose', state: 'CA', country: 'US', address_type: 'Registration' }, }), }); const { request_id: requestId } = await start.json(); let result; do { await new Promise(resolve => setTimeout(resolve, 5000)); result = await fetch(`${API}/merchant_profiler/?request_id=${requestId}`, { headers }); if (![200, 206, 425].includes(result.status)) throw new Error(`Coris returned ${result.status}`); } while (result.status !== 200); console.log((await result.json()).legal_entity.status);
For AI agents

Agents can read these docs and call Coris