API Reference
TaaS API
One API call generates a cryptographic certificate for any event in your app. Certificates are self-verifiable and legally admissible under ESIGN Act and eIDAS.
Authentication
All requests (except GET /verify) require an API key sent in the X-API-Key header. Keys are prefixed with taas_ and are only shown once at creation — store them securely.
X-API-Key: taas_your_api_key_here Base URL
https://api.trytaas.com https://sandbox.trytaas.com Errors
TaaS returns standard HTTP status codes. Error bodies always include a detail field.
| Code | Meaning | Cause |
|---|---|---|
| 401 | Unauthorized | Missing, malformed, or invalid API key |
| 404 | Not Found | Certificate ID does not exist |
| 409 | Conflict | Email already registered |
| 422 | Validation Error | Empty content, invalid content_type |
{
"detail": "API key inválida"
} /v1/certify Generates a cryptographic certificate for any content or event. The certificate includes a SHA-256 hash, an ISO-8601 timestamp, and an RSA-PSS-SHA256 signature — all self-verifiable without contacting TaaS.
Request
| Field | Type | Required | Description |
|---|---|---|---|
| content | string | Yes | The content to certify — JSON stringified, plain text, or a document hash. Cannot be empty. |
| content_type | string | No | Category label. One of: text, document, event. Default: text. |
curl -X POST https://api.trytaas.com/v1/certify \
-H "X-API-Key: taas_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"content": "{\"event\":\"payment_confirmed\",\"amount\":499.00,\"buyer_id\":\"usr_abc123\",\"order_id\":\"ord_xyz789\"}",
"content_type": "event"
}' Response 200 OK
{
"cert_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"content_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"issued_at": "2026-06-02T16:42:03.821456+00:00",
"issuer": "TaaS / Cews Investments Corp",
"certificate": { ... }
} | Field | Type | Description |
|---|---|---|
| cert_id | UUID | Unique certificate identifier. Use this to verify. |
| content_hash | string | SHA-256 of the submitted content. Verifiable offline. |
| issued_at | ISO-8601 | UTC timestamp with microsecond precision. |
| issuer | string | Certificate issuer name (TaaS / Cews Investments Corp). |
| certificate | object | Full certificate object. See Certificate object. |
/v1/verify/{cert_id} Verifies a certificate's cryptographic signature. Public endpoint — no API key required. Share this URL with auditors, lawyers, or counterparties to prove a certificate is authentic.
Path parameter
| Parameter | Type | Description |
|---|---|---|
| cert_id | UUID | The certificate ID returned by POST /certify. |
curl https://api.trytaas.com/v1/verify/3fa85f64-5717-4562-b3fc-2c963f66afa6 Response 200 OK
{
"cert_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"valid": true,
"content_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"issued_at": "2026-06-02T16:42:03.821456+00:00",
"issuer": "TaaS / Cews Investments Corp",
"status": "active"
} If valid is false, the certificate data was tampered with after issuance. Returns 404 if the cert_id does not exist.
/v1/certificates Returns a paginated list of certificates issued by the authenticated client, ordered by most recent first.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 50 | Number of results to return. |
| offset | integer | 0 | Number of results to skip (for pagination). |
curl "https://api.trytaas.com/v1/certificates?limit=10&offset=0" \
-H "X-API-Key: taas_your_api_key_here" Response 200 OK
[
{
"cert_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"content_hash": "sha256:e3b0c44298fc1c14...",
"content_type": "event",
"created_at": "2026-06-02T16:42:03.821456+00:00",
"status": "active"
}
] /v1/admin/clients Creates a new client account and returns an API key. The API key is only shown once — store it immediately. This endpoint is used during onboarding and does not require an existing API key.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Client or company name. |
| string | Yes | Contact email. Must be unique. | |
| tier | string | No | One of: starter, pro, enterprise. Default: starter. |
curl -X POST https://api.trytaas.com/v1/admin/clients \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Corp",
"email": "[email protected]",
"tier": "starter"
}' Response 200 OK
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Acme Corp",
"email": "[email protected]",
"tier": "starter",
"rate_limit_day": 100,
"created_at": "2026-06-02T16:42:03.821456+00:00",
"api_key": "taas_Kx9mN2pQrL7vT4wY..."
} Certificate object
The certificate field in a certify response contains the full signed object. It is self-contained — a third party can verify the signature offline using the embedded public key, without contacting TaaS.
{
"version": "1.0",
"cert_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"issuer": "TaaS / Cews Investments Corp",
"issued_to": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"content": {
"hash": "sha256:e3b0c44298fc1c149afbf4c8996fb924...",
"algorithm": "SHA-256",
"type": "event"
},
"timestamp": {
"value": "2026-06-02T16:42:03.821456+00:00",
"standard": "ISO-8601-UTC"
},
"signature": {
"value": "base64-encoded-rsa-pss-sha256-signature...",
"algorithm": "RSA-PSS-SHA256",
"public_key": "-----BEGIN PUBLIC KEY-----\nMIIBIjAN..."
},
"verification": {
"payload_format": "TAAS-V1|hash={hash}|ts={ts}|issuer={issuer}",
"self_verifiable": true
}
} Offline verification
To verify a certificate without calling the API, reconstruct the signed payload and verify the RSA-PSS-SHA256 signature using the embedded public key:
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding
import base64
cert = { ... } # your certificate object
payload = (
f"TAAS-V1"
f"|hash={cert['content']['hash']}"
f"|ts={cert['timestamp']['value']}"
f"|issuer={cert['issuer']}"
).encode()
public_key = serialization.load_pem_public_key(
cert["signature"]["public_key"].encode()
)
signature = base64.b64decode(cert["signature"]["value"])
public_key.verify(
signature,
payload,
padding.PSS(mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH),
hashes.SHA256(),
)
print("Certificate is valid") Crypto standards
Signature
RSA-PSS-SHA256
2048-bit RSA keys, PSS padding with SHA-256. Resistant to existential forgery.
Content hashing
SHA-256
Content is hashed before signing. The original content is never transmitted to TaaS in stored form.
Timestamps
ISO-8601 UTC
Microsecond precision. The timestamp is included in the signed payload — it cannot be altered without invalidating the signature.
Legal compliance
ESIGN Act + eIDAS
Certificates are admissible as evidence under US ESIGN Act and EU eIDAS Regulation.
Rate limits
Limits apply per API key, per calendar day (UTC). Exceeding the limit returns 429 Too Many Requests.
| Tier | Certs / day | Price |
|---|---|---|
| Sandbox | 100 | Free — no credit card |
| Starter | 100 | $49/mo · 10,000 certs/month |
| Pro | 10,000 | $149/mo · 100,000 certs/month |
| Enterprise | 100,000 | $499/mo · Unlimited |