Customer-facing integration endpoints for ModernEDI tenants. Use this API when your ERP, WMS, integration service, or internal automation needs to receive inbound partner documents as mapped business payloads, send XML/JSON/text source inputs that ModernEDI turns into outbound X12, or inspect transaction activity across the whole exchange.
ModernEDI keeps X12 at the trading-partner boundary instead of making it the shape your internal systems have to speak. Incoming maps translate partner X12 into JSON, XML, HTML, text, or another business format your system can process. Outgoing maps do the reverse: your system sends an XML, JSON, or text source document plus optional runtime params, and ModernEDI selects the matching outgoing map, generates the X12 transaction body, syntax-checks it, and sends it over AS2.
In the mapper editor, generated-X12 trace highlights can connect output values back to the map and source fixtures. XSLT maps trace generated values back to stylesheet instructions, source input values, and test params; JSLT maps use the same trace contract against ModernEDI's wrapper root, where source values live under .input and params under .params, including simple aliases such as let po = .input.
A typical purchase-order-to-invoice round trip is:
GET /v1/mapped-outputs or a mapped-output webhook.POST /v1/mapped-outputs/{id}/ack after your system has accepted the mapped output.POST /v1/as2/reply; ModernEDI applies the matching outgoing map, generates X12, validates it, and sends the reply AS2 message./v1/integration/transactions to confirm the inbound document, mapped output, generated outbound X12, AS2 receipts, 997s, and reply linkage.If you prefer push delivery, configure a per-partner mapped-output webhook in the ModernEDI workspace. ModernEDI sends the same mapped-output message shape to your HTTPS endpoint and automatically acknowledges the queue item only when your endpoint returns a 2xx response. Failed webhook attempts leave the message available through the pull API.
Push webhook requests include X-ModernEDI-Event, X-ModernEDI-Delivery-Id, X-ModernEDI-Timestamp, and X-ModernEDI-Signature. The signature is sha256=<hex hmac> over <timestamp>.<raw request body> using the partner webhook signing secret.
/v1/as2/send is available when your system is first in the chain, such as sending a purchase order or another outbound document that is not replying to a received document. /v1/as2/carbonCopy uses the same outgoing-map selection as the original partner, then sends the generated X12 envelope to a second partner.
Trading partner records can be created before an AS2 profile is known, which lets teams publish and test maps during migration. Use GET /v1/partners to list the partner ids your integration client can send as partnerId for exact outgoing-map selection. These AS2 endpoints require the matched destination partner to have an AS2 connection configured at send time; otherwise ModernEDI rejects the request before delivery.
Key fields in the mapped-output and reply loop:
id: mapped output id used in the /v1/mapped-outputs/{id}/ack path.receiptHandle: token from the latest poll, required when marking mapped output as received.messageId: original inbound AS2 message id; use it as originalMessageId for /v1/as2/reply.transactionKey: transaction identifier within the AS2 message, usually GS06#ST02.mappedOutputKey: unique mapped-output key inside the transaction.purpose: why the map result exists. PROCESSING is a normal mapped output for your application workflow, while ACKNOWLEDGMENT is an automatically generated response document such as a purchase order acknowledgment.payload: mapped document body; parse it according to contentType.extraFields: delivered metadata selected by the incoming runtime map. Incoming maps start with ModernEDI's default metadata set; custom keys are merged with those defaults, and setting a default key to false intentionally omits it.replyToMessageId: present on outbound replies and points back to the inbound message.For a transaction detail view, start with the inbound transaction detail and show the original X12 document, mapped output records, MDN and 997 details, outbound replies from relatedTransactions, and the reply transaction's own MDN and 997 details.
Common failures to handle include missing or invalid API keys, unknown partner names, missing outgoing maps, generated X12 syntax errors, originalMessageId not found, partner AS2 delivery failure, and mapped output returned again because it was not marked received before the visibility timeout.
All customer-facing Integration API endpoints use https://api.modernedi.com. ModernEDI forwards outbound /v1/as2/send, /v1/as2/reply, and /v1/as2/carbonCopy requests into the tenant AS2 runtime after authenticating the same Integration API key used by mapped-output and transaction-viewer endpoints.
Returns the tenant's configured trading partners in workspace order. Use partnerId from this response as the partnerId query parameter on /v1/as2/send, /v1/as2/reply, or /v1/as2/carbonCopy when your integration needs exact partner selection instead of partner-name matching. The returned name is the configured partner name accepted as customer or copyToCustomer; the same id can be sent as copyToPartnerId for the carbon-copy recipient. Partners can appear before their AS2 profile is complete so teams can publish and test maps during onboarding; as2ConnectionConfigured tells you whether live AS2 delivery can use that partner yet.
curl "https://api.modernedi.com/v1/partners" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "partners": [
- {
- "partnerId": 1,
- "name": "Customer One",
- "as2ConnectionConfigured": true,
- "carbonCopyOnly": false,
- "x12": {
- "production": {
- "isaQualifier": "ZZ",
- "isaId": "CUSTOMERONE",
- "gsId": "CUSTOMERONE"
}, - "test": {
- "isaQualifier": "ZZ",
- "isaId": "CUSTOMERONET",
- "gsId": "CUSTOMERONET"
}
}
}, - {
- "partnerId": 2,
- "name": "Broker One",
- "as2ConnectionConfigured": true,
- "carbonCopyOnly": true,
- "x12": {
- "production": {
- "isaQualifier": "ZZ",
- "isaId": "BROKERONE",
- "gsId": "BROKERONE"
}, - "test": {
- "isaQualifier": "ZZ",
- "isaId": "BROKERONET",
- "gsId": "BROKERONET"
}
}
}
]
}Send reply documents and standalone outbound AS2 messages through an existing ModernEDI partner connection.
Sends a standalone outbound document to the configured trading partner. Send the source XML, JSON, or text input as the HTTP request body. ModernEDI looks up the matching outgoing map by partner, X12 version, functional group, transaction set, and request Content-Type, applies that map to generate X12, syntax-checks the generated X12, then sends it through the configured AS2 connection. JSON source maps can use XSLT with Saxon json-to-xml($json) or JSLT. For JSLT, ModernEDI sets the current input . to a wrapper object, so the source document is read through .input paths. Send either customer or partnerId to select the partner; use GET /v1/partners when your integration client needs to discover stable partner ids. If the outgoing map needs extra runtime parameters such as a bill-of-lading number, pallet list, or generated control number, send the JSON envelope shape with input, contentType, and params. The envelope can also include businessKey when your system knows a stable purchase order, shipment, BOL, or other business identifier that should appear on the outbound transaction record. XSLT maps receive those params as top-level stylesheet parameters; JSLT maps receive them under .params. Mapper-editor params files are test fixtures only; live API calls must provide required params in this request envelope.
| test | boolean Default: false When |
| customer | string Example: customer=Customer One Exact configured partner name used to select the outgoing map. Required unless |
| partnerId | integer Example: partnerId=1 Stable partner id returned by |
| x12Version required | string Example: x12Version=4010 X12 version tied to the outgoing map. |
| functionalGroupType required | string Example: functionalGroupType=IN X12 functional group code tied to the outgoing map. |
| transactionGroupType required | integer Example: transactionGroupType=810 X12 transaction set identifier code tied to the outgoing map. |
| Idempotency-Key | string [ 1 .. 128 ] characters Optional caller-generated key for safely retrying outbound requests. Reusing the same key with the same request returns the original result; reusing it with a different request returns an idempotency conflict. |
<PurchaseOrder> <orderNumber>PO-DEMO-1001</orderNumber> <orderDate>20260520</orderDate> <department code="D12">Demo Department</department> <shipTo> <id>DC-DEMO</id> <name>Demo Distribution Center</name> </shipTo> </PurchaseOrder>
{- "success": true,
- "messageId": "<generated-message-id@modernedi>",
- "x12": "ISA*00* *00* *ZZ*SENDERID *ZZ*RECEIVERID *260427*2100*U*00401*000000001*0*T*>~GS*PO*SENDER*RECEIVER*20260427*2100*1*X*004010~ST*850*000000001~BEG*00*SA*PO-DEMO-1001**20260520~REF*DP*D12~N1*ST*Demo Distribution Center*92*DC-DEMO~PO1*1*24*EA*10.00**IN*DEMO-BUY-001~CTT*1~SE*6*000000001~GE*1*1~IEA*1*000000001~"
}Sends a follow-up document such as an ASN or invoice in response to a previously received inbound message. Send the source XML, JSON, or text input as the HTTP request body. ModernEDI looks up the original message by originalMessageId, and uses unambiguous metadata from that inbound transaction to recover an omitted partner selector and x12Version. ModernEDI uses the persisted partnerId, so the reply still selects the same partner after its configured name changes. Transactions without a persisted partner id do not supply inferred partner metadata. An explicit partnerId or customer always overrides inferred partner metadata. If persisted partner ids conflict, ModernEDI does not infer either partner selector. After the partner selector, X12 version, and request Content-Type are known, ModernEDI can also fill omitted functionalGroupType and transactionGroupType when those selectors match exactly one outgoing reply map. ModernEDI then selects the matching outgoing map by partner, X12 version, functional group, transaction set, and request Content-Type, generates and validates X12, then sends the reply through the configured AS2 connection. Send x12Version explicitly when a partner requires reply documents on a different X12 version than the one they send; explicit query parameters override inferred metadata. If multiple reply maps could match, send functionalGroupType and transactionGroupType explicitly. The original inbound document type is not reused as the reply type; these fields identify the generated reply document, such as IN/810 for an invoice. JSON source maps can use XSLT with Saxon json-to-xml($json) or JSLT. For JSLT, ModernEDI sets the current input . to a wrapper object, so the source document is read through .input paths. If the outgoing map needs extra runtime parameters, send the JSON envelope shape with input, contentType, and params; XSLT maps receive those values as top-level stylesheet parameters, JSLT maps read them from .params, and mapper-editor params files are not used as live defaults. Use the envelope's optional businessKey field when the reply has a stable identifier, such as an invoice number, that should be stored on the outbound transaction record.
| test | boolean Default: false When |
| customer | string Example: customer=Customer One Exact configured partner name used to select the outgoing reply map. Optional for |
| partnerId | integer Example: partnerId=1 Stable partner id returned by |
| x12Version | string Example: x12Version=4010 X12 version tied to the outgoing reply map. Optional for |
| functionalGroupType | string Example: functionalGroupType=IN X12 functional group code tied to the outgoing reply map. Optional for |
| transactionGroupType | integer Example: transactionGroupType=810 X12 transaction set identifier code tied to the outgoing reply map. Optional for |
| originalMessageId required | string Example: originalMessageId=msg-850-api Original inbound AS2 message id used to link replies or carbon copies to an inbound flow. |
| Idempotency-Key | string [ 1 .. 128 ] characters Optional caller-generated key for safely retrying outbound requests. Reusing the same key with the same request returns the original result; reusing it with a different request returns an idempotency conflict. |
<PurchaseOrder> <orderNumber>PO-DEMO-1001</orderNumber> <invoice> <number>INV-DEMO-1001</number> <date>20260525</date> </invoice> <totals> <amount>240.00</amount> </totals> </PurchaseOrder>
{- "success": true,
- "messageId": "<generated-message-id@modernedi>",
- "x12": "ISA*00* *00* *ZZ*SENDERID *ZZ*RECEIVERID *260427*2100*U*00401*000000001*0*T*>~GS*IN*SENDER*RECEIVER*20260427*2100*1*X*004010~ST*810*000000001~BIG*20260427*INV-DEMO-1001*20260420*PO-DEMO-1001~IT1*1*24*EA*10.00**IN*DEMO-BUY-001~TDS*24000~SE*5*000000001~GE*1*1~IEA*1*000000001~"
}Sends a generated X12 document to a second partner while preserving context from a previously received inbound message. Send the source XML, JSON, or text input as the HTTP request body. The customer or partnerId query parameter identifies the source/original partner whose outgoing map should generate the X12, and copyToCustomer or copyToPartnerId identifies the destination partner for the copied AS2 envelope. ModernEDI selects the matching outgoing map for that original/source partner, generates and validates X12, then forwards the carbon copy through the configured AS2 connection. Example: to generate an 856 ASN for Retailer One and copy it to Broker One, send customer=Retailer%20One and copyToPartnerId=2; ModernEDI uses Retailer One's outgoing 856 map. copyToCustomer does not select the outgoing map, and neither does copyToPartnerId. JSON source maps can use XSLT with Saxon json-to-xml($json) or JSLT. For JSLT, ModernEDI sets the current input . to a wrapper object, so the source document is read through .input paths. If the outgoing map needs extra runtime parameters, send the JSON envelope shape with input, contentType, and params; the map is still selected by customer/partnerId, not by copyToCustomer or copyToPartnerId. XSLT maps receive params as top-level stylesheet parameters, JSLT maps read them from .params, and mapper-editor params files are test fixtures only and are not read by live carbon-copy calls. The envelope's optional businessKey is recorded on the copied outbound transaction, but it does not affect map selection.
| test | boolean Default: false When |
| customer | string Example: customer=Customer One Exact configured partner name used to select the outgoing map. Required unless |
| partnerId | integer Example: partnerId=1 Stable partner id returned by |
| x12Version required | string Example: x12Version=4010 X12 version tied to the outgoing map. |
| functionalGroupType required | string Example: functionalGroupType=IN X12 functional group code tied to the outgoing map. |
| transactionGroupType required | integer Example: transactionGroupType=810 X12 transaction set identifier code tied to the outgoing map. |
| originalMessageId required | string Example: originalMessageId=msg-850-api Original inbound AS2 message id used to link replies or carbon copies to an inbound flow. |
| copyToCustomer | string Example: copyToCustomer=Broker One Exact configured partner name that receives the carbon-copy AS2 envelope. Required unless |
| copyToPartnerId | integer Example: copyToPartnerId=2 Stable partner id returned by |
| Idempotency-Key | string [ 1 .. 128 ] characters Optional caller-generated key for safely retrying outbound requests. Reusing the same key with the same request returns the original result; reusing it with a different request returns an idempotency conflict. |
<PurchaseOrder> <orderNumber>PO-DEMO-1001</orderNumber> <shipment> <id>ASN-DEMO-1001</id> <date>20260526</date> <time>1015</time> <billOfLading>BOL-DEMO-1001</billOfLading> </shipment> </PurchaseOrder>
{- "success": true,
- "messageId": "<generated-message-id@modernedi>",
- "x12": "ISA*00* *00* *ZZ*SENDERID *ZZ*RECEIVERID *260427*2100*U*00401*000000001*0*T*>~GS*SH*SENDER*RECEIVER*20260427*2100*1*X*004010~ST*856*000000001~BSN*00*ASN0001*20260427*2100~HL*1**S~TD5*B*2*UPSN*M*GROUND~REF*CN*1Z999999~HL*2*1*O~PRF*PO0001~SE*8*000000001~GE*1*1~IEA*1*000000001~"
}Receive mapped inbound documents by polling, or configure per-partner HTTPS push delivery in the workspace.
Returns mapped inbound documents for this tenant and temporarily marks them in progress. If a returned message is not acknowledged before the visibility timeout expires, ModernEDI may return it again on a later poll. Push delivery uses the same queue state: a successful 2xx webhook response acknowledges the message, while a failed push leaves it available through this endpoint. Each request performs a bounded scan. When hasMore is true, send nextCursor as the next request's cursor so polling advances past unavailable or output-free transactions instead of rescanning them. This endpoint runs on the shared ModernEDI API host, not on the tenant AS2 hostname.
| startDate | string <date> Optional inclusive transaction window start date. |
| endDate | string <date> Optional inclusive transaction window end date. |
| cursor | string Opaque continuation cursor returned as |
| limit | integer [ 1 .. 100 ] Default: 10 Maximum number of mapped output messages to return. |
| visibilityTimeoutSeconds | integer [ 5 .. 43200 ] Default: 120 Seconds ModernEDI keeps returned messages hidden from later polls while your system processes them. |
curl "https://api.modernedi.com/v1/mapped-outputs?limit=10&visibilityTimeoutSeconds=120" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "messages": [
- {
- "id": "7e8276c1d55988a4bf7fbf9f8c2d87187a24bd316dfed84bbf64397b8d5b6e4a",
- "receiptHandle": "0af7dd1d-b6a1-4ff9-8ad1-d395de0b97f2",
- "deliveryCount": 1,
- "leasedUntil": "2026-04-29T15:35:00Z",
- "messageId": "msg-850-api",
- "transactionKey": "17#0001",
- "partnerName": "Customer One",
- "partnerId": 1,
- "transactionTimestamp": "2026-04-29T15:33:00Z",
- "transactionSet": {
- "code": "850",
- "description": "Purchase Order"
}, - "controlNumbers": {
- "transaction": "0001",
- "functionalGroup": "17"
}, - "edi": {
- "x12Version": "4010",
- "functionalIdentifierCode": "PO",
- "transactionGroupType": "850",
- "segmentTerminator": "~"
}, - "mapping": {
- "id": 44,
- "type": "ManagedQueueMapping",
- "file": "customer-one-850.jslt",
- "fileSha256Hash": "e6f1b9d537ce2c4a3d60dd1648c7f46e3fb1ce5baad94a6d4e6e1f9554a8f041"
}, - "mappedOutputKey": "17#0001#00001",
- "sequenceNumber": 1,
- "contentType": "application/json",
- "createdAt": "2026-04-29T15:33:04Z",
- "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}, - "extraFields": {
- "destination": "managedQueue"
}, - "payload": "{\"purchaseOrderNumber\":\"PO-100045\",\"shipTo\":{\"name\":\"Main DC\"}}"
}
], - "limit": 10,
- "visibilityTimeoutSeconds": 120,
- "nextCursor": null,
- "hasMore": false
}Confirms that your system has accepted a previously returned mapped output message. Call this after the mapped output has been stored, processed, or queued in your system. The receipt handle must match the latest poll response for this mapped output id.
| id required | string Mapped output id returned by |
| receiptHandle required | string Token from the latest poll response for this mapped output id. |
{- "receiptHandle": "0af7dd1d-b6a1-4ff9-8ad1-d395de0b97f2"
}{- "success": true,
- "id": "7e8276c1d55988a4bf7fbf9f8c2d87187a24bd316dfed84bbf64397b8d5b6e4a",
- "messageId": "msg-850-api",
- "mappedOutputKey": "17#0001#00001",
- "ackedAt": "2026-04-29T15:34:10Z"
}Read-only transaction history, documents, events, acknowledgements, and linked replies.
Returns a pageable transaction history for custom transaction viewers, dashboards, and reconciliation workflows. Outbound replies include replyToMessageId so they can be shown underneath the inbound document they answer.
| startDate | string Example: startDate=2026-03-01T00:00:00.000000000 Optional inclusive window start using ISO local date-time with nanoseconds. |
| endDate | string Example: endDate=2026-03-31T23:59:59.999999999 Optional inclusive window end using ISO local date-time with nanoseconds. |
| cursor | string Cursor from the previous response. |
| limit | integer [ 1 .. 250 ] Default: 50 Maximum number of transactions to return. |
| direction | string Enum: "inbound" "outbound" |
| partnerName | string Case-insensitive persisted partner name. This filters display metadata; transaction access remains scoped by persisted |
| partnerId | integer >= 1 Example: partnerId=1 Filters transactions by the tenant-scoped partner id returned by |
| transactionSet | string Example: transactionSet=850 X12 transaction set code. |
| businessKey | string Example: businessKey=PO-100045 Exact business key value recorded on a transaction. Inbound keys come from the incoming map. Outbound keys are recorded only when |
| messageId | string Exact AS2 message id. |
| replyToMessageId | string Original inbound AS2 message id for outbound replies. |
| transactionControlNumber | string ST02 transaction control number. |
| functionalGroupControlNumber | string GS06 functional group control number. |
curl "https://api.modernedi.com/v1/integration/transactions?startDate=2026-03-01T00:00:00.000000000&endDate=2026-03-31T23:59:59.999999999&direction=inbound&partnerId=1&transactionSet=850&limit=25" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "transactions": [
- {
- "id": "msg-850-api/17#0001",
- "messageId": "msg-850-api",
- "transactionKey": "17#0001",
- "replyToMessageId": null,
- "direction": "inbound",
- "partnerName": "Customer One",
- "partnerId": 1,
- "timestamp": "2026-03-25T18:15:00.000000000",
- "transactionSet": {
- "code": "850",
- "description": "Purchase Order"
}, - "controlNumbers": {
- "transaction": "0001",
- "functionalGroup": "17"
}, - "edi": {
- "x12Version": "4010",
- "functionalIdentifierCode": "PO",
- "transactionGroupType": "850",
- "segmentTerminator": "~"
}, - "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}
}
], - "nextCursor": null,
- "hasMore": false,
- "window": {
- "startDate": "2026-03-01T00:00:00.000000000",
- "endDate": "2026-03-31T23:59:59.999999999"
}
}Returns the transaction summary, downloadable document payloads, mapped inbound outputs, timeline events, and linked outbound reply transactions.
| messageId required | string AS2 message id. |
| transactionKey required | string Transaction key, usually |
curl "https://api.modernedi.com/v1/integration/transactions/msg-850-api/17%230001" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "transaction": {
- "summary": {
- "id": "msg-850-api/17#0001",
- "messageId": "msg-850-api",
- "transactionKey": "17#0001",
- "replyToMessageId": "string",
- "direction": "inbound",
- "partnerName": "Customer One",
- "partnerId": 1,
- "timestamp": "2026-03-25T18:15:00.000000000",
- "transactionSet": {
- "code": "850",
- "description": "Purchase Order"
}, - "controlNumbers": {
- "transaction": "0001",
- "functionalGroup": "17"
}, - "edi": {
- "x12Version": "4010",
- "functionalIdentifierCode": "PO",
- "transactionGroupType": "850",
- "segmentTerminator": "~"
}, - "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}
}, - "mappedOutputs": [
- {
- "id": "mapped-output-1",
- "sequenceNumber": 1,
- "purpose": "PROCESSING",
- "contentType": "application/json",
- "createdAt": "2026-03-25T18:15:01.000000000",
- "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}, - "mapping": {
- "id": 44,
- "type": "ManagedQueueMapping",
- "file": "customer-one-850.jslt",
- "fileSha256Hash": "string",
- "currentFileSha256Hash": "string",
- "versionStatus": "current"
}, - "extraFields": {
- "property1": "string",
- "property2": "string"
}, - "payload": "string"
}
], - "x12": "string",
- "mdn": {
- "messageId": "mdn-850-api",
- "disposition": "processed",
- "report": "string"
}, - "functionalAck": {
- "messageId": "fa-850-api",
- "sent": true,
- "x12": "string",
- "mdn": {
- "messageId": "mdn-850-api",
- "disposition": "processed",
- "report": "string"
}
}, - "technicalAck": {
- "sent": true,
- "x12": "string",
- "timestamp": "2026-03-25T18:15:02.000000000",
- "responseStatusCode": 200,
- "responseBody": "string"
}, - "documents": [
- {
- "id": "raw-x12",
- "type": "x12",
- "label": "Inbound X12",
- "contentType": "application/edi-x12",
- "encoding": "text",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "contentLength": 256,
- "content": "string",
- "metadata": { }
}
], - "events": [
- {
- "id": "transaction",
- "type": "transaction.received",
- "label": "Transaction received",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "details": { }
}
], - "relatedTransactions": [
- { }
]
}
}Returns raw X12, mapped inbound outputs, MDN reports, acknowledgements, and HTTP response bodies recorded for the transaction.
| messageId required | string AS2 message id. |
| transactionKey required | string Transaction key, usually |
curl "https://api.modernedi.com/v1/integration/transactions/msg-850-api/17%230001/documents" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "documents": [
- {
- "id": "raw-x12",
- "type": "x12",
- "label": "Inbound X12",
- "contentType": "application/edi-x12",
- "encoding": "text",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "contentLength": 256,
- "content": "string",
- "metadata": { }
}
]
}Returns a normalized timeline for the transaction, including receipt or send events, mapping events, MDNs, acknowledgements, and linked replies.
| messageId required | string AS2 message id. |
| transactionKey required | string Transaction key, usually |
curl "https://api.modernedi.com/v1/integration/transactions/msg-850-api/17%230001/events" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "events": [
- {
- "id": "transaction",
- "type": "transaction.received",
- "label": "Transaction received",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "details": { }
}
]
}Returns outbound reply transactions linked to an inbound transaction by replyToMessageId. Use this to render replies underneath the inbound document in a custom viewer.
| messageId required | string AS2 message id. |
| transactionKey required | string Transaction key, usually |
curl "https://api.modernedi.com/v1/integration/transactions/msg-850-api/17%230001/related" \ -H "x-api-key: $MODERNEDI_INTEGRATION_API_KEY"
{- "success": true,
- "transaction": {
- "id": "msg-850-api/17#0001",
- "messageId": "msg-850-api",
- "transactionKey": "17#0001",
- "replyToMessageId": "string",
- "direction": "inbound",
- "partnerName": "Customer One",
- "partnerId": 1,
- "timestamp": "2026-03-25T18:15:00.000000000",
- "transactionSet": {
- "code": "850",
- "description": "Purchase Order"
}, - "controlNumbers": {
- "transaction": "0001",
- "functionalGroup": "17"
}, - "edi": {
- "x12Version": "4010",
- "functionalIdentifierCode": "PO",
- "transactionGroupType": "850",
- "segmentTerminator": "~"
}, - "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}
}, - "relatedTransactions": [
- {
- "summary": {
- "id": "msg-850-api/17#0001",
- "messageId": "msg-850-api",
- "transactionKey": "17#0001",
- "replyToMessageId": "string",
- "direction": "inbound",
- "partnerName": "Customer One",
- "partnerId": 1,
- "timestamp": "2026-03-25T18:15:00.000000000",
- "transactionSet": {
- "code": "850",
- "description": "Purchase Order"
}, - "controlNumbers": {
- "transaction": "0001",
- "functionalGroup": "17"
}, - "edi": {
- "x12Version": "4010",
- "functionalIdentifierCode": "PO",
- "transactionGroupType": "850",
- "segmentTerminator": "~"
}, - "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}
}, - "mappedOutputs": [
- {
- "id": "mapped-output-1",
- "sequenceNumber": 1,
- "purpose": "PROCESSING",
- "contentType": "application/json",
- "createdAt": "2026-03-25T18:15:01.000000000",
- "businessKey": {
- "name": "purchaseOrderNumber",
- "value": "PO-100045"
}, - "mapping": {
- "id": 44,
- "type": "ManagedQueueMapping",
- "file": "customer-one-850.jslt",
- "fileSha256Hash": "string",
- "currentFileSha256Hash": "string",
- "versionStatus": "current"
}, - "extraFields": {
- "property1": "string",
- "property2": "string"
}, - "payload": "string"
}
], - "x12": "string",
- "mdn": {
- "messageId": "mdn-850-api",
- "disposition": "processed",
- "report": "string"
}, - "functionalAck": {
- "messageId": "fa-850-api",
- "sent": true,
- "x12": "string",
- "mdn": {
- "messageId": "mdn-850-api",
- "disposition": "processed",
- "report": "string"
}
}, - "technicalAck": {
- "sent": true,
- "x12": "string",
- "timestamp": "2026-03-25T18:15:02.000000000",
- "responseStatusCode": 200,
- "responseBody": "string"
}, - "documents": [
- {
- "id": "raw-x12",
- "type": "x12",
- "label": "Inbound X12",
- "contentType": "application/edi-x12",
- "encoding": "text",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "contentLength": 256,
- "content": "string",
- "metadata": { }
}
], - "events": [
- {
- "id": "transaction",
- "type": "transaction.received",
- "label": "Transaction received",
- "timestamp": "2026-03-25T18:15:00.000000000",
- "details": { }
}
], - "relatedTransactions": [
- { }
]
}
]
}