Seqlense docs

Identities

KYC/AML identity management.

GET
/v1/identity/

Returns a paginated list of the active (not deleted) identities in your organization, newest first. limit sets the page size: default 20, clamped to 10..100.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

type?string

Filter by identity type. Any other value is ignored (no filter).

Value in

  • "PERSON"
  • "COMPANY"
  • "GOVERNMENT"
q?string

Substring search on person first/last name, company legal or trade name, and government official name. Ignored when empty or longer than 100 characters.

Lengthlength <= 100
page?integer

1-based page number, clamped to 1..10000.

Range1 <= value <= 10000
Default1
limit?integer

Page size, clamped to 10..100.

Range10 <= value <= 100
Default20

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/identity/"
{  "identities": [    {      "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff",      "type": "COMPANY",      "display_name": "ACME SAS",      "country": "FR",      "created_at": "2026-07-27 10:00:00",      "updated_at": "2026-07-27 10:00:00"    }  ],  "pagination": {    "page": 1,    "page_size": 20,    "total": 1,    "total_pages": 1,    "has_next": false,    "has_prev": false  }}
POST
/v1/identity/

Creates a new identity and links it to your organization. The body must include type (case-insensitive) plus the required fields for that type. Country codes must be exactly two uppercase letters; gender, pep_status and jurisdiction_level are accepted in any case and stored uppercase.

When a COMPANY is created with a valid French SIRET (14 digits, Luhn check) in registration_number and country_of_incorporation is FR or empty, Seqlense looks it up in the SIRENE registry during the call and stores the result (see GET /v1/identity/siret). A failed lookup is silent and never blocks the create.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/" \  -H "Content-Type: application/json" \  -d '{    "type": "PERSON",    "first_name": "Alice",    "last_name": "Martin",    "nationality": "FR",    "date_of_birth": "1990-05-14",    "pep_status": "NONE"  }'
{  "status": "ok",  "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff"}
DELETE
/v1/identity/

Soft-deletes an identity: it leaves the active list and moves to the trash (GET /v1/identity/deleted), from which POST /v1/identity/restore brings it back. Linked wallets, tags and notes are left in place. Deleting an identity that is already in the trash also returns ok.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

id*string

UUID of the identity to delete.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/v1/identity/?id=497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "status": "ok"}
PUT
/v1/identity/

Partial update of the type-specific fields of an active identity. Send id plus only the fields to change; missing fields (or fields that are not strings) keep their current value, and an empty string clears an optional field. The fields that apply depend on the identity's type, others are ignored; type itself cannot change. The same validation as create applies to the merged result.

For a COMPANY, SIRET enrichment is re-run when the resulting registration number is a valid FR SIRET (country FR or empty); otherwise any stored enrichment is deleted. A deleted (trashed) identity returns 404.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Fields that can be updated. Send only the ones to change; the set that applies depends on the identity's type, the others are ignored.

Response Body

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/v1/identity/" \  -H "Content-Type: application/json" \  -d '{    "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff",    "pep_status": "PEP"  }'
{  "status": "ok"}
GET
/v1/identity/activity

Returns the identity audit trail of your organization, newest first, 50 events per page. Events include create, update, delete, restore, merge, SIRET refresh and notes added on an identity. Pass id to scope the feed to one identity (an id that is not a UUID is ignored and the whole feed is returned). The pagination object carries only page and page_size; an empty events array means you are past the end.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

id?string

Restrict the feed to one identity UUID.

Formatuuid
q?string

Search in entity title, detail, action and actor name. Max 100 characters.

Lengthlength <= 100
page?integer

1-based page number.

Range1 <= value
Default1

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/identity/activity"
{  "events": [    {      "uuid": "9a1b2c3d-4e5f-4a6b-8c7d-0e1f2a3b4c5d",      "entity_uuid": "6f9619ff-8b86-4d11-b42d-00c04fc964ff",      "entity_title": "Alice Martin",      "action": "CREATE",      "detail": "Created PERSON identity",      "severity": "INFO",      "actor": "api_key",      "actor_name": "API Key #12",      "created_at": "2026-07-27T10:00:00+00:00"    }  ],  "pagination": {    "page": 1,    "page_size": 50  }}
POST
/v1/identity/bulk

Imports 1 to 1000 identities in one call. Each item has the create shape and is created independently; the response counts successes and lists failed items by index. Validation is lighter than the single create: names, country codes and the required field per type are checked, and SIRET enrichment runs for qualifying companies. An item with an unknown type reports invalid type, any other failure reports creation failed.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/bulk" \  -H "Content-Type: application/json" \  -d '{    "items": [      {        "type": "PERSON",        "first_name": "Alice",        "last_name": "Martin"      },      {        "type": "COMPANY",        "legal_name": "ACME SAS"      }    ]  }'
{  "status": "ok",  "success": 1,  "failed": 1,  "errors": [    {      "index": 1,      "error": "creation failed"    }  ]}
POST
/v1/identity/bulk-delete

Soft-deletes 1 to 500 identities in one call. Ids that are not UUIDs or not in your organization count as failed; non-string entries in ids are dropped before the size check.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/bulk-delete" \  -H "Content-Type: application/json" \  -d '{    "ids": [      "6f9619ff-8b86-4d11-b42d-00c04fc964ff"    ]  }'
{  "status": "ok",  "success": 1,  "failed": 0}
GET
/v1/identity/count

