Backfill in-progress. Some lexicons and records may be missing or incomplete.

com.atproto.repo.putRecord

atproto-lexicons.bsky.social

Documentation

main procedure

Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS.

Input

Encodingapplication/json
collection stringnsid Required

The NSID of the record collection.

record unknown Required

The record to write.

repo stringat-identifier Required

The handle or DID of the repo (aka, current account).

rkey stringrecord-key Required

The Record Key.

maxLength: 512 bytes
swapCommit stringcid Optional

Compare and swap with the previous commit by CID.

swapRecord stringcid OptionalNullable

Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation

validate boolean Optional

Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.

Output

Encodingapplication/json
cid stringcid Required

A content identifier (CID) referencing immutable data.

uri stringat-uri Required

An AT Protocol URI (e.g., at://did:plc:xyz/app.bsky.feed.post/abc).

validationStatus string Optional

No description provided.

Known values: valid, unknown

Errors

InvalidSwap
Try It

Direct PDS XRPC methods (com.atproto.*) are disabled in Try It for security reasons.

These methods interact directly with Personal Data Servers and require careful handling. Use a dedicated client or CLI tool instead.
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "nullable": [
        "swapRecord"
      ],
      "required": [
        "repo",
        "collection",
        "rkey",
        "record"
      ],
      "properties": {
        "repo": {
          "type": "string",
          "format": "at-identifier",
          "description": "The handle or DID of the repo (aka, current account)."
        },
        "rkey": {
          "type": "string",
          "format": "record-key",
          "maxLength": 512,
          "description": "The Record Key."
        },
        "record": {
          "type": "unknown",
          "description": "The record to write."
        },
        "validate": {
          "type": "boolean",
          "description": "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons."
        },
        "collection": {
          "type": "string",
          "format": "nsid",
          "description": "The NSID of the record collection."
        },
        "swapCommit": {
          "type": "string",
          "format": "cid",
          "description": "Compare and swap with the previous commit by CID."
        },
        "swapRecord": {
          "type": "string",
          "format": "cid",
          "description": "Compare and swap with the previous record by CID. WARNING: nullable and optional field; may cause problems with golang implementation"
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "InvalidSwap"
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "uri",
        "cid"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "commit": {
          "ref": "com.atproto.repo.defs#commitMeta",
          "type": "ref"
        },
        "validationStatus": {
          "type": "string",
          "knownValues": [
            "valid",
            "unknown"
          ]
        }
      }
    },
    "encoding": "application/json"
  },
  "description": "Write a repository record, creating or updating it as needed. Requires auth, implemented by PDS."
}

Lexicon Garden

@