IP · Blockchain APIs · v2.1
Blockchain primitives, exposed as a documented API.
Deploy smart contracts, mint NFTs, verify ownership and enforce anti-fraud across multiple chains. REST + SDKs, webhooks, structured errors — built to industry API standards.

Features
What you can build with Blockchain APIs.
Smart contracts
Deploy, version and upgrade audited contract templates from a single API.
NFT minting
Single, batch and lazy-mint NFTs with metadata, royalties and transfer rules.
Ownership verification
Cryptographic proof endpoints for assets, tickets and credentials.
Anti-fraud
Built-in fraud signals, replay protection and ticket validation flows.
Multi-chain
EVM-compatible chains and major L2s — abstracted behind one API surface.
Webhooks & events
Subscribe to on-chain events without running your own indexer.
Getting started
Three steps to production.
01
Get API keys
Request access. Receive sandbox + production credentials under mutual NDA.
02
Choose your SDK
Official SDKs in JavaScript, Python, PHP and Java. REST always available.
03
Start building
Issue your first call in sandbox, validate, then promote to production.
Authentication
Bearer tokens over HTTPS.
Authenticate every request with a Bearer API key issued from your AMICA dashboard. Keys are environment-scoped and signed requests are recommended for high-value operations.
- • All requests must be made over TLS 1.2+.
- • API keys are scoped per environment (sandbox / live).
- • Rotate keys at any time from the dashboard — old keys stay valid for 24h.
- • Rate limit: 600 req/min per key, with burst headroom.
GET /v2/blockchain/health HTTP/1.1 Host: api.amicaholding.com Authorization: Bearer sk_live_•••••••••••••••• Content-Type: application/json Idempotency-Key: 8f7c1c7e-2b5e-4f1a-9c91-2d2e1c80a1f2
Endpoints
REST resources.
Base URL https://api.amicaholding.com/v2/blockchain
Deploy an audited contract template to a target chain. Returns a contract object with deployed address.
Request body
{
"template": "ticket_v2",
"chain": "polygon",
"owner": "0x9a3...",
"metadata": { "name": "My Event", "symbol": "EVT" }
}200 OK · response
{
"id": "ctr_01HZ...",
"address": "0xabc...",
"chain": "polygon",
"template": "ticket_v2",
"status": "deployed",
"created_at": "2026-04-26T10:21:00Z"
}Mint single or batch NFTs against an existing contract. Idempotent via Idempotency-Key header.
Request body
{
"contract_id": "ctr_01HZ...",
"to": "0x9a3...",
"metadata_uri": "ipfs://Qm...",
"quantity": 1
}200 OK · response
{
"id": "nft_01HZ...",
"token_id": "1042",
"tx_hash": "0xdef...",
"status": "confirmed"
}Returns the cryptographic proof of current ownership for a given token.
200 OK · response
{
"token_id": "1042",
"owner": "0x9a3...",
"verified": true,
"block": 58213441
}Single-use validation with replay protection. Used by venue scanners.
Request body
{
"token_id": "1042",
"scanner_id": "scn_223",
"nonce": "5e8c..."
}200 OK · response
{
"valid": true,
"redeemed_at": "2026-04-26T19:02:11Z"
}SDK examples
Pick your stack.
import { AmicaClient } from "@amica/sdk";
const amica = new AmicaClient({ apiKey: process.env.AMICA_KEY });
const contract = await amica.blockchain.contracts.deploy({
template: "ticket_v2",
chain: "polygon",
owner: "0x9a3...",
metadata: { name: "My Event", symbol: "EVT" },
});
console.log(contract.address);Error model
Predictable, structured errors.
All errors follow a single JSON envelope with stable machine codes, human-readable messages and a request ID for support.
{
"error": {
"code": "validation_failed",
"message": "Field 'amount' must be a positive integer.",
"request_id": "req_01HZ7K2A..."
}
}| STATUS | CODE | DESCRIPTION |
|---|---|---|
| 400 | validation_failed | Request body did not pass schema validation. |
| 401 | unauthenticated | Missing or invalid API key. |
| 403 | forbidden | Key does not have permission for this resource. |
| 404 | not_found | Resource (contract, token, scanner) does not exist. |
| 409 | conflict | Idempotency conflict or token already redeemed. |
| 429 | rate_limited | Per-key rate limit exceeded. Retry with backoff. |
| 500 | internal_error | Unexpected error. Safe to retry idempotent calls. |
Webhooks
Subscribe to events, not polling.
Each webhook is signed with HMAC-SHA256 in the X-AMICA-Signature header. Verify before processing.
contract.deployed
Sent when a contract finishes deployment on-chain.
nft.minted
Sent on confirmed mint, with token id and tx hash.
nft.transferred
Sent when a token changes ownership.
ticket.redeemed
Sent when a ticket is validated at a venue scanner.
