How to modify existing Trello cards using REST API

I’m working with Trello’s REST API and can successfully create new cards using POST requests. Now I need to modify existing cards by updating their details like descriptions, comments, or moving them between lists.

I’m not sure if I should use PUT or POST methods for updates, or if I need to delete the original card and create a replacement. Here’s what I’ve attempted with a PUT request but it’s not working:

PUT https://api.trello.com/1/cards/[card_identifier]?key=[api_key]&token=[auth_token]

With this JSON payload:

{
    "id": "abc123def456ghi789jkl012",
    "badges": {
        "votes": 0,
        "viewingMemberVoted": false,
        "subscribed": false,
        "checkItems": 0,
        "checkItemsChecked": 0,
        "comments": 0,
        "attachments": 0,
        "description": true,
        "due": null
    },
    "closed": false,
    "dateLastActivity": "2014-11-15T14:30:22.156Z",
    "desc": "updated description content",
    "due": null,
    "idBoard": "board987654321abc",
    "idList": "list456789012def",
    "idMembers": [],
    "name": "Modified Card Title",
    "pos": 65536
}

I’m testing this with Postman and plan to integrate it into a JavaScript application later. What’s the correct approach for updating Trello cards?

The issue might also be with your card identifier format. When I was debugging similar problems, I discovered that some card IDs returned from previous API calls include extra characters or formatting that breaks PUT requests. Make sure you’re using the clean card ID from the card’s id field, not the shortLink or any other identifier. Another thing to check is your authentication scope. Even with valid API keys, updating cards requires write permissions on the board. I spent hours troubleshooting what I thought was a payload issue, but it turned out my token didn’t have sufficient privileges. You can verify this by trying a simple name update first - if that fails, it’s likely an auth problem rather than payload structure.

yeah PUT is definitly the right method for updates, not POST. your endpoint looks correct but like JumpingRabbit said, you’re sending way too much data. just send what you wanna change - name, desc, idList etc. I usualy just do simple requests with 2-3 fields max and it works fine.

Your JSON payload is overly complex for updating cards. Trello’s PUT endpoint expects only the fields you want to change, not the entire card object. The badges, dateLastActivity, and other system-generated fields should be omitted since they’re read-only.

Try this simplified approach:

{
    "name": "Modified Card Title",
    "desc": "updated description content",
    "idList": "list456789012def",
    "pos": "top"
}

I encountered similar issues when I started with Trello API integration. The key insight is that PUT operations only need the specific properties you’re modifying. Including system-managed fields often causes the API to reject the request. Also verify your card_identifier is correct - it should be the actual card ID, not a placeholder string. Once you strip down to just the editable fields, your updates should work properly.