---
title: "Register a contract ABI"
method: POST
path: "/v1/org/contract-abis"
tags: ["Contract ABIs"]
---

# Register a contract ABI

`POST /v1/org/contract-abis`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/org/contract-abis`
- Auth: HTTP bearer

Upload an org-scoped ABI for transaction decoding. Owner/admin only.

## Request body

- CreateContractAbiRequest
  - `chain` string, required
  - `contract_address` string, required: Contract address, or Solana program id when interface_kind is solana_idl
  - `abi_json` union, required: EVM ABI JSON array, or Solana IDL object when interface_kind is solana_idl
    - object[]
    - object
  - `name` string
  - `description` string
  - `token_decimals` integer
  - `interface_kind` 'evm_abi' | 'solana_idl'

## Response `201`

ABI registered

- ContractAbiResponse
  - `id` string, uuid
  - `org_id` string, uuid
  - `chain` string
  - `contract_address` string
  - `abi_json` union: EVM ABI JSON array, or Solana IDL object
    - object[]
    - object
  - `name` string
  - `description` string
  - `token_decimals` integer
  - `interface_kind` 'evm_abi' | 'solana_idl'
  - `created_by` string, uuid
  - `created_at` string, date-time
  - `updated_at` string, date-time

## Other responses

- `400`: Invalid request
- `401`: Authentication required or invalid
- `403`: Insufficient permissions
- `409`: Resource already exists or conflict

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/5fa0918f3b41?raw)
