Evidence Bridge Integration Guide
Quick start for both paths: connect from the NexArt dashboard, publish a mapping profile, then post source execution payloads server-side to the Evidence Bridge ingestion endpoint.
Human path
- Sign in to nexart.io.
- Open Dashboard, then Integrations.
- Choose AI Execution, Operational Execution, or Custom JSON.
- Click Connect.
- Review the source mapping profile in Evidence Bridge.
- Preview the mapping using synthetic or sample JSON.
- Publish the mapping profile.
- Send an execution payload.
- Review mapping, eligibility, CER, Node attestation and timestamp status.
Dashboard to Bridge connection
At nexart.io, in Dashboard, then Integrations, a user selects an integration and clicks Connect. The control plane then:
- verifies the authenticated NexArt user
- creates a short-lived Bridge handoff token
- opens bridge.nexart.io with the selected template
- the Bridge verifies the handoff
- the Bridge creates a tenant-scoped session
- the Bridge instantiates or opens the selected draft mapping profile
See Authentication for the token properties.
Machine path
- Create or use an existing NexArt API key.
- Create and publish a mapping profile.
- Keep the API key server-side.
- POST a source execution payload to the Bridge ingestion endpoint.
- Use an idempotency key where supported.
- Inspect the returned result and evidence status.
- Independently verify the resulting NexArt evidence.
Ingestion endpoint
POST https://bridge.nexart.io/api/v1/ingest/{profileId}/{revision}The published profile page in Evidence Bridge shows the exact path for your profile and revision.
curl -X POST "https://bridge.nexart.io/api/v1/ingest/$PROFILE_ID/$PROFILE_REVISION" \
-H "Authorization: Bearer $NEXART_API_KEY" \
-H "Content-Type: application/json" \
--data @execution.jsonimport os
import requests
response = requests.post(
f"https://bridge.nexart.io/api/v1/ingest/{os.environ['PROFILE_ID']}/{os.environ['PROFILE_REVISION']}",
headers={
"Authorization": f"Bearer {os.environ['NEXART_API_KEY']}",
"Content-Type": "application/json",
},
json={
# source execution payload
},
)
response.raise_for_status()
print(response.json())Never place a real API key in documentation, source control or client-side code. Read NEXART_API_KEY from your secret or environment configuration.
Profile and result endpoints
POST /api/v1/profiles/preview
POST /api/v1/profiles
POST /api/v1/profiles/{profileId}/{revision}/publish
GET /api/v1/profiles
GET /api/v1/profiles/{profileId}/{revision}
GET /api/v1/results/{resultId}A Bridge result exposes the mapping, evidence and attestation state for one ingested payload:
{
"resultId": "...",
"sourceRawDigest": "sha256:...",
"sourceCanonicalDigest": "sha256:...",
"profileHash": "sha256:...",
"selectedTarget": "consequential-execution-v1",
"targetEligibility": { "eligible": true },
"mappedEvent": { },
"provenance": [ ],
"cer": { "certificateHash": "sha256:..." },
"localVerification": { },
"nodeAttestation": { }
}Field values are illustrative. Additional fields may be present depending on the target and attestation state.
Troubleshooting
401. Invalid API key, revoked API key, expired or invalid human handoff, already redeemed handoff, or invalid Bridge session.
403. Missing required write scope, Bridge entitlement unavailable, or account not usable.
404. The resource belongs to another tenant, or the profile or revision does not exist. Cross-tenant resource enumeration is deliberately hidden.
409. The same idempotency key was reused with different source content.
Target ineligible. The mapping succeeded but required evidence semantics are missing.
Node attestation failed. The local CER can remain valid even if Node attestation failed. Retry should reuse the same persisted CER rather than recreating it.
Timestamp PRESENT_NOT_VERIFIED. The Node returned timestamp evidence, but the Bridge verifier does not currently have an approved TSA trust chain configured, or verification did not complete successfully.