CyberRXN Docs
APIAPI reference

Submit a source-backed reaction for human validation

POST /v1/contributions

POST /v1/contributions

API overview · OpenAPI

Non-billable submission by a verified member with kb:query. Source attribution, shareable rights, a source quotation and idempotency key are required. The gateway runs free strict chemistry and novelty checks; machine validation does not establish source authenticity or experimental success. Eligible novel submissions may receive one bonus query call, and independently approved contributions ten additional calls. Rewards are not money. Content/source/reaction deduplication and daily reward limits prevent repeated grants. Pending or invalid chemistry never becomes a shared accepted fact. No user query, private context or secrets should be included. Limited separately to 10/user/hour and 100/workspace/hour. Source URLs are recorded for human review, never fetched automatically.

Authorization

This operation requires a bearer credential. The description defines additional role, scope or first-party-session restrictions; an API key does not grant those permissions by itself.

Request body

PropertyTypeRequiredDetails
reaction_smilesstringyes
sourceContributionSourceyes
conditionsContributionConditions ∣ nullno
summarystring ∣ nullno
idempotency_keystringyes
Full schema: ContributionSubmission
{
  "properties": {
    "reaction_smiles": {
      "type": "string",
      "maxLength": 100000,
      "minLength": 3,
      "title": "Reaction Smiles"
    },
    "source": {
      "$ref": "#/components/schemas/ContributionSource"
    },
    "conditions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ContributionConditions"
        },
        {
          "type": "null"
        }
      ]
    },
    "summary": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000,
          "minLength": 10
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 128,
      "minLength": 8,
      "pattern": "^[A-Za-z0-9_.:-]+$",
      "title": "Idempotency Key"
    }
  },
  "additionalProperties": false,
  "type": "object",
  "required": [
    "reaction_smiles",
    "source",
    "idempotency_key"
  ],
  "title": "ContributionSubmission"
}

Responses

HTTPDetailsType
201Successful Responseapplication/json: ReactionContribution
401Unauthorizedapplication/problem+json: ProblemDetails
403Forbiddenapplication/problem+json: ProblemDetails
404Not Foundapplication/problem+json: ProblemDetails
409Conflictapplication/problem+json: ProblemDetails
413Request Entity Too Largeapplication/problem+json: ProblemDetails
422Unprocessable Entityapplication/problem+json: ProblemDetails
429Too Many Requestsapplication/problem+json: ProblemDetails
502Bad Gatewayapplication/problem+json: ProblemDetails
503Service Unavailableapplication/problem+json: ProblemDetails

Response: ReactionContribution

PropertyTypeRequiredDetails
idstringyes
observation_idstringyes
reaction_smilesstringyes
canonical_reaction_smilesstring ∣ nullyes
sourceContributionSourceyes
conditionsContributionConditions ∣ nullno
summarystring ∣ nullno
state"pending" ∣ "needs_review" ∣ "accepted" ∣ "rejected" ∣ "duplicate"yes
created_atstringyes
updated_atstringyes
validationContributionValidationyes
rewardsContributionRewardsyes
reviewReviewedDecision ∣ nullno
duplicate_ofstring ∣ nullno
Full schema
{
  "properties": {
    "id": {
      "type": "string",
      "title": "Id"
    },
    "observation_id": {
      "type": "string",
      "title": "Observation Id"
    },
    "reaction_smiles": {
      "type": "string",
      "title": "Reaction Smiles"
    },
    "canonical_reaction_smiles": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Canonical Reaction Smiles"
    },
    "source": {
      "$ref": "#/components/schemas/ContributionSource"
    },
    "conditions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ContributionConditions"
        },
        {
          "type": "null"
        }
      ]
    },
    "summary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary"
    },
    "state": {
      "type": "string",
      "enum": [
        "pending",
        "needs_review",
        "accepted",
        "rejected",
        "duplicate"
      ],
      "title": "State"
    },
    "created_at": {
      "type": "string",
      "title": "Created At"
    },
    "updated_at": {
      "type": "string",
      "title": "Updated At"
    },
    "validation": {
      "$ref": "#/components/schemas/ContributionValidation"
    },
    "rewards": {
      "$ref": "#/components/schemas/ContributionRewards"
    },
    "review": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/ReviewedDecision"
        },
        {
          "type": "null"
        }
      ]
    },
    "duplicate_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Duplicate Of"
    }
  },
  "additionalProperties": true,
  "type": "object",
  "required": [
    "id",
    "observation_id",
    "reaction_smiles",
    "canonical_reaction_smiles",
    "source",
    "state",
    "created_at",
    "updated_at",
    "validation",
    "rewards"
  ],
  "title": "ReactionContribution"
}

This page is generated from OpenAPI; examples are schemas, not a fabricated successful response.

Usage and billing · Structured errors

On this page