Counts the active identities of your organization, in total and by type.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/identity/count"
{  "total": 42,  "persons": 30,  "companies": 10,  "governments": 2}
GET
/v1/identity/deleted

Returns the soft-deleted identities of your organization (the trash), newest first. Same filters and page size rules as GET /v1/identity/. The pagination object here carries page, page_size, total and total_pages only (no has_next / has_prev).

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

type?string

Filter by identity type.

Value in

  • "PERSON"
  • "COMPANY"
  • "GOVERNMENT"
q?string

Name search, same fields as the active list. Max 100 characters.

Lengthlength <= 100
page?integer

1-based page number, clamped to 1..10000.

Range1 <= value <= 10000
Default1
limit?integer

Page size, clamped to 10..100.

Range10 <= value <= 100
Default20

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/identity/deleted"
{  "identities": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "type": "PERSON",      "display_name": "string",      "country": "string",      "created_at": "2026-07-27 10:00:00",      "updated_at": "2026-07-27 10:00:00"    }  ],  "pagination": {    "page": 0,    "page_size": 0,    "total": 0,    "total_pages": 0,    "has_next": true,    "has_prev": true  }}
GET
/v1/identity/detail

Returns one active identity with its type-specific block (person, company or government). A deleted identity returns 404.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

id*string

UUID of the identity.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/identity/detail?id=497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff",  "type": "PERSON",  "created_at": "2026-07-27 10:00:00",  "updated_at": "2026-07-27 10:00:00",  "person": {    "first_name": "Alice",    "last_name": "Martin",    "middle_name": "",    "date_of_birth": "1990-05-14",    "place_of_birth": "Lyon",    "nationality": "FR",    "gender": "F",    "pep_status": "NONE"  }}
POST
/v1/identity/merge

Folds a duplicate (source_id) into the identity to keep (target_id), in one database transaction: wallet links, order-book client links, IDENTITY tags and IDENTITY notes move from the source to the target, then the source is soft-deleted (it lands in the trash and can be restored, but its records stay on the target). A wallet or tag already on both sides is kept once. If any step fails, nothing is changed and the call returns 400.

Both identities must belong to your organization (404 otherwise) and the target must be active: a trashed target returns 404. The source may be active or already in the trash. The move is logged in the activity of both identities, with severity WARN.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/merge" \  -H "Content-Type: application/json" \  -d '{    "source_id": "0b7c3f55-1d2e-4a6b-9c8d-7e6f5a4b3c2d",    "target_id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff"  }'
{  "merged": true,  "source_id": "0b7c3f55-1d2e-4a6b-9c8d-7e6f5a4b3c2d",  "target_id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff",  "moved": {    "wallets": 2,    "ob_clients": 1,    "tags": 3,    "notes": 4  }}
POST
/v1/identity/restore

Takes an identity out of the trash and makes it active again. Restoring an identity that is already active also returns ok.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/restore" \  -H "Content-Type: application/json" \  -d '{    "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff"  }'
{  "status": "ok"}
GET
/v1/identity/siret

Returns the SIRENE registry data stored for a company identity. It is filled when a company is created or updated with a valid French SIRET, and can be forced with POST /v1/identity/siret/refresh. Returns 404 when nothing is stored or the identity is not in your organization.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Query Parameters

id*string

UUID of the company identity.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/identity/siret?id=497f6eca-6276-4993-bfeb-53cbbbba6f08"
{  "siret": "string",  "siren": "string",  "denomination": "string",  "forme_juridique": "string",  "categorie_juridique": "string",  "code_naf": "string",  "libelle_naf": "string",  "domaine_activite": "string",  "date_creation": "string",  "statut": "string",  "entreprise_cessee": true,  "capital": 0,  "effectif": "string",  "tranche_effectif": "string",  "adresse": "string",  "code_postal": "string",  "ville": "string",  "pays": "string",  "latitude": 0,  "longitude": 0,  "fetched_at": "string"}
POST
/v1/identity/siret/refresh

Re-fetches the SIRENE data for a company identity, using the SIRET stored in its registration_number. Only the identity id is accepted, never a SIRET, so the endpoint cannot be used as a proxy to the registry. Returns the stored enrichment.

Authorization

ApiKeyAuth
AuthorizationBearer <token>

Send your API key as a bearer token: Authorization: Bearer sq_YOUR_API_KEY.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/identity/siret/refresh" \  -H "Content-Type: application/json" \  -d '{    "id": "6f9619ff-8b86-4d11-b42d-00c04fc964ff"  }'
{  "siret": "string",  "siren": "string",  "denomination": "string",  "forme_juridique": "string",  "categorie_juridique": "string",  "code_naf": "string",  "libelle_naf": "string",  "domaine_activite": "string",  "date_creation": "string",  "statut": "string",  "entreprise_cessee": true,  "capital": 0,  "effectif": "string",  "tranche_effectif": "string",  "adresse": "string",  "code_postal": "string",  "ville": "string",  "pays": "string",  "latitude": 0,  "longitude": 0,  "fetched_at": "string"}