> ## Documentation Index
> Fetch the complete documentation index at: https://docs.credprotocol.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submission Status

> Check the status of a reputation feedback submission

## Overview

Poll this endpoint to track the progress of an on-chain reputation submission. Returns the current status, computed scores (once available), and transaction details after confirmation.

<Info>
  This is a free endpoint (0 Cred Units). Poll every 5–10 seconds until the status is `confirmed` or `failed`.
</Info>

## Authentication

| Method       | Header                               | Cost         |
| ------------ | ------------------------------------ | ------------ |
| API Token    | `Authorization: Bearer YOUR_API_KEY` | 0 Cred Units |
| x402 Payment | `X-PAYMENT: <signed_payment>`        | Free         |

## Path Parameters

<ParamField path="agent_id" type="integer" required>
  ERC-8004 agent ID. Must be >= 1.
</ParamField>

<ParamField path="submission_id" type="string" required>
  Submission UUID returned by the [submit endpoint](/api-reference/agents/submit-feedback)
</ParamField>

## Response

<ResponseField name="submission_id" type="string">
  UUID tracking this submission
</ResponseField>

<ResponseField name="agent_id" type="integer">
  The ERC-8004 agent ID
</ResponseField>

<ResponseField name="status" type="string">
  Current status: `pending`, `scoring`, `uploading`, `submitting`, `confirmed`, or `failed`
</ResponseField>

<ResponseField name="scores" type="object">
  Computed scores (available after the `scoring` phase)
</ResponseField>

<ResponseField name="scores.credit_score" type="integer">
  Andromeda 1.0 credit score (300–1000)
</ResponseField>

<ResponseField name="scores.sybil_score" type="integer">
  Sybil risk score (0–100)
</ResponseField>

<ResponseField name="scores.identity_count" type="integer">
  Number of verified identity attestations
</ResponseField>

<ResponseField name="transactions" type="array">
  On-chain transaction details per tag (available after confirmation)
</ResponseField>

<ResponseField name="transactions[].tag1" type="string">
  Feedback tag (e.g., `creditScore`)
</ResponseField>

<ResponseField name="transactions[].transaction_hash" type="string">
  Transaction hash on Base
</ResponseField>

<ResponseField name="transactions[].block_number" type="integer">
  Block number of confirmation
</ResponseField>

<ResponseField name="transactions[].gas_used" type="integer">
  Gas used by the transaction
</ResponseField>

<ResponseField name="feedback_uri" type="string">
  IPFS URI of the off-chain feedback JSON
</ResponseField>

<ResponseField name="error" type="string">
  Error message if status is `failed`
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO 8601 timestamp when the submission was created
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO 8601 timestamp when the submission was last updated
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.credprotocol.com/api/v2/agents/18/reputation/status/550e8400-e29b-41d4-a716-446655440000" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const agentId = 18;
  const submissionId = '550e8400-e29b-41d4-a716-446655440000';

  const response = await fetch(
    `https://api.credprotocol.com/api/v2/agents/${agentId}/reputation/status/${submissionId}`,
    { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
  );

  const data = await response.json();
  console.log(`Status: ${data.status}`);
  if (data.scores) {
    console.log(`Credit Score: ${data.scores.credit_score}`);
  }
  ```

  ```python Python theme={null}
  import requests

  agent_id = 18
  submission_id = '550e8400-e29b-41d4-a716-446655440000'

  response = requests.get(
      f'https://api.credprotocol.com/api/v2/agents/{agent_id}/reputation/status/{submission_id}',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )

  data = response.json()
  print(f"Status: {data['status']}")
  if data.get('scores'):
      print(f"Credit Score: {data['scores']['credit_score']}")
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "submission_id": "550e8400-e29b-41d4-a716-446655440000",
    "agent_id": 18,
    "status": "confirmed",
    "scores": {
      "credit_score": 782,
      "sybil_score": 12,
      "identity_count": 3
    },
    "transactions": [
      {
        "tag1": "creditScore",
        "transaction_hash": "0xabc123...",
        "block_number": 12345678,
        "gas_used": 85000
      },
      {
        "tag1": "sybilRisk",
        "transaction_hash": "0xdef456...",
        "block_number": 12345679,
        "gas_used": 82000
      }
    ],
    "feedback_uri": "ipfs://QmXyz...",
    "error": null,
    "created_at": "2026-02-27T15:30:00Z",
    "updated_at": "2026-02-27T15:30:45Z"
  }
  ```

  ```json 404 theme={null}
  {
    "detail": "Submission not found"
  }
  ```
</ResponseExample>
