PublicPersonCreateRequest
A person to create in this workspace. Only `name` is required. Everything else is what you know about them; `bio` is the highest-leverage field by a distance, because it is the bulk of what the model is told when a session runs.
Properties
| Name | Type | Description |
|---|---|---|
| accessibility_profile | object | Declared accessibility needs. Validated on the way IN (an unrecognized key is a 422) while the read tolerates keys it does not know: strict where a typo would silently do nothing, lenient where a new |
| bio | object | Free-text background written in the person's own register. This is the bulk of what the model is told about them when a session runs, so it carries more of the simulation than every demographic field |
| city | object | |
| country | object | ISO 3166-1 alpha-2 code, normalized uppercase. |
| date_of_birth | object | |
| education_level | object | |
| employment_status | object | |
| external_id | object | Your own identifier for this person. Unique among the people this workspace owns, so you can address the row by the id your system already holds: `GET .../people?external_id=...`. Reusing one that is |
| gender | object | |
| household | object | |
| income_level | object | |
| interests | object | IAB Content Taxonomy node ids. Every id is checked against the taxonomy: an unknown one is a `422`, never a tag that silently matches nothing later. |
| locale_type | object | |
| name | string | The person's display name. |
| occupation | object | Free-text job title. ish resolves it to a canonical `occupation_code` where it can, which is what makes occupational family filters work on people you created. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/ishlabs-io/json-schema/ishlabs-io-public-person-create-request-schema.json",
"title": "PublicPersonCreateRequest",
"description": "A person to create in this workspace.\n\nOnly `name` is required. Everything else is what you know about them;\n`bio` is the highest-leverage field by a distance, because it is the bulk\nof what the model is told when a session runs.",
"x-generated": "2026-11-13",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/ishlabs-io-openapi.json#/components/schemas/PublicPersonCreateRequest",
"additionalProperties": false,
"properties": {
"accessibility_profile": {
"anyOf": [
{
"$ref": "#/$defs/AccessibilityProfileSchema"
},
{
"type": "null"
}
],
"description": "Declared accessibility needs. Validated on the way IN (an unrecognized key is a 422) while the read tolerates keys it does not know: strict where a typo would silently do nothing, lenient where a new key must not break an old client."
},
"bio": {
"anyOf": [
{
"maxLength": 8000,
"type": "string"
},
{
"type": "null"
}
],
"description": "Free-text background written in the person's own register. This is the bulk of what the model is told about them when a session runs, so it carries more of the simulation than every demographic field combined.",
"title": "Bio"
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "ISO 3166-1 alpha-2 code, normalized uppercase.",
"title": "Country"
},
"date_of_birth": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"title": "Date Of Birth"
},
"education_level": {
"anyOf": [
{
"$ref": "#/$defs/EducationLevel"
},
{
"type": "null"
}
]
},
"employment_status": {
"anyOf": [
{
"$ref": "#/$defs/EmploymentStatus"
},
{
"type": "null"
}
]
},
"external_id": {
"anyOf": [
{
"maxLength": 255,
"type": "string"
},
{
"type": "null"
}
],
"description": "Your own identifier for this person. Unique among the people this workspace owns, so you can address the row by the id your system already holds: `GET .../people?external_id=...`. Reusing one that is taken is a `409`.",
"title": "External Id"
},
"gender": {
"anyOf": [
{
"$ref": "#/$defs/Gender"
},
{
"type": "null"
}
]
},
"household": {
"anyOf": [
{
"$ref": "#/$defs/Household"
},
{
"type": "null"
}
]
},
"income_level": {
"anyOf": [
{
"$ref": "#/$defs/IncomeLevel"
},
{
"type": "null"
}
]
},
"interests": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "IAB Content Taxonomy node ids. Every id is checked against the taxonomy: an unknown one is a `422`, never a tag that silently matches nothing later.",
"title": "Interests"
},
"locale_type": {
"anyOf": [
{
"$ref": "#/$defs/LocaleType"
},
{
"type": "null"
}
]
},
"name": {
"description": "The person's display name.",
"maxLength": 255,
"minLength": 1,
"title": "Name",
"type": "string"
},
"occupation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Free-text job title. ish resolves it to a canonical `occupation_code` where it can, which is what makes occupational family filters work on people you created.",
"title": "Occupation"
}
},
"required": [
"name"
],
"type": "object",
"$defs": {
"AccessibilityAuditory": {
"additionalProperties": false,
"description": "Auditory preferences, such as whether captions are expected.",
"properties": {
"audio_descriptions_required": {
"default": false,
"title": "Audio Descriptions Required",
"type": "boolean"
},
"captions_required": {
"default": false,
"title": "Captions Required",
"type": "boolean"
},
"mono_audio": {
"default": false,
"title": "Mono Audio",
"type": "boolean"
},
"uses_hearing_aid": {
"default": false,
"title": "Uses Hearing Aid",
"type": "boolean"
},
"visual_alerts_required": {
"default": false,
"title": "Visual Alerts Required",
"type": "boolean"
}
},
"title": "AccessibilityAuditory",
"type": "object"
},
"AccessibilityCognitive": {
"additionalProperties": false,
"description": "Cognitive preferences, such as reduced motion and plain language.",
"properties": {
"avoid_flashing": {
"default": false,
"title": "Avoid Flashing",
"type": "boolean"
},
"extra_reading_time": {
"default": false,
"title": "Extra Reading Time",
"type": "boolean"
},
"predictable_navigation": {
"default": false,
"title": "Predictable Navigation",
"type": "boolean"
},
"reduce_motion": {
"default": false,
"title": "Reduce Motion",
"type": "boolean"
},
"simple_language_preferred": {
"default": false,
"title": "Simple Language Preferred",
"type": "boolean"
}
},
"title": "AccessibilityCognitive",
"type": "object"
},
"AccessibilityData": {
"additionalProperties": false,
"description": "Data preferences, such as a metered or low-bandwidth connection.",
"properties": {
"reduce_data": {
"default": false,
"title": "Reduce Data",
"type": "boolean"
}
},
"title": "AccessibilityData",
"type": "object"
},
"AccessibilityMotor": {
"additionalProperties": false,
"description": "Motor preferences, such as reliance on alternative input methods.",
"properties": {
"avoid_hover_interactions": {
"default": false,
"title": "Avoid Hover Interactions",
"type": "boolean"
},
"extended_interaction_timeouts": {
"default": false,
"title": "Extended Interaction Timeouts",
"type": "boolean"
},
"needs_larger_tap_targets": {
"default": false,
"title": "Needs Larger Tap Targets",
"type": "boolean"
},
"sticky_keys": {
"default": false,
"title": "Sticky Keys",
"type": "boolean"
},
"uses_eye_tracking": {
"default": false,
"title": "Uses Eye Tracking",
"type": "boolean"
},
"uses_switch_control": {
"default": false,
"title": "Uses Switch Control",
"type": "boolean"
},
"uses_voice_control": {
"default": false,
"title": "Uses Voice Control",
"type": "boolean"
}
},
"title": "AccessibilityMotor",
"type": "object"
},
"AccessibilityProfileSchema": {
"additionalProperties": false,
"description": "How a person experiences an interface.\n\nOptional, and absent means no accessibility configuration was declared rather than none applying. Treat a missing nested key as that field's default rather than as a deliberate choice.",
"properties": {
"assistive_tech": {
"items": {
"type": "string"
},
"title": "Assistive Tech",
"type": "array"
},
"auditory": {
"$ref": "#/$defs/AccessibilityAuditory"
},
"cognitive": {
"$ref": "#/$defs/AccessibilityCognitive"
},
"data": {
"$ref": "#/$defs/AccessibilityData"
},
"extensions": {
"additionalProperties": true,
"title": "Extensions",
"type": "object"
},
"motor": {
"$ref": "#/$defs/AccessibilityMotor"
},
"notes": {
"default": "",
"title": "Notes",
"type": "string"
},
"version": {
"const": "1.0",
"default": "1.0",
"title": "Version",
"type": "string"
},
"visual": {
"$ref": "#/$defs/AccessibilityVisual"
}
},
"title": "AccessibilityProfileSchema",
"type": "object"
},
"AccessibilityVisual": {
"additionalProperties": false,
"description": "Visual presentation preferences, such as text size and contrast.",
"properties": {
"color_filter": {
"default": "none",
"enum": [
"none",
"deuteranopia",
"protanopia",
"tritanopia",
"grayscale"
],
"title": "Color Filter",
"type": "string"
},
"color_scheme": {
"default": "no_preference",
"enum": [
"no_preference",
"light",
"dark"
],
"title": "Color Scheme",
"type": "string"
},
"contrast_preference": {
"default": "default",
"enum": [
"default",
"more",
"less"
],
"title": "Contrast Preference",
"type": "string"
},
"dyslexia_friendly_font": {
"default": false,
"title": "Dyslexia Friendly Font",
"type": "boolean"
},
"forced_colors": {
"default": false,
"title": "Forced Colors",
"type": "boolean"
},
"inverted_colors": {
"default": false,
"title": "Inverted Colors",
"type": "boolean"
},
"reduce_transparency": {
"default": false,
"title": "Reduce Transparency",
"type": "boolean"
},
"text_size": {
"default": "default",
"enum": [
"default",
"large",
"xl",
"xxl"
],
"title": "Text Size",
"type": "string"
},
"uses_magnifier": {
"default": false,
"title": "Uses Magnifier",
"type": "boolean"
},
"uses_screen_reader": {
"default": false,
"title": "Uses Screen Reader",
"type": "boolean"
}
},
"title": "AccessibilityVisual",
"type": "object"
},
"EducationLevel": {
"enum": [
"less_than_secondary",
"secondary",
"some_post_secondary",
"vocational_or_associate",
"bachelor",
"graduate"
],
"title": "EducationLevel",
"type": "string"
},
"EmploymentStatus": {
"enum": [
"employed_full_time",
"employed_part_time",
"self_employed",
"unemployed_seeking",
"student",
"homemaker",
"retired",
"unable_to_work",
"other"
],
"title": "EmploymentStatus",
"type": "string"
},
"Gender": {
"description": "Gender options for people.",
"enum": [
"male",
"female",
"non-binary",
"prefer_not_to_say"
],
"title": "Gender",
"type": "string"
},
"Household": {
"enum": [
"single",
"couple_no_kids",
"couple_with_kids",
"single_parent",
"shared_housing",
"adult_with_parents",
"multi_generational"
],
"title": "Household",
"type": "string"
},
"IncomeLevel": {
"enum": [
"lower",
"lower_middle",
"middle",
"upper_middle",
"upper",
"prefer_not_to_say"
],
"title": "IncomeLevel",
"type": "string"
},
"LocaleType": {
"enum": [
"urban",
"suburban",
"small_town",
"rural"
],
"title": "LocaleType",
"type": "string"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/ishlabs-io-public-person-create-request"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.