# Karsa Data Ingestion API > Create individual and business customers, guarantee beneficial owners are individual Customer records, and submit verification, account, document, transaction, and outcome data to Karsa. > ## Agent Instructions > Document only operations in the linked OpenAPI contract: the source-data ingestion operations and the source-scoped outbound webhook management operations. > Treat the generated OpenAPI document as authoritative for request fields. Never invent compatibility fields, alternate endpoints, or additional source models. > Preserve explicit nulls, decimal strings, timestamps, source identifiers, immutable version identifiers, and document-version links exactly as defined. - [Start integrating with Karsa](https://docs.useasterisk.com/index.md): Authenticate, onboard your first business and its UBOs, and send the source records Karsa evaluates. - [Authentication and request identity](https://docs.useasterisk.com/concepts/authentication.md): The source-bound bearer credential and idempotency key used by every ingestion call. - [Onboard a business and its UBOs](https://docs.useasterisk.com/guides/business-onboarding.md): Create one business Customer, two individual UBO Customers, their relationships, and a KYB submission in one atomic request. - [Upload a complete customer dataset](https://docs.useasterisk.com/quickstart.md): Send one business, its KYB dossier, three documents, one account, one transaction, and two outcomes. - [Sequence a multi-record upload](https://docs.useasterisk.com/guides/upload-flow.md): How identifiers returned by one upload are used by the next related record. - [Developer platform](https://docs.useasterisk.com/platform/overview.md): Understand the source-record resources available through Karsa's ingestion API. - [How records fit together](https://docs.useasterisk.com/concepts/source-schema.md): Stable resources, immutable versions, and the KYB dossier that pins their evidence. - [Customers](https://docs.useasterisk.com/concepts/customers.md): Create complete individual or business Customer records. - [KYB dossiers](https://docs.useasterisk.com/guides/kyb-dossiers.md): Submit one complete business dossier and queue its KYB evaluation. - [Trigger a KYB run](https://docs.useasterisk.com/guides/kyb-runs.md): Start a KYB run for a business customer, poll its status, and receive signed lifecycle webhooks. - [Accounts](https://docs.useasterisk.com/concepts/accounts.md): Upload a customer-linked bank or payment account and append immutable observations. - [Transactions](https://docs.useasterisk.com/concepts/transactions.md): Upload a movement of value with the subjects, money legs, and source status you know. - [Documents](https://docs.useasterisk.com/concepts/documents.md): Upload a file once and reference its immutable version from customers or transactions. - [Screening observations](https://docs.useasterisk.com/concepts/screening.md): Upload provider results and reviewer dispositions without collapsing them into a Karsa decision. - [Outcomes](https://docs.useasterisk.com/concepts/outcomes.md): Record one result already known by your system against exactly one source subject. - [Set up outbound webhooks](https://docs.useasterisk.com/platform/webhooks.md): Configure, verify, test, and operate signed KYB lifecycle webhooks for an ingestion source. - [Create a customer](https://docs.useasterisk.com/api-reference/customers/create-a-customer.md): Creates or versions exactly one complete Customer and its document links. Set type to INDIVIDUAL or BUSINESS. - [Update a customer](https://docs.useasterisk.com/api-reference/customers/update-a-customer.md): Updates supplied mutable fields and appends a complete immutable customer snapshot. Stable customer identity and customer type are not replaceable. - [Create a business and its UBO customers](https://docs.useasterisk.com/api-reference/customers/create-a-business-and-its-ubo-customers.md): Atomic convenience operation. Creates or versions one business Customer, creates or versions every beneficial owner as a full INDIVIDUAL Customer, records their ownership and role relationships, and submits the KYB dossier. - [Submit a KYB dossier](https://docs.useasterisk.com/api-reference/verifications/submit-a-kyb-dossier.md): Records one complete source snapshot for an existing business Customer version and queues its KYB evaluation. - [Trigger a KYB run (by customer ID)](https://docs.useasterisk.com/api-reference/verifications/trigger-a-kyb-run-by-customer-id.md): Starts a KYB run for a business customer addressed by the Karsa customer ID. Without a body the run uses the customer's current version and its currently available ingested documents; related parties and provider evidence carry forward from the customer's latest KYB dossier. Status is derived from t… - [Trigger a KYB run (by external ID)](https://docs.useasterisk.com/api-reference/verifications/trigger-a-kyb-run-by-external-id.md): Starts a KYB run for a business customer addressed by your source's customer externalId. Without a body the run uses the customer's current version and its currently available ingested documents; related parties and provider evidence carry forward from the customer's latest KYB dossier. Status is de… - [List a customer's KYB runs (by customer ID)](https://docs.useasterisk.com/api-reference/verifications/list-a-customers-kyb-runs-by-customer-id.md): Lists KYB runs for the customer addressed by the Karsa customer ID, newest first. Pass nextCursor as cursor to read the next page. Status is derived from the run and its Case: pending (queued), running, needs_review (finished with open issues for an analyst), completed (finished without open issues)… - [List a customer's KYB runs (by external ID)](https://docs.useasterisk.com/api-reference/verifications/list-a-customers-kyb-runs-by-external-id.md): Lists KYB runs for the customer addressed by your source's customer externalId, newest first. Pass nextCursor as cursor to read the next page. Status is derived from the run and its Case: pending (queued), running, needs_review (finished with open issues for an analyst), completed (finished without… - [Get a KYB run](https://docs.useasterisk.com/api-reference/verifications/get-a-kyb-run.md): Returns the run status, a result summary once it finishes, and a failure code if it failed. Status is derived from the run and its Case: pending (queued), running, needs_review (finished with open issues for an analyst), completed (finished without open issues), or failed. Only customers owned by th… - [Upload an account](https://docs.useasterisk.com/api-reference/accounts/upload-an-account.md): Uploads one bank-account, virtual-account, or wallet snapshot, its optional customer relationship, structured routing details, related accounts, and document links. - [Update an account](https://docs.useasterisk.com/api-reference/accounts/update-an-account.md): Updates supplied mutable fields and appends a complete immutable account snapshot. Stable Karsa and source identifiers, accountKind, and accountType are not replaceable. - [Submit a document](https://docs.useasterisk.com/api-reference/documents/submit-a-document.md): Submit exactly one of contentBase64 or sourceUrl. Bytes are stored immediately; HTTP(S) URLs are retained verbatim as PENDING_DOWNLOAD references without fetching or signing. URL acceptance does not establish file availability. contentType describes the declared file type. - [Upload a transaction](https://docs.useasterisk.com/api-reference/transactions/upload-a-transaction.md): Writes known subjects and partial sent/received money legs without inventing missing counterparties. - [Update a transaction](https://docs.useasterisk.com/api-reference/transactions/update-a-transaction.md): Updates supplied mutable fields and appends a complete immutable transaction snapshot. Stable Karsa and source identifiers and transactionType are not replaceable. - [Record a source completeness checkpoint](https://docs.useasterisk.com/api-reference/sources/record-a-source-completeness-checkpoint.md): Attests that the authenticated source has delivered every record for the named dataset from completeFrom (or source inception when null) through completeThrough. Checkpoints are append-only, cannot regress, and are resolved at a routine's frozen evidence cutoff. - [Upload an outcome](https://docs.useasterisk.com/api-reference/outcomes/upload-an-outcome.md): Records one source outcome against exactly one subject. - [Upload a provider screening observation](https://docs.useasterisk.com/api-reference/screening/upload-a-provider-screening-observation.md): Records an immutable, provider-neutral AiPrise, SEON, Chainalysis, or other verification, fraud, AML, transaction-monitoring, or blockchain-screening observation. This preserves source evidence and does not itself create a Karsa finding or queue decision. - [Upload a native SEON Fraud API response](https://docs.useasterisk.com/api-reference/screening/upload-a-native-seon-fraud-api-response.md): Accepts the native SEON response plus a Karsa subject binding. Karsa validates and normalizes the provider result while retaining the bounded native response for audit. - [Upload a native AiPrise verification response](https://docs.useasterisk.com/api-reference/screening/upload-a-native-aiprise-verification-response.md): Accepts the native AiPrise verification response plus a Karsa subject binding and KYC/KYB scope. Karsa owns result normalization; related-party data remains evidence until separately mapped to canonical subjects. - [Upload a native Chainalysis alert response](https://docs.useasterisk.com/api-reference/screening/upload-a-native-chainalysis-alert-response.md): Accepts the contracted Chainalysis product's alert envelope plus explicit product, API version, provider record identity, and Karsa subject binding. Unknown response states fail closed as UNKNOWN. - [Upload a screening disposition](https://docs.useasterisk.com/api-reference/screening/upload-a-screening-disposition.md): Records an immutable reviewer or source-system disposition tied to an existing screening observation from the same authenticated source. It remains distinct from Karsa's recommendation and any later Finding disposition. - [Upload a monitoring control version](https://docs.useasterisk.com/api-reference/controls/upload-a-monitoring-control-version.md): Records one immutable version from the authenticated source's authoritative control catalog. Scope, depth, and configuration fingerprints allow overlap and change analysis without treating vendor alerts as the catalog. - [Upload a monitoring control execution](https://docs.useasterisk.com/api-reference/controls/upload-a-monitoring-control-execution.md): Records one immutable scheduled or completed control execution tied to a monitoring-control version from the same authenticated source. Result, alert, and disposition references remain source identifiers and do not themselves create a Karsa decision. - [Upload a historical RFI lifecycle event](https://docs.useasterisk.com/api-reference/requests/upload-a-historical-rfi-lifecycle-event.md): Records one immutable request, response, expiry, closure, or cancellation event for a source-owned RFI. Events retain the source request identity and customer binding needed to measure repeat requests and expiry without exposing response contents. - [List webhook endpoints](https://docs.useasterisk.com/api-reference/webhooks/list-webhook-endpoints.md): Lists only destinations owned by the authenticated ingestion source. - [Create a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/create-a-webhook-endpoint.md): Accepts one customer-generated Ed25519 key pair. Karsa validates the pair, encrypts the private key, and never returns it. The endpoint remains inactive until verification succeeds. - [Update a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/update-a-webhook-endpoint.md): Changing an active destination URL returns the endpoint to pending verification. A disabled endpoint stays disabled and must be enabled before verifying its new URL. - [Delete a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/delete-a-webhook-endpoint.md): Stops new deliveries and retains a read-only endpoint archive with delivery history for the retention period. - [Verify a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/verify-a-webhook-endpoint.md): Sends a signed challenge. The receiver must return a 2xx JSON response with the exact challenge. - [Enable a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/enable-a-webhook-endpoint.md): Resumes new deliveries for this endpoint. - [Disable a webhook endpoint](https://docs.useasterisk.com/api-reference/webhooks/disable-a-webhook-endpoint.md): Pauses new deliveries for this endpoint. - [Rotate a webhook signing key](https://docs.useasterisk.com/api-reference/webhooks/rotate-a-webhook-signing-key.md): Validates and encrypts a new customer-generated Ed25519 key pair. The prior public key remains in an overlap window at least as long as delivery retries. - [Send a test webhook](https://docs.useasterisk.com/api-reference/webhooks/send-a-test-webhook.md): Queues a durable webhook.test event through the normal delivery relay. - [List webhook delivery history](https://docs.useasterisk.com/api-reference/webhooks/list-webhook-delivery-history.md): Returns bounded delivery and attempt history for the source-owned endpoint, including a deleted endpoint retained as a read-only archive. - [Retry a failed webhook delivery](https://docs.useasterisk.com/api-reference/webhooks/retry-a-failed-webhook-delivery.md): Requeues a dead-lettered delivery without changing its event, body, timestamp, key version, or signature. - [Replay missed webhook events](https://docs.useasterisk.com/api-reference/webhooks/replay-missed-webhook-events.md): Queues deliveries to an ACTIVE endpoint for recorded events of its subscribed types, created at or after since, that it never received (for example while it was pending verification or disabled). since is clamped to the delivery-history window, webhook.test events are excluded, and each call queues… - [List webhook events](https://docs.useasterisk.com/api-reference/webhooks/list-webhook-events.md): Returns events recorded for the calling ingestion source, including events that no endpoint received because none was ACTIVE and subscribed when they occurred. Each item has the same fields and values as the delivered envelope, and its id matches Karsa-Webhook-Id; JSON key order can differ and items… - [Get a webhook event](https://docs.useasterisk.com/api-reference/webhooks/get-a-webhook-event.md): Returns events recorded for the calling ingestion source, including events that no endpoint received because none was ACTIVE and subscribed when they occurred. Each item has the same fields and values as the delivered envelope, and its id matches Karsa-Webhook-Id; JSON key order can differ and items… ## OpenAPI Specs - [ingestion.openapi](/openapi/ingestion.openapi.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.