---
title: "Submit input with permit"
method: POST
path: "/v0/agreements/{id}/input"
tags: ["Using Agreements"]
---

# Submit input with permit

`POST /v0/agreements/{id}/input`

## Request

- Base URL: `https://test-api.shodai.network`
- URL: `https://test-api.shodai.network/v0/agreements/{id}/input`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Submits a signed input to a deployed agreement. The input ID and values must match an input defined by the agreement JSON, and the signer must be allowed by that input.

## Path parameters

- `id` string, required

## Request body

- ProcessInputRequest: Signed input submission for a deployed agreement.
  - `inputId` string, required: Input ID defined in the agreement JSON.
  - `values` object, required: Business values submitted for this input.
  - `signer` string, required: Wallet address that signed the EIP-712 input permit.
  - `deadline` integer, required: Unix timestamp in seconds when the input permit expires.
  - `signature` PermitSignature, required: EIP-712 signature parts.
    - `v` integer, required: Recovery identifier.
    - `r` string, required: Signature r value.
    - `s` string, required: Signature s value.

## Response `201`

Created input record.

- object
  - `data` AgreementInputRecord, required
    - `submissionId` string: Stable API submission identity, when CNS submitted the transaction.
    - `operationLifecycle` 'intent_recorded' | 'transaction_ready' | 'confirmed' | 'completed' | 'failed': Durable permit-operation lifecycle.
    - `agreementId` string, required: Hosted agreement record ID associated with this input.
    - `agreementAddress` string, required: Deployed agreement address associated with this input.
    - `chainId` integer, required: Chain ID for the deployed agreement.
    - `inputId` string, required: Input ID submitted to the agreement.
    - `userId` string: Platform user ID associated with the submission, when available.
    - `blockNumber` integer: Block number for the mined input transaction, when available.
    - `payload` string, required: Encoded input payload retained by the API.
    - `values` object, required: Business values submitted with the input.
    - `txHash` string, required: Transaction hash for the input submission.
    - `error` string: Error message when the input submission failed.
    - `createdAt` string, date-time, required: Input record creation timestamp.
    - `updatedAt` string, date-time, required: Input record update timestamp.
    - `status` 'PENDING' | 'FINALIZED' | 'FAILED', required: Input submission status.
  - `meta` ResponseMeta, required
    - `apiVersion` string, required
    - `requestId` string, required: Correlation ID for support and debugging.

## Other responses

- `400`: Invalid signed input payload.
- `401`: Missing or invalid API credential.
- `402`: The authenticated Shodai account has paid_required entitlement mode for the requested scope. Per-call x402 settlement is not implemented. Treat this as an entitlement/operator issue.
- `403`: The credential lacks the required OAuth scope, the account lacks entitlement, or the account cannot access the resource.
- `404`: Agreement not found.

---

[API](https://skmtc.dev/shodai/apis/agreements-api.md) · [All operations](https://skmtc.dev/shodai/apis/agreements-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shodai/apis/agreements-api/revisions/0ac329d0e9a0?raw)
