Functions
Create a Function
Create a new function of any type (transform, analyze, route, join, split, payload_shaping, or enrich).
Each function type serves different purposes:
- Transform: Extract structured data from unstructured documents
- Analyze: Analyze the visual context of documents to extract information
- Route: Route data to different functions based on conditions
- Join: Combine data from multiple sources
- Split: Split data into multiple outputs
- Payload Shaping: Customize and transform input payloads using JMESPath expressions
- Enrich: Enhance data with semantic search against collections
Authorization
API Key x-api-key<token>
Authenticate using API Key in request header
In: header
Request Body
application/json
functionName*string
Name of function. Must be UNIQUE on a per-environment basis.
displayName?string
Display name of function. Human-readable name to help you identify the function.
type*string
The type of the function.
Value in
"transform" | "route" | "split" | "join" | "analyze" | "payload_shaping" | "enrich"tags?array<string>
Array of tags to categorize and organize functions.
outputSchemaName*string
Name of output schema object.
outputSchema*object
Desired output structure defined in standard JSON Schema convention.
tabularChunkingEnabled?boolean
Whether tabular chunking is enabled on the pipeline. This processes tables in CSV/Excel in row batches, rather than all rows at once.
Response Body
application/json
curl -X POST "https://api.bem.ai/v2/functions" \ -H "Content-Type: application/json" \ -d '{ "name": "extract-freight-tender-summary", "type": "payload_shaping", "description": "Transform complex freight load tender payloads into simplified summary data by extracting load reference, calculating total weight, and consolidating unique origins and submitters", "shapingSchema": "{ \"load_reference\": tenders[0].loadReference, \"total_weight_tons\": tenders[].weightTons | sum(@), \"origins\": tenders[].origin | unique(@), \"submitters\": tenders[].submitter.name | unique(@) }" }'{
"functionID": "string",
"functionName": "string",
"versionNum": 0,
"type": "transform",
"usedInWorkflows": [
[
{
"workflowID": "w_1234567890",
"workflowName": "My Workflow",
"currentVersionNum": 1,
"usedInWorkflowVersionNums": [
1,
2,
3
]
}
]
],
"displayName": "string",
"tags": [
"billing",
"finance",
"automated"
],
"audit": {
"functionCreatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
},
"functionLastUpdatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
},
"versionCreatedBy": {
"userActionID": "string",
"userID": "string",
"userEmail": "string",
"apiKeyName": "string",
"emailAddress": "string",
"createdAt": "2019-08-24T14:15:22Z"
}
},
"outputSchemaName": "Freight Load Schema",
"outputSchema": {
"type": "object",
"required": [
"tenders"
],
"properties": {
"tenders": {
"type": "array",
"items": {
"type": "object",
"required": [
"loadReference",
"origin",
"destination",
"weightTons",
"loadType",
"desiredDeliveryDate",
"bidSubmissionDeadline",
"submitter"
],
"properties": {
"origin": {
"type": "string",
"description": "The starting point of the shipment."
},
"loadType": {
"type": "string",
"description": "The type of goods being shipped."
},
"submitter": {
"type": "object",
"required": [
"name",
"position",
"contactInfo"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the person submitting the tender."
},
"position": {
"type": "string",
"description": "Position of the submitter within their company."
},
"contactInfo": {
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Email address of the submitter."
},
"phone": {
"type": "string",
"description": "Phone number of the submitter."
}
}
}
}
},
"weightTons": {
"type": "number",
"description": "The weight of the load in tons."
},
"destination": {
"type": "string",
"description": "The endpoint of the shipment."
},
"loadReference": {
"type": "string",
"description": "Unique identifier for the load tender."
},
"desiredDeliveryDate": {
"type": "string",
"format": "date",
"description": "The preferred date for the shipment to be delivered."
},
"bidSubmissionDeadline": {
"type": "string",
"format": "date",
"description": "The deadline for submitting bids."
}
}
}
}
}
},
"emailAddress": "eml_2c9AXFXHwiaL4vPXDTOS171OJ8T@pipeline.bem.ai",
"tabularChunkingEnabled": false
}