Generator · Canadian data

Canadian person

Endpoint GET /v1/ca/person

What it covers

Returns a consistent synthetic Canadian person: name, surname, initials, birth date, sex, and a matching Luhn-valid SIN. As with the US, the `sex` and age filters shape the **drawn** birth date and name rather than being decoded from the identifier — a SIN encodes neither. Unlike the US, the identifier does carry one real fact: the province or region of registration, reported as `registrationRegion` and pinnable via `firstDigit`. Names come from a weighted mix of the anglophone and French-Canadian pools, matching how the country’s names actually distribute. `invalid=true` breaks only the SIN’s checksum; the name and birth date stay clean.

Parameters

ParameterTypeDescription
atAgeintegerExact age in years at request time.
bornAfterstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born after this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornBeforestringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born before this date or fragment (YYYY, YYYY-MM, YYYY-MM-DD).
bornOnstringpattern ^\d{4}(?:-\d{2}(?:-\d{2})?)?$Born on a date or within a fragment: YYYY, YYYY-MM, or YYYY-MM-DD.
caseStrictbooleanKeep proper name casing (default `true`). Set `false` to deliberately mangle it. Initials stay uppercase regardless.
countinteger1–10000Number of records to return, 1–10000. Omitted returns a single record; set it for a batch. Costs 1 token plus a tenth per record.
edgebooleanRestrict output to valid edge cases from the rare corners of the domain.
extremebooleanReturn a correct value wrapped in a hostile encoding (untrimmed whitespace, invisible/zero-width characters, BOM, or bidi/combining marks). Homoglyphs are excluded so the value stays machine-parseable; it still validates after normalisation.
firstDigitintegerPin the SIN’s region of registration. 0 and 8 are never issued and are rejected.
format"plain" | "with-spaces" | "with-hyphens"SIN rendering: `with-spaces` (default), `with-hyphens`, or `plain`.
invalidbooleanReturn a deliberately invalid value that fails validation, for testing rejection paths.
olderThanintegerMinimum age in years at request time.
seedintegerInteger seed for reproducible output: the same seed always yields the same record.
sex"m" | "f"Encoded sex: "m" or "f".
temporaryResidentbooleanGenerate a temporary resident (SIN beginning 9), whose number expires in reality.
youngerThanintegerMaximum age in years at request time.

Response fields

FieldTypeDescription
namestringGiven name(s), including a middle name where drawn.
surnamestringSurname, from either the anglophone or French-Canadian pool.
initialsstringUppercase initials of name and surname, no dots.
birthDatestringThe birth date, ISO `YYYY-MM-DD`. Drawn independently — the SIN encodes no date.
sex"m" | "f"The person’s sex. Drawn independently — the SIN encodes none.
sinstringThe matching SIN, Luhn-valid, rendered per the requested format.
registrationRegionstringThe province the SIN records — this one fact the identifier does encode.

Other generators for Canada

See all generators for Canada →

The same kind of identifier elsewhere

Try it

Generate a live example below — every response is valid by format and entirely synthetic.