Movements

Use movement history for reconciliation, treasury, and support operations.

Cobru's movements contract still comes from legacy materials. The route shape is promising, but the parameters and response need a fresh verification pass before you depend on them for automated accounting.

Why this page matters

Movement history is a recurring operational requirement across payments, transfers, withdrawals, and cards.

Endpoint pattern

GET /movements/movements_by_types/?{type_req}=true&per_page={number}&page_num={number}

Supported type_req values from Spotlight:

  • by_cobrus
  • by_withdraws
  • by_sends
  • by_other_payments

Send only one type filter at a time.

Example request

curl -G https://dev.cobru.co/movements/movements_by_types/ \
  -H "x-api-key: $COBRU_API_KEY" \
  -H "Authorization: Bearer $COBRU_ACCESS_TOKEN" \
  --data-urlencode "by_cobrus=true" \
  --data-urlencode "per_page=10" \
  --data-urlencode "page_num=1"
const url = new URL('https://dev.cobru.co/movements/movements_by_types/');
url.searchParams.set('by_cobrus', 'true');
url.searchParams.set('per_page', '10');
url.searchParams.set('page_num', '1');

const response = await fetch(url, {
  headers: {
    'x-api-key': process.env.COBRU_API_KEY!,
    Authorization: `Bearer ${accessToken}`,
  },
});

const movements = await response.json();
console.log(movements);
import requests

response = requests.get(
    "https://dev.cobru.co/movements/movements_by_types/",
    headers={
        "x-api-key": COBRU_API_KEY,
        "Authorization": f"Bearer {access_token}",
    },
    params={
        "by_cobrus": "true",
        "per_page": 10,
        "page_num": 1,
    },
)
print(response.json())
<?php

use GuzzleHttp\Client;

$client = new Client();
$response = $client->request('GET', 'https://dev.cobru.co/movements/movements_by_types/', [
    'headers' => [
        'x-api-key' => getenv('COBRU_API_KEY'),
        'Authorization' => 'Bearer ' . $accessToken,
    ],
    'query' => [
        'by_cobrus' => 'true',
        'per_page' => 10,
        'page_num' => 1,
    ],
]);

$movements = json_decode((string) $response->getBody(), true, 512, JSON_THROW_ON_ERROR);
var_dump($movements);

Reconciliation checklist

Persist Cobru webhook payloads first, then process them asynchronously.

Reconcile a movement row with payment or withdrawal identifiers, not only by amount.

Re-run a historical pull when a webhook fails, arrives late, or produces ambiguous state.

Integration warnings

On this page