'Creating a new card using the Trello API

I'm trying to add a new card to a Trello list but am a bit stuck

I've tried POSTing in two approaches:

  1. https://api.trello.com/1/lists/mylistid/cards?key=mykey&token=myToken&name=myName which results in a 404 but is mentioned here as a suggested but untested response and seems to follow the Trello documentation here.

  2. https://api.trello.com/1/cards?key=myKey&token=myToken&name=myName based on the documentation here.

Neither works for me. Is the documentation correct or what am I doing wrong?

UPDATE (hoisted from comments)

I had the idList in the JSON which I was passing in but the content type was wrong. I had text/json, it should have been application/json. Option 2 works now.



Solution 1:[1]

var newCard = {
   name: CARD_TITLE, 
   desc: CARD_DESC,
   pos: "top", 
   idList: TRELLO_BOARD_LIST_ID
};

Trello.post('/cards/', newCard, success, error);

var success = function(successMsg) { /* your actions on success case */}
var error= function(errorMsg) { /* your actions on error case */}


client.js automatically adds app_key + token to url so you dont need to bother about that.

thats is working for me when using trello client.js . short guide: https://developers.trello.com/get-started/start-building#connect

Im pretty sure the concept is the same with other languages...

Solution 2:[2]

Just in case anyone needs Kotlin example (JDK 11 is required) is below. It requires ObjectMapper (can be mavened from com.fasterxml.jackson.module:jackson-module-kotlin:2.12.1 )

val token = //token
val appKey = //key
val listID = //list ID
val urlCards = "https://api.trello.com/1/cards"
val newCardName = //a name for a new card
val description = //a card description

val queryString = mapOf( 
    "key" to appKey,
    "token" to token, 
    "idList" to listID, 
    "name" to newCardName, 
    "pos" to "top", 
    "desc" to description
)
val objectMapper = ObjectMapper()
val requestBody: String = objectMapper.writeValueAsString(queryString)

val client = HttpClient.newBuilder().build();
val request = HttpRequest.newBuilder()
    .uri(URI.create(urlCards))
    .POST(HttpRequest.BodyPublishers.ofString(requestBody))
    .header("content-type","application/json")
    .build()
val response = client.send(request, HttpResponse.BodyHandlers.ofString())
println(response.body())

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 fmw42
Solution 2 Anton