ARCFORM

API SERVICES

OpenAPI Specification

v1.3.0

Machine-readable API definition for the Arcform DID.comms API. Compatible with Swagger UI, Postman, RapidAPI, and all OpenAPI 3.0 tools.

GET /api/functions/openApiSpecPublic endpoint — no auth, CORS-enabled

Endpoints

POST/v1/did/activate
POST/v1/channel/send
POST/v1/did/status
POST/v1/verify
POST/v1/webhooks/register
POST/v1/webhooks/list
POST/v1/webhooks/delete

Version

1.3.0

Format

OpenAPI 3.0.3

Auth

Bearer + API Key

Server

arcform-api.com

Full Specification

{
  "openapi": "3.0.3",
  "info": {
    "title": "Arcform API",
    "description": "Walletless, developer-first API for sovereign-grade decentralised identity (DID) management and encrypted DIDComm v2 messaging.",
    "version": "1.3.0",
    "contact": {
      "name": "Arcform Support",
      "url": "https://arcform-api.com/support"
    },
    "license": {
      "name": "MIT",
      "url": "https://opensource.org/licenses/MIT"
    },
    "termsOfService": "https://arcform-api.com/terms"
  },
  "servers": [
    {
      "url": "https://arcform-api.com",
      "description": "Production"
    }
  ],
  "security": [
    {
      "BearerAuth": [],
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/did/activate": {
      "post": {
        "operationId": "activateIdentity",
        "summary": "Activate a sovereign identity",
        "description": "Creates a new DID, generates an API key, and returns a cryptographic fingerprint. No wallet setup required.",
        "tags": [
          "Identity"
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "Optional friendly label",
                    "example": "My First Identity"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Identity activated",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key_id": {
                      "type": "string"
                    },
                    "did": {
                      "type": "string"
                    },
                    "fingerprint": {
                      "type": "string"
                    },
                    "plan": {
                      "type": "string"
                    },
                    "usage": {
                      "type": "object"
                    },
                    "metadata_policy": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/v1/channel/send": {
      "post": {
        "operationId": "sendEnvelope",
        "summary": "Send a sealed envelope",
        "description": "Encrypts and sends a DIDComm envelope. Metadata is stripped, payload is sealed E2E, and delivery is routed through mediator hops.",
        "tags": [
          "Messaging"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "to",
                  "message"
                ],
                "properties": {
                  "to": {
                    "type": "string",
                    "description": "Recipient API key (ak_...)",
                    "example": "ak_recipient_key"
                  },
                  "message": {
                    "type": "string",
                    "description": "Message content",
                    "example": "Hello — this is a sealed envelope"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Envelope delivered",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "envelope_id": {
                      "type": "string"
                    },
                    "envelope_hash": {
                      "type": "string"
                    },
                    "encryption": {
                      "type": "object"
                    },
                    "routing": {
                      "type": "object"
                    },
                    "metadata_policy": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request"
          },
          "401": {
            "description": "Unauthorized"
          },
          "429": {
            "description": "Rate limited / quota exceeded"
          }
        }
      }
    },
    "/v1/did/status": {
      "post": {
        "operationId": "getIdentityStatus",
        "summary": "Get identity status",
        "description": "Returns current identity status, usage counters, plan tier, and webhook count.",
        "tags": [
          "Identity"
        ],
        "responses": {
          "200": {
            "description": "Status returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "did": {
                      "type": "string"
                    },
                    "api_key_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "plan": {
                      "type": "string"
                    },
                    "usage": {
                      "type": "object"
                    },
                    "webhooks": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/v1/verify": {
      "post": {
        "operationId": "verifyEnvelope",
        "summary": "Verify envelope delivery",
        "description": "Verify delivery status, routing integrity, and bubble lifecycle of an envelope by its hash. Supports single hash or batch (up to 50).",
        "tags": [
          "Verification"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "envelope_hash": {
                    "type": "string",
                    "description": "Single envelope hash"
                  },
                  "envelope_hashes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Batch of envelope hashes (max 50)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Verification result",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "verified",
                        "partial",
                        "orphaned",
                        "unverified"
                      ]
                    },
                    "envelope_hash": {
                      "type": "string"
                    },
                    "proof_checksum": {
                      "type": "string"
                    },
                    "integrity": {
                      "type": "object"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/register": {
      "post": {
        "operationId": "registerWebhook",
        "summary": "Register a webhook endpoint",
        "description": "Register a URL to receive sealed envelope delivery events. Returns an HMAC secret for signature verification.",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "Your HTTPS endpoint URL"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "default": [
                      "envelope.received"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook registered",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "webhook_id": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "secret": {
                      "type": "string",
                      "description": "HMAC secret (whsec_...)"
                    },
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/v1/webhooks/list": {
      "post": {
        "operationId": "listWebhooks",
        "summary": "List registered webhooks",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Webhooks listed",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "api_key_id": {
                      "type": "string"
                    },
                    "webhooks": {
                      "type": "array",
                      "items": {
                        "type": "object"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/webhooks/delete": {
      "post": {
        "operationId": "deleteWebhook",
        "summary": "Delete a webhook",
        "tags": [
          "Webhooks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "webhook_id"
                ],
                "properties": {
                  "webhook_id": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Webhook deleted"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Session token from login"
      },
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-DID-API-Key",
        "description": "API key (ak_...)"
      }
    }
  },
  "tags": [
    {
      "name": "Identity",
      "description": "DID activation and status"
    },
    {
      "name": "Messaging",
      "description": "Sealed envelope delivery"
    },
    {
      "name": "Verification",
      "description": "Envelope proof-of-transit"
    },
    {
      "name": "Webhooks",
      "description": "Real-time event delivery"
    }
  ]
}