Botpress Bot CURD Operations End Point https://backend.versalence.online/api/v2/agent-builder/ext IndiaMART uses the same x-api-key already provided by Versalence. Its existing read access is retained, with partner lifecycle permissions added server-side. No replacement key is required. Use the authorised workspace ID supplied with that key. Call these APIs from your backend; do not expose the key in a browser or mobile application. IndiaMART submits seller details, prompt-variable values and knowledge sources. Versalence retains the private indiamart.json template, validates and stores the submission, and creates a dedicated Botpress bot after review approval. The template JSON and its internal configuration are not shared with the partner. Release status 30 October 2026 Capability Availability CREATE submission and operation-status polling Deployed. Review-gated creation verified live. Internal review, approve and reject APIs Deployed. Approval was verified through the server service; administrator HTTP/browser acceptance remains outstanding. Review OFF for new submissions Implemented and covered by automated tests; not newly live-tested in this release. The deployed setting remains ON. UPDATE and DELETE Planned; no callable endpoints yet. Proposed contracts are documented below for integration planning. Cancel/retry APIs, per-workspace review switch, dashboard review screen and activation readiness Pending implementation. Successful creation currently produces a draft, not an active agent. Review OFF queues creation automatically; it does not establish activation or conversational readiness. A webhook being configured does not mean the bot is active. Authentication and identifiers Header Required Description x-api-key Yes A valid, active key bound to an active partner and the requested workspace. Idempotency-Key CREATE: yes 8–128 ASCII letters, digits or . _ : -. Generate one key for each intended submission; reuse it only to replay the identical request. Accept: application/json Recommended Responses are JSON. Content-Type For request bodies CREATE uses multipart/form-data. Let the HTTP client generate its boundary. CREATE requires agents.create; status polling requires operations.read. A key's workspace, partner identity and scopes are all enforced. Sharing an owner label does not grant access. Another partner's operation is not accessible even when its ID is known. Identifier Meaning workspaceId The authorised Botpress workspace supplied by Versalence. clientReferenceId Your stable seller/account reference, unique within your partner and workspace. operationId The asynchronous request to track through review and execution. agentId The vCX agent identity. It can be allocated before a Botpress bot exists. It is not a Botpress bot ID. externalSourceId Your stable identifier for a document/table or website, used to identify results and warnings and, in the planned UPDATE API, source changes. Create an agent: available POST /workspaces/{workspaceId}/agent-requests Validates the input, freezes the selected template and stores an encrypted revision and uploaded files on the server. With review ON, no Botpress creation starts until approval. Acceptance is asynchronous: an HTTP 202 is not a completed bot. Path parameters Name Type Required Description workspaceId string Yes The workspace authorised for the key. Multipart form fields Name Type Required Description payload JSON encoded as a text field Yes The object described below. Do not send the entire request as application/json. Each declared uploadField File part For each document Exactly one file per declared field. No undeclared files or reused file parts. Payload fields Name Type Required Description clientReferenceId string Yes 1–128 characters; starts with a letter or digit, followed by letters, digits or . _ : -. template.name string Yes Use the assigned name, for example indiamart, without .json. It must be visible to this workspace. template.version string No An optional version supplied by Versalence. Currently the first 12 hexadecimal characters of the template SHA-256, not a date or semantic version. If supplied it must match the available template. Omit to resolve the current template at submission. The resolved template is frozen for execution. agent.name string Yes 1–100 characters after trimming. agent.description string or null No Trimmed; currently truncated to 1,000 characters. Keep within that length to avoid truncation. vcx.vcxAttachment string Yes Exactly STANDALONE. vcx.deploymentMode string Yes Exactly DEDICATED_BOT. Other vCX properties and tenant-attachment fields are rejected. variables object of strings When the template declares variables Provide exactly the template's declared variable names and values. Versalence supplies this contract separately. knowledge object No May contain documents, websites, notes and JSON text. knowledge.documents array No Declarations for uploaded files; see below. knowledge.websites array No Website sources with explicit crawl scope; maximum 20. knowledge.notes string or null No Rich-text notes converted to safe text/Markdown for knowledge ingestion. Maximum 200,000 characters after conversion. knowledge.json string or null No A string containing valid JSON, converted into labelled knowledge text. Limit 2,000,000 characters; transformed text must also fit. This field does not create a table. Prompt variables A template prompt such as You represent {{Brand Name}}. receives the value from variables["Brand Name"]. For example, "Brand Name": "Example Steel" produces You represent Example Steel. Names are case-sensitive. Values must be strings, satisfy the template's required-variable checks, be at most 10,000 characters, and contain neither {{ nor }}. Unknown variables are rejected. These are prompt substitutions, not arbitrary Botpress environment/configuration overrides. There is currently no external template-discovery endpoint. Obtain the allowed name, variable names and any version pin from Versalence. The example below illustrates a template declaring Brand Name; use the actual assigned variable contract. Document declarations and JSON-to-table conversion Field Type Required Description externalSourceId string Yes 1–128 characters; same character rules as clientReferenceId. Unique across documents and websites in the submission. uploadField string Yes The exact multipart file-field name, for example file_catalogue. convertToTable boolean Yes for every .json file true creates a Botpress table attached to the bot's knowledge base; false ingests the JSON as a knowledge document. On non-JSON files omit it or send false. The JSON flag is a literal boolean: true or false. Missing, null, "true", "yes" and 1 are invalid for a .json upload. Filename extension matching is case-insensitive. This requirement also applies to planned UPDATE add/replace operations. Accepted extensions: .pdf .txt .md .json .jsonl .csv. Maximum 50 files; 50 MiB per file (52,428,800 bytes), 200 MiB total (209,715,200 bytes). Empty files and duplicate sanitised filenames are rejected. Multipart text fields have a 16 MiB limit. JSONL and CSV uploads are knowledge documents; this API's table-conversion option is for .json only. Table JSON must be a single object or a non-empty array of objects, with at most 19 input fields across the rows. A wrapper object is treated as one row, not automatically unwrapped into its nested array. Nested values become JSON text. Additional row-size validation applies; oversized rows are rejected. Conversion creates a table source, not a second duplicate document source. Example table file: catalogue.json [ { "itemCode": "DEMO-001", "description": "Sample product", "unit": "piece" }, { "itemCode": "DEMO-002", "description": "Another sample product", "unit": "piece" } ] Website declarations Field Type Required Description externalSourceId string Yes Your unique source reference. url string Yes The full public HTTP/HTTPS URL, including its intended path. Private/local addresses and URLs containing credentials are not accepted. scope string Yes page for the supplied page; site for the supported crawl starting at that URL. The starting path is preserved, not silently changed to the domain root. To import the seller page, send https://www.24by7.com/sewa-enterprises-newdelhi/ with scope: "page". Website import is asynchronous. A successful submission does not establish that every page was crawled or indexed; inspect the eventual source results and warnings. Example payload.json { "clientReferenceId": "im-seller-demo-001", "template": { "name": "indiamart" }, "agent": { "name": "Example Steel Assistant", "description": "Dedicated seller assistant" }, "vcx": { "vcxAttachment": "STANDALONE", "deploymentMode": "DEDICATED_BOT" }, "variables": { "Brand Name": "Example Steel" }, "knowledge": { "notes": "
Answer seller questions using the supplied knowledge.
", "json": "{\"supportLanguage\":\"English\"}", "documents": [ { "externalSourceId": "catalogue", "uploadField": "file_catalogue", "convertToTable": true }, { "externalSourceId": "company-data", "uploadField": "file_company", "convertToTable": false }, { "externalSourceId": "terms", "uploadField": "file_terms" } ], "websites": [ { "externalSourceId": "seller-page", "url": "https://www.24by7.com/sewa-enterprises-newdelhi/", "scope": "page" } ] } } Curl Examples use a POSIX shell. Replace the workspace and read the API key from your secure server environment. Save the payload above as payload.json and supply your actual files. Remove both a declaration and its corresponding file part if it is not needed. curl --request POST \ 'https://backend.versalence.online/api/v2/agent-builder/ext/workspaces/YOUR_WORKSPACE_ID/agent-requests' \ --header "x-api-key: $VCX_API_KEY" \ --header 'Idempotency-Key: im-demo-001-create-20261030' \ --header 'Accept: application/json' \ --form 'payload=