SOCIAL MEDIA

List Contra Conversations API

Read one page of your signed-in Contra inbox. Returns the conversation nodes exactly as Contra sends them plus the pagination cursor. Uses your own Contra account; upAPI stores nothing.

Last updated

contramessaging
Try it freeGet an API key

How to call it

Send one POST to api.upapi.io/contra-list-conversations.get with your key in the X-Api-Key header and the parameters below as a JSON body. Each call spends 4 weighted units of your monthly quota. The operation times out after 45 seconds. Responses are not cached; every call runs the operation.

endpoint
POST https://api.upapi.io/contra-list-conversations.get

List Contra Conversations API reference

Request parameters

after
string — Opaque cursor from a previous page's endCursor.
docId
string — Override the pinned persisted-query id for this call.
first
integer — Page size.
filter
object — Contra's own conversation filter object, forwarded verbatim, e.g. {"archived": false}. Omit for the default bucket.
proxyUrl
string — Exit IP pinned to this account. Omit to use the shared pool.
sessionCookies
objectrequired — Contra session cookies for the inbox owner. Your own Contra account's cookies; upAPI stores nothing.

Response fields

items
arrayrequired
elapsedMs
integerrequired
endCursor
stringrequired
fetchedAt
stringrequired
itemCount
integerrequired
hasNextPage
booleanrequired

Example request and response

The example response is generated from this operation’s published output schema — it shows the shape and field names, not values from a recorded call.

json — example request body
{
  "first": 30,
  "sessionCookies": {}
}
json — example response shape
{
  "items": [
    {}
  ],
  "elapsedMs": 1,
  "endCursor": "example",
  "fetchedAt": "example",
  "itemCount": 1,
  "hasNextPage": false
}

Code snippets

cURL
curl
curl -X POST https://api.upapi.io/contra-list-conversations.get \
  -H 'Content-Type: application/json' \
  -H 'x-api-key: YOUR_API_KEY' \
  -d '{ "first": 30, "sessionCookies": {} }'
JavaScript
javascript
const response = await fetch('https://api.upapi.io/contra-list-conversations.get', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY',
  },
  body: JSON.stringify({
  "first": 30,
  "sessionCookies": {}
}),
});

const data = await response.json();
console.log(data);
Python
python
import requests

response = requests.post(
    'https://api.upapi.io/contra-list-conversations.get',
    headers={
        'Content-Type': 'application/json',
        'x-api-key': 'YOUR_API_KEY',
    },
    json={
  "first": 30,
  "sessionCookies": {}
},
)

print(response.json())
Go
go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	payload := []byte(`{ "first": 30, "sessionCookies": {} }`)

	req, _ := http.NewRequest("POST", "https://api.upapi.io/contra-list-conversations.get", bytes.NewBuffer(payload))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("x-api-key", "YOUR_API_KEY")

	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	body, _ := io.ReadAll(resp.Body)
	var result map[string]any
	json.Unmarshal(body, &result)
	fmt.Println(result)
}
PHP
php
<?php

$payload = json_encode([
    'first' => 30,
    'sessionCookies' => new stdClass(),
]);

$ch = curl_init('https://api.upapi.io/contra-list-conversations.get');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => $payload,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'x-api-key: YOUR_API_KEY',
    ],
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
var_dump($data);
Ruby
ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI('https://api.upapi.io/contra-list-conversations.get')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'

request = Net::HTTP::Post.new(uri.path)
request['Content-Type'] = 'application/json'
request['x-api-key'] = 'YOUR_API_KEY'
request.body = { "first": 30, "sessionCookies": {} }.to_json

response = http.request(request)
puts JSON.parse(response.body)
Java
java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Map;

OkHttpClient client = new OkHttpClient();
ObjectMapper mapper = new ObjectMapper();

String json = "{ \"first\": 30, \"sessionCookies\": {} }";

RequestBody body = RequestBody.create(json, MediaType.get("application/json"));
Request request = new Request.Builder()
    .url("https://api.upapi.io/contra-list-conversations.get")
    .post(body)
    .addHeader("Content-Type", "application/json")
    .addHeader("x-api-key", "YOUR_API_KEY")
    .build();

try (Response response = client.newCall(request).execute()) {
    Map<?, ?> result = mapper.readValue(response.body().string(), Map.class);
    System.out.println(result);
}
C#
csharp
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");

var payload = JsonSerializer.Deserialize<object>("{ \"first\": 30, \"sessionCookies\": {} }");
var response = await client.PostAsJsonAsync("https://api.upapi.io/contra-list-conversations.get", payload);

var result = await response.Content.ReadFromJsonAsync<JsonElement>();
Console.WriteLine(result);

Frequently asked questions

How much does the List Contra Conversations API cost per call?

Each call spends 4 weighted units of your plan's monthly quota. Full pricing is at https://upapi.io/pricing.

How do I authenticate to the List Contra Conversations API?

Send your key in the X-Api-Key header. A free guest key is available without creating an account.

Are List Contra Conversations API responses cached?

No — every call runs the operation live; responses are not cached.

More Social Media APIs

Browse every Social Media API →