Properties
| Name | Type | Description |
|---|---|---|
| id | integer | |
| name | string | Human-readable project identifier. Returns "{pivotOf}-{pivotPublicIndex}" for pivot children (e.g. "123-2") and the quote ID string for normal projects. |
| source_language | string | |
| target_languages | array | |
| word_count | integer | |
| word_count_analysis | object | |
| pricing_analysis | objectnull | Line-item breakdown of how the quote price was assembled. Components are self-describing (kind, label, unit, …) so the UI renders one list regardless of what the quote contains — translation lines, DT |
| documents | object | |
| coupon_code | object | |
| price | object | |
| price_without_discount | object | |
| status | object | |
| delivery_at | integer | Unix epoch time |
| estimated_delivery_at | string | Estimated time string |
| completed_on | string | the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z |
| is_certified | boolean | |
| certificationType | string | |
| usState | string | |
| is_continuous | boolean | |
| is_evaluation | boolean | |
| is_interpretation | boolean | |
| interpretation | object | |
| alternative_prices | object | |
| is_upgrade_quote | boolean | |
| upgraded_to_quote_id | integer | If this evaluation project was upgraded, the ID of the upgrade quote. |
| continuous_project_type | string | |
| subjects | array | |
| valid_until | integer | Unix epoch time. Available only if status is `pending`. |
| reference_code | string | |
| client | object | User entity for Client. This is only given when project is requested with detailed=true |
| callback_url | string | Callback URL to notify when project status changed. |
| custom | object | Custom data provided while creating a new project. |
| styleguides | object | |
| progress | object | |
| vendors | object | Per-target-language vendors joined or working in the project. Returned when `with[]=vendors`. Customer dashboards receive a redacted shape (first name, surname initial, avatar, is_proofreader); exclus |
| created_at | integer | Unix epoch time |
| method | object | |
| targetOrganization | string | |
| services | array | |
| is_same_day_delivery | boolean | Same day setting for Evaluation files |
| is_wage_level_selected | boolean | Indicates whether an additional wage level selection has been requested for Evaluation files. |
| is_soc_selected | boolean | Indicates whether an additional Standard Occupational Classification (SOC) selection has been requested for Evaluation files. |
| ask_dtp_service | boolean | Indicates whether DTP service is available and should be offered to the user based on corporate pricing availability. |
| translation_addon | object | |
| show_dtp_info | boolean | Indicates whether DTP info link should be shown based on corporate status and file page counts. |
| ask_post_edit_service | boolean | Indicates whether Post-Edit service is available and should be offered to the user based on corporate pricing availability. |
| notes | string | User note for the project optional |
| errors | array | A list of errors. Visible when creating a project and uploading your documents at the same time, in case of multiple errors. |
| links | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/motaword/json-schema/motaword-project-schema.json",
"title": "Project",
"x-generated": "2026-10-28",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/motaword-api-openapi.yml#/components/schemas/Project",
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"description": "Human-readable project identifier. Returns \"{pivotOf}-{pivotPublicIndex}\" for pivot children (e.g. \"123-2\") and the quote ID string for normal projects.",
"type": "string"
},
"source_language": {
"type": "string"
},
"target_languages": {
"type": "array",
"items": {
"type": "string"
}
},
"word_count": {
"type": "integer",
"format": "int64"
},
"word_count_analysis": {
"type": "object",
"properties": {
"base": {
"type": "number",
"format": "int64"
},
"exclusion": {
"type": "number",
"format": "int64"
},
"duplicate": {
"type": "number",
"format": "int64"
},
"tm": {
"type": "number",
"format": "int64"
},
"dtp": {
"type": "number",
"format": "int64"
},
"final": {
"type": "number",
"format": "int64"
}
}
},
"pricing_analysis": {
"type": [
"object",
"null"
],
"description": "Line-item breakdown of how the quote price was assembled. Components\nare self-describing (kind, label, unit, …) so the UI renders one list\nregardless of what the quote contains — translation lines, DTP, fees,\ninterpretation hours and discounts can all coexist in the same array.\nService-specific raw values that don't fit the generic component shape\nare exposed via `meta` for UI affordances like badges/tooltips.\n",
"properties": {
"currency": {
"type": "string",
"description": "Currency for `total` and every `components[*].amount`."
},
"total": {
"type": "number",
"format": "float",
"description": "Sum of all component amounts (negative discounts subtract)."
},
"components": {
"type": "array",
"description": "Renderable line items in display order.",
"items": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "Component type so the UI can pick styling/icons.",
"enum": [
"rate_x_quantity",
"flat_fee",
"minimum_fee",
"discount",
"surcharge"
]
},
"label": {
"type": "string",
"description": "Primary line text (e.g. \"On-Site Consecutive interpretation\")."
},
"quantity": {
"type": "number",
"format": "float",
"description": "Present for `rate_x_quantity` (e.g. hours, words)."
},
"unit": {
"type": "string",
"description": "Unit for `quantity` (e.g. \"hour\", \"word\")."
},
"unit_price": {
"type": "number",
"format": "float",
"description": "Per-unit price for `rate_x_quantity` components."
},
"amount": {
"type": "number",
"format": "float",
"description": "Contribution to `total` (negative for discounts)."
},
"note": {
"type": [
"string",
"null"
],
"description": "Optional secondary line (e.g. \"1h 2m requested · 3h minimum applied\")."
}
}
}
},
"meta": {
"type": "object",
"description": "Free-form raw values that don't fit the generic component shape\nbut the UI may want for badges/tooltips. Contents vary by quote\ntype — the UI cherry-picks fields it understands.\n",
"additionalProperties": true
}
}
},
"documents": {
"type": "object",
"properties": {
"documents": {
"type": "array",
"items": {
"$ref": "#/$defs/Document"
}
},
"meta": {
"$ref": "#/$defs/PagingMeta"
}
}
},
"coupon_code": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"id": {
"type": "number"
}
}
},
"price": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"format": "float"
},
"currency": {
"type": "string",
"default": "usd"
},
"base_amount": {
"type": "number",
"format": "float"
},
"base_currency": {
"type": "string",
"default": "usd"
},
"usd_amount": {
"description": "USD is our base pricing currency. If `currency` is different, this will help.",
"type": "number",
"format": "float"
}
}
},
"price_without_discount": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"format": "float"
},
"currency": {
"type": "string",
"default": "usd"
},
"base_amount": {
"type": "number",
"format": "float"
},
"base_currency": {
"type": "string",
"default": "usd"
},
"usd_amount": {
"description": "USD is our base pricing currency. If `currency` is different, this will help.",
"type": "number",
"format": "float"
}
}
},
"status": {
"$ref": "#/$defs/ProjectStatus"
},
"delivery_at": {
"description": "Unix epoch time",
"type": "integer",
"format": "int64"
},
"estimated_delivery_at": {
"description": "Estimated time string",
"type": "string"
},
"completed_on": {
"type": "string",
"format": "date-time",
"description": "the date-time notation as defined by RFC 3339, section 5.6, for example, 2017-07-21T17:32:28Z"
},
"is_certified": {
"type": "boolean"
},
"certificationType": {
"type": "string"
},
"usState": {
"type": "string"
},
"is_continuous": {
"type": "boolean"
},
"is_evaluation": {
"type": "boolean"
},
"is_interpretation": {
"type": "boolean"
},
"interpretation": {
"$ref": "#/$defs/InterpretationRequest"
},
"alternative_prices": {
"$ref": "#/$defs/InterpretationPrices"
},
"is_upgrade_quote": {
"type": "boolean"
},
"upgraded_to_quote_id": {
"type": "integer",
"description": "If this evaluation project was upgraded, the ID of the upgrade quote."
},
"continuous_project_type": {
"type": "string"
},
"subjects": {
"type": "array",
"items": {
"type": "string"
}
},
"valid_until": {
"description": "Unix epoch time. Available only if status is `pending`.",
"type": "integer",
"format": "int64"
},
"reference_code": {
"type": "string"
},
"client": {
"description": "User entity for Client. This is only given when project is requested with detailed=true",
"$ref": "#/$defs/User"
},
"callback_url": {
"type": "string",
"description": "Callback URL to notify when project status changed."
},
"custom": {
"type": "object",
"description": "Custom data provided while creating a new project."
},
"styleguides": {
"type": "object",
"properties": {
"styleguides": {
"type": "array",
"items": {
"$ref": "#/$defs/Document"
}
},
"meta": {
"$ref": "#/$defs/PagingMeta"
}
}
},
"progress": {
"$ref": "#/$defs/Progress"
},
"vendors": {
"description": "Per-target-language vendors joined or working in the project. Returned when `with[]=vendors`. Customer dashboards receive a redacted shape (first name, surname initial, avatar, is_proofreader); exclusive API clients receive the full User object.",
"$ref": "#/$defs/ProjectVendors"
},
"created_at": {
"description": "Unix epoch time",
"type": "integer",
"format": "int64"
},
"method": {
"$ref": "#/$defs/QuoteMethod"
},
"targetOrganization": {
"type": "string"
},
"services": {
"type": "array",
"items": {
"type": "string"
}
},
"is_same_day_delivery": {
"description": "Same day setting for Evaluation files",
"type": "boolean"
},
"is_wage_level_selected": {
"description": "Indicates whether an additional wage level selection has been requested for Evaluation files.",
"type": "boolean"
},
"is_soc_selected": {
"description": "Indicates whether an additional Standard Occupational Classification (SOC) selection has been requested for Evaluation files.",
"type": "boolean"
},
"ask_dtp_service": {
"description": "Indicates whether DTP service is available and should be offered to the user based on corporate pricing availability.",
"type": "boolean"
},
"translation_addon": {
"$ref": "#/$defs/TranslationAddon"
},
"show_dtp_info": {
"description": "Indicates whether DTP info link should be shown based on corporate status and file page counts.",
"type": "boolean"
},
"ask_post_edit_service": {
"description": "Indicates whether Post-Edit service is available and should be offered to the user based on corporate pricing availability.",
"type": "boolean"
},
"notes": {
"description": "User note for the project optional",
"type": "string"
},
"errors": {
"type": "array",
"description": "A list of errors. Visible when creating a project and uploading your documents at the same time, in case of multiple errors.",
"items": {
"$ref": "#/$defs/Error"
}
},
"links": {
"$ref": "#/$defs/ProjectLinks"
}
},
"$defs": {
"AdditionalErrorData": {
"type": "object",
"properties": {
"file_id": {
"type": "string"
},
"file_size": {
"type": "integer"
},
"additional_info": {
"type": "string"
}
}
},
"Analysis": {
"type": "object",
"properties": {
"base": {
"$ref": "#/$defs/WordCountResult"
},
"duplicate": {
"type": "array",
"items": {
"$ref": "#/$defs/WordCountResult"
}
},
"matches": {
"$ref": "#/$defs/TMResult"
},
"mtm": {
"type": "array",
"items": {
"$ref": "#/$defs/MTResult"
}
},
"styles": {
"type": "array",
"items": {
"$ref": "#/$defs/StyleResult"
}
},
"style_density": {
"type": "array",
"items": {
"$ref": "#/$defs/StyleDensityResult"
}
},
"exclusion": {
"type": "array",
"items": {
"type": "string"
}
},
"previously_billed": {
"type": "array",
"items": {
"$ref": "#/$defs/WordCountResult"
}
},
"detected_language": {
"type": "string"
},
"columns_summary": {
"$ref": "#/$defs/ColumnsSummaryResult"
}
}
},
"ColumnsSummaryResult": {
"type": "object",
"properties": {
"sheets": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"recommendations": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"delimiter": {
"type": "string"
},
"enclosure": {
"type": "string"
}
}
},
"Document": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"project_id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string"
},
"data": {
"type": "string",
"format": "byte",
"description": "Base64-encoded content of your file. Transient field used while uploading a file via JSON content."
},
"scheme": {
"type": "object"
},
"services": {
"type": "array",
"items": {
"type": "string"
}
},
"subject": {
"type": "string"
},
"file_type": {
"type": "string",
"description": "Extension of the file"
},
"source_language": {
"type": "string"
},
"target_languages": {
"type": "array",
"items": {
"type": "string"
}
},
"word_count": {
"type": "integer",
"format": "int64"
},
"process_status": {
"$ref": "#/$defs/FileProcessStatus"
},
"review_in_manual_editor": {
"type": "boolean"
},
"manual_files": {
"type": "array",
"items": {
"$ref": "#/$defs/ManualFile"
}
},
"translation_due_at": {
"description": "Unix epoch — when this manual file's translation is due. Same across all languages on the file.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"translation_is_overdue": {
"description": "True when the manual translation deadline has passed.",
"type": "boolean"
},
"proofreading_due_at": {
"description": "Unix epoch — when this manual file's proofreading is due. Same across all languages on the file.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"proofreading_is_overdue": {
"description": "True when the manual proofreading deadline has passed.",
"type": "boolean"
},
"search_score": {
"type": "number",
"format": "float"
},
"has_custom_package": {
"type": "boolean"
},
"uploaded_at": {
"description": "Unix epoch time",
"type": "integer",
"format": "int64"
},
"analysis": {
"$ref": "#/$defs/Analysis"
},
"links": {
"$ref": "#/$defs/DocumentLinks"
},
"method": {
"$ref": "#/$defs/ProcessMethod"
},
"has_embedded_image": {
"type": "boolean"
},
"may_contain_watermark": {
"type": "boolean"
},
"price": {
"description": "Price override for custom file/service or subscription item. Not editable for usual translation operations. Only visible for updates, not reads.",
"type": "object",
"properties": {
"amount": {
"type": "number",
"format": "float"
},
"currency": {
"type": "string",
"default": "USD"
}
}
},
"content": {
"description": "Text content of the file. Only available for style guide files when 'content' is included in the 'with' parameter.",
"type": "string"
}
}
},
"DocumentLinks": {
"allOf": [
{
"$ref": "#/$defs/LinksMeta"
},
{
"type": "object",
"properties": {
"download": {
"$ref": "#/$defs/Href"
},
"project": {
"$ref": "#/$defs/Href"
},
"thumbnail": {
"description": "Thumbnail preview URL of the document. If doc has a page structure, this is probably only the first page.",
"$ref": "#/$defs/Href"
},
"preview-box": {
"description": "Box.com URL to preview this document. This URL is temporary. You need to re-fetch the file to refresh the Box.com preview URL. Available for documents and style guides.",
"$ref": "#/$defs/Href"
},
"preview-pdf": {
"description": "This is our fallback preview URL, providing a PDF file. Use this file to embed in your PDF viewer. Available for documents and style guides.",
"$ref": "#/$defs/Href"
},
"preview-pdf-viewer": {
"description": "This is another version of preview-pdf, this time pointing to a preview viewer page on front application. This page requires authentication and comes with its own PDF viewer.",
"$ref": "#/$defs/Href"
},
"editors": {
"type": "object",
"additionalProperties": {
"description": "MotaWord editor link for this file, in this language code.",
"$ref": "#/$defs/Href"
}
},
"admins": {
"type": "object",
"additionalProperties": {
"description": "MotaWord admin link for this file, in this language code.",
"$ref": "#/$defs/Href"
}
},
"progress": {
"description": "Progress endpoint URL for this file",
"$ref": "#/$defs/Href"
},
"strings": {
"description": "Strings endpoint URL for this file",
"$ref": "#/$defs/Href"
},
"highlighted": {
"description": "Highlighted source preview URL for this file",
"$ref": "#/$defs/Href"
}
}
}
]
},
"DocumentProgress": {
"type": "object",
"description": "Per-language progress for a single document. Keys are common language codes.",
"properties": {
"languages": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/ProgressSub"
}
}
}
},
"Error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"http_code": {
"type": "integer",
"format": "int32"
},
"name": {
"type": "string"
},
"message": {
"type": "string"
},
"help": {
"type": "string"
},
"extra_data": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/AdditionalErrorData"
},
"description": "Additional structured data related to the error."
}
}
},
"FileProcessStatus": {
"description": "Where a file is in analysis. `waiting` and `retrying` mean the word count is not final yet, so a zero word_count carries no meaning until this reads `processed` or one of the failure states.",
"type": "string",
"enum": [
"waiting",
"processed",
"retrying",
"duplicate",
"unsupported",
"too_small",
"too_large",
"drive_error"
]
},
"Href": {
"type": "object",
"properties": {
"href": {
"type": "string"
}
}
},
"InterpretationModalityPrice": {
"description": "Coupon-applied, currency-converted price for one interpretation modality, with a matching breakdown.",
"type": "object",
"properties": {
"amount": {
"type": "number",
"format": "float",
"description": "Local-currency amount after coupon."
},
"currency": {
"type": "string",
"description": "Local currency the customer pays in."
},
"base_amount": {
"type": "number",
"format": "float",
"description": "Base-currency amount after coupon."
},
"base_currency": {
"type": "string",
"description": "Platform base currency (typically usd)."
},
"analysis": {
"$ref": "#/$defs/InterpretationPricingAnalysis"
}
}
},
"InterpretationPrices": {
"description": "Cross-modality price preview for an interpretation quote. The same\nrequest priced under each modality (on_site / video / phone), with\nany active coupon applied. Lets the wizard show all three side-by-side\nwithout creating a quote per modality.\n",
"type": [
"object",
"null"
],
"properties": {
"on_site": {
"$ref": "#/$defs/InterpretationModalityPrice"
},
"video": {
"$ref": "#/$defs/InterpretationModalityPrice"
},
"phone": {
"$ref": "#/$defs/InterpretationModalityPrice"
}
}
},
"InterpretationPricingAnalysis": {
"description": "Detailed breakdown of how the interpretation price for one modality was computed.",
"type": [
"object",
"null"
],
"properties": {
"time_mode": {
"type": "string",
"description": "shared (one window applied to every day) | per_day (entry per date)"
},
"requested_hours": {
"type": "number",
"format": "float",
"description": "Hours the customer asked for, before the minimum-hours floor."
},
"minimum_hours": {
"type": "number",
"format": "float",
"description": "Modality minimum hours floor applied per day."
},
"billable_hours": {
"type": "number",
"format": "float",
"description": "Hours actually billed after the minimum-hours floor."
},
"per_hour_rate": {
"type": "number",
"format": "float",
"description": "Per-hour rate used (DB rate or Config fallback)."
},
"currency": {
"type": "string"
},
"travel_fee": {
"type": "number",
"format": "float",
"description": "Per-day travel fee (on-site only; 0 otherwise)."
},
"travel_fee_total": {
"type": "number",
"format": "float",
"description": "travel_fee × day_count."
},
"day_count": {
"type": "integer"
},
"hours_per_day": {
"type": "number",
"format": "float",
"description": "Shared-mode hours per day. 0 in per_day mode."
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": [
"string",
"null"
]
},
"start_time": {
"type": [
"string",
"null"
]
},
"end_time": {
"type": [
"string",
"null"
]
},
"requested_hours": {
"type": "number",
"format": "float"
},
"billable_hours": {
"type": "number",
"format": "float"
}
}
}
}
}
},
"InterpretationRequest": {
"type": "object",
"description": "Extra details for an interpretation project. Stored verbatim as the contents of a placeholder quote_file.",
"properties": {
"setting": {
"type": "string",
"enum": [
"on_site",
"video",
"phone"
]
},
"mode": {
"type": "string",
"enum": [
"consecutive",
"simultaneous"
]
},
"subject_matter": {
"type": "string",
"enum": [
"deposition",
"uscis_interview",
"hearing",
"mediation",
"parent_meeting",
"other"
]
},
"subject_details": {
"type": "string"
},
"court_certified": {
"type": "boolean"
},
"context_note": {
"type": "string",
"maxLength": 2000,
"description": "Free-text brief the customer writes for the interpreter (e.g. patient\ncontext, sensitive terms, names). Editable by the client on the project\ndetail page for every interpretation setting; read-only to vendors. For\nvideo/AI it is mirrored into the live session metadata.\n"
},
"domain": {
"type": "string",
"maxLength": 50,
"description": "Domain tag for the brief (medical/legal/business/education/social/general)."
},
"date_selection_type": {
"type": "string",
"enum": [
"single",
"range",
"multiple"
]
},
"dates": {
"type": "array",
"items": {
"type": "string",
"format": "date"
}
},
"start_time": {
"type": "string",
"description": "Daily start time in HH:MM (24h), applied to each selected date."
},
"end_time": {
"type": "string",
"description": "Daily end time in HH:MM (24h), applied to each selected date."
},
"time_mode": {
"type": "string",
"description": "Controls how the interpreter's hours are computed across days:\n- `shared` (default): top-level start_time/end_time apply to every selected date.\n- `per_day`: each entry in `daily_times` carries its own start_time/end_time;\n pricing sums per-entry hours instead of multiplying a single shift by the day count.\nMissing/null defaults to `shared` so existing quotes keep their pricing behavior.\n",
"enum": [
"shared",
"per_day"
]
},
"daily_times": {
"type": "array",
"description": "Used only when `time_mode` is `per_day`. Each entry overrides the shared\nstart_time/end_time for that specific date. Entries missing start_time\nor end_time contribute 0 hours and are ignored for pricing.\n",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string",
"format": "date"
},
"start_time": {
"type": "string",
"description": "Per-day start time in HH:MM (24h)."
},
"end_time": {
"type": "string",
"description": "Per-day end time in HH:MM (24h)."
}
}
}
},
"timezone": {
"type": "string",
"description": "IANA-style short code for the time zone the start/end times are expressed in. Required for video and phone interpretation.",
"enum": [
"eastern",
"central",
"mountain",
"pacific",
"alaska",
"hawaii"
]
},
"location": {
"type": "object",
"properties": {
"address": {
"type": "string",
"description": "Street address (Address Line 1). For example, \"123 Main St\"."
},
"address_line_2": {
"type": "string",
"description": "Optional second address line such as an apartment, suite, unit, or floor."
},
"city": {
"type": "string"
},
"state": {
"type": "string",
"description": "USPS two-letter state abbreviation (e.g. \"NY\", \"CA\")."
},
"zip_code": {
"type": "string",
"description": "US ZIP code. Accepts 5-digit (\"10001\") or ZIP+4 (\"10001-1234\")."
},
"country": {
"type": "string",
"description": "Two-letter ISO country code (e.g. \"US\", \"CA\", \"GB\"). Inferred from the address by the AI / Places autocomplete; surfaces in dispatch + pricing rules."
}
}
},
"contact": {
"type": "object",
"description": "Person who will be present at the on-site location or who we will dial for phone interpretation. Required for on-site and phone settings; video sessions don't carry a contact (the video link routes everyone in).",
"properties": {
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"email": {
"type": "string"
}
}
},
"video_conference": {
"type": "object",
"description": "How the video session's meeting link is provided. Only meaningful when\nsetting=video. `mode` chooses the source — auto-generated by us\n(Google Meet), customer-supplied at booking, or shared later.\n",
"properties": {
"mode": {
"type": "string",
"enum": [
"motaword",
"customer",
"later"
]
},
"url": {
"type": "string",
"description": "Customer-supplied meeting URL when `mode=customer`."
},
"meeting_id": {
"type": "string",
"description": "Optional meeting ID (e.g. Zoom). Only used when `mode=customer`."
},
"passcode": {
"type": "string",
"description": "Optional meeting passcode/password. Only used when `mode=customer`."
}
}
},
"chat": {
"type": "array",
"description": "Persisted AI conversation history for this interpretation request. Append-only — one entry per turn (user or assistant). Captured at Step 1 Continue / Step 2 Next / order-now checkpoints, so the admin view can show what the customer asked and how the AI replied. The transcript is also kept in localStorage on the customer side; this field is the server-side mirror.",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string",
"enum": [
"user",
"assistant"
]
},
"text": {
"type": "string"
},
"kind": {
"type": "string",
"description": "Prompt schema that produced this turn. interpretation_search_turn = Step 1, interpretation_detail_turn = Step 2."
},
"hidden": {
"type": "boolean",
"description": "True for synthetic user turns the UI sends (e.g. Step 2 mount trigger). Display them in admin with a \"synthetic\" tag so the operator knows the customer didn't type them."
},
"openai_response_id": {
"type": "string",
"description": "OpenAI Responses API response_id for assistant turns. Lets the operator open the corresponding thread in the OpenAI dashboard for deep debugging without needi
# --- truncated at 32 KB (60 KB total) ---
# Full source: https://artifacts.apis.io/motaword/json-schema/motaword-project-schema.json
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
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/motaword-project"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.