Skip to main content

API Reference

6. API Reference

Authentication

Secured API requests require a Bearer token. Generate a Lab, Certification, or Production API key from Connections → Business systems → API connections. Lab keys use sk_lab_, Certification keys use sk_cert_, and Production keys use sk_live_. Each key can address only its own lane; historical sk_test_ keys resolve to Certification. The document-type registry is public for capability discovery.

GET /api/v1/transactions
Authorization: Bearer sk_cert_YOUR_CERTIFICATION_KEY
Content-Type: application/json
Security: Never expose your API key in client-side code or public repositories. If a key is compromised, revoke it immediately from the API connections page.

REST Endpoints

MethodEndpointDescription
POST/api/v1/documents/outboundSend typed JSON or exact raw X12/EDIFACT through an authorized account integration.
POST/api/v1/documents/inboundSubmit raw partner-to-customer EDI; unmatched integrations are held for Connect setup.
POST/api/v1/documents/batchSubmit up to 100 typed or raw outbound documents with per-item results.
GET/api/v1/documents/:documentIdRead the canonical multi-stage document receipt.
GET/api/v1/documents/:documentId/payloadPull raw, structured, typed document, or approved mapped payload views.
GET/api/v1/document-typesDiscover recognized X12/EDIFACT types and honest raw/typed capabilities.
GET/api/v1/transactionsList your recent transactions (newest first), scoped to your API key.
GET/api/v1/transactions/:idGet a single transaction you own, with full status.
POST/api/v1/parseParse a raw X12 interchange into structured JSON plus diagnostics.
POST/api/v1/validateValidate a raw X12 interchange against envelope rules; returns diagnostics.

Trading partners are created in the dashboard (Connections → Partners) or the developer console; pass the resulting partnerId to the API.

Example: list recent failed transactions:

curl -X GET "https://api.signaledi.com/v1/transactions?status=FAILED&limit=50" \
  -H "Authorization: Bearer sk_cert_YOUR_CERTIFICATION_KEY" \
  -H "Content-Type: application/json"

Code Samples

Complete request examples in multiple languages. Click the tabs to switch between cURL, Node.js, Python, and PHP.

Authentication
Include your API key as a Bearer token in the Authorization header.
curl -X GET "https://api.signaledi.com/v1/transactions" \
  -H "Authorization: Bearer sk_cert_YOUR_CERTIFICATION_KEY" \
  -H "Content-Type: application/json"
Send an Outbound Document
Send an outbound EDI document as JSON to the versioned developer API. Returns 202 with a document id.
curl -X POST "https://api.signaledi.com/v1/documents/outbound" \
  -H "Authorization: Bearer sk_cert_YOUR_CERTIFICATION_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: po-1001-attempt-1" \
  -d '{"partnerId":"your-partner-id","environment":"CERTIFICATION","documentTypeCode":"850","payload":{"purchaseOrderNumber":"PO-1001","lines":[{"sku":"SKU-1","quantity":1,"unitPrice":10}]}}'
Get Transaction Status
Retrieve a single transaction by ID.
curl -X GET "https://api.signaledi.com/v1/transactions/txn_abc123" \
  -H "Authorization: Bearer sk_cert_YOUR_CERTIFICATION_KEY"
Webhook Verification
Verify webhook signatures using HMAC-SHA256.
# SignalEDI signs the string "<X-SignalEDI-Timestamp>.<rawBody>" with HMAC-SHA256.
# The X-SignalEDI-Signature header is "sha256=<hex>". Verify with:
SIGNED="$TIMESTAMP.$BODY"
echo -n "$SIGNED" | openssl dgst -sha256 -hmac "whsec_YOUR_SECRET"

Rate Limits

Endpoint GroupLimitWindow
/api/auth (login)Class-basedfive failures per account; separate per-IP credential and support-request abuse guards
/api/agents (autonomous)Lower autonomous tierper minute per actor
/api/v1/transactionsUp to ~120 reqper minute per API key
/api/v1/parse and /api/v1/validate120 reqper minute per API key
/api/v1/documents/outbound and /api/v1/documents/inbound120 reqper minute per API key
/api/v1/documents/batch60 reqper minute per API key (up to 100 documents per call)
/api/v1/documents/{documentId} and …/payload120 reqper minute per API key
/api/v1/document-types (public registry)300 reqper minute per client IP
/api/chat (AI assistant)Up to ~30 reqper minute
/api/upload30 req per user, 90 req per networkper minute (in addition to the general /api/ budget)
All other /api/ routes300 reqper minute per actor

Numbers above are typical ceilings; the actual cap that applies to your request is the lower of the per-endpoint ceiling and your plan-tier ceiling (see Acceptable Use). Rate-limit response headers (when present): X-RateLimit-Remaining and X-RateLimit-Reset (Unix timestamp). On a 429, retry after the time indicated in the response body or Retry-After header.

Webhook Setup

Configure a webhook URL in Settings → Webhooks to receive lane-matched document lifecycle updates without polling. Create separate Certification and Production endpoints. Lab uses a signed one-shot probe and never creates a persistent delivery.

SignalEDI sends a POST request to your URL with the following JSON payload:

{
  "id": "evt_01HXYZ",
  "type": "document.accepted.v1",
  "version": "1",
  "createdAt": "2026-09-24T14:00:00.000Z",
  "documentId": "doc_out_01HXYZ",
  "direction": "CUSTOMER_TO_PARTNER",
  "environment": "CERTIFICATION",
  "partnerId": "partner_demo",
  "standard": "x12",
  "documentTypeCodes": ["850"],
  "status": "ACCEPTED",
  "links": {
    "self": "/v1/documents/doc_out_01HXYZ",
    "payload": "/v1/documents/doc_out_01HXYZ/payload"
  }
}

Versioned events include document.accepted.v1, document.available.v1, document.transport_delivered.v1, document.delivery_failed.v1, document.acknowledgement_received.v1, and document.held.v1. Default events contain metadata and authorized pull links, not document contents. Deliveries include X-SignalEDI-Timestamp, X-SignalEDI-Event, and X-SignalEDI-Delivery-ID headers. document.acknowledgement_received.v1 fires for a partner 997, 999, or EDIFACT CONTRL linked to a document admitted through the v1 API; TA1 and 277 responses do not produce a webhook.

Legacy events are still emitted and subscribable; they are signed over the raw body only and carry no timestamp header: transaction.completed, transaction.failed, document.partner_ack, document.ack_overdue, file.processed, mapping.draft.ready, onboarding.certification.requested, onboarding.certified, onboarding.live, incident.opened, incident.resolved, pa.sla.escalation, pa.sla.breach, compliance.risk.detected, compliance.check.resolved.

Verify webhook authenticity by checking the X-SignalEDI-Signature header (HMAC-SHA256 over timestamp + "." + rawBody using your webhook signing secret; reject deliveries whose timestamp skew exceeds ~5 minutes). Deduplicate on X-SignalEDI-Delivery-ID and confirm the environment header matches the endpoint lane.

Still have questions?

Our support team typically responds within a few hours during business hours.

Contact support

© 2026 SignalEDI Inc. All rights reserved.