Skip to main content
Every example below runs against the public API in cURL, TypeScript, and Python. They expect a read, write, or admin key matching the request, and values you adapt to your own integration.
Reconify has no sandbox or test mode. A write example creates immutable evidence in your real organization, and the public API deletes nothing.

Send events

Ingestion covers four shapes: a single event, a mixed batch, a safe replay, and an event that carries provider lookup data.

Submit one event

One event in the events array is the smallest valid ingestion request.

Submit a mixed batch

The second event below carries an invalid amount, so the batch returns one accepted result and one rejected result. The response order matches the request order.
Inspect every result before retrying. Retry only rejected items that are safe to resend.
The Python SDK rejects a numeric amount during Pydantic model validation, but it cannot tell whether a string contains a valid monetary value. An amount such as "bad" reaches the API and returns a rejected result.

Replay an event safely

Send the same id and payload. A stored item returns duplicate. Reusing the same id with different content returns a rejected item with idempotency_conflict, which needs investigation rather than another retry.
An event without id receives a generated ID and can be stored again on retry.

Submit provider-enriched evidence

data.integration_ref selects a configured provider connection. Put the provider lookup value in data, because provider alone is descriptive and does not trigger a lookup.
The immediate response confirms ingestion, not the provider result. See Enrich events with provider data for tracking states and failure behavior.

Read data back

Read routes confirm what Reconify holds, page through results, and return organization context.

Read events

A list read confirms what Reconify stored, most recent first.

Follow the cursor

Read page.next_cursor from each response and pass it as after. Stop when the cursor is absent.

Read organization data

Organization routes return the organization record and its members, without email addresses.
Member responses contain IDs and roles. They do not contain email addresses.

Work with issues

Issue routes cover reads, assignment, status changes, and append-only notes.

Read and update issues

Issue reads accept a status filter, and a PATCH updates assignment or status.
The PATCH request changes assignment only. It does not change finding status.

Add a note safely

Notes are append-only, and an Idempotency-Key header makes a retry safe.
Repeat the request with the same key and body to replay the original note. A different body returns 409 idempotency_conflict.

Health and errors

The last two examples cover the unauthenticated health check and the shape of error handling around every call above.

Check availability

GET /v2 and GET /v2/health need no credentials.

Handle errors

The SDKs retry safe reads after a degraded 503. Event ingestion is not retried by default because a batch without stable IDs can be recorded more than once. Enable unsafe-method retries only after every event has a stable id.
Do not retry an ingestion request unless every event has a stable ID. Do not log API keys or full financial payloads. A 401 means the key is missing or invalid. A 403 means the key lacks the required scope.
See Errors for the complete code and retry matrix, or the public API reference for request and response details.