ListBridge

Docs · API reference

Accounts

Connect end-user marketplace accounts. We hold the refreshable session so you don't have to.

Connect an account

POST /api/v1/accounts

Accepts Leboncoin credentials. Returns 201 Created on success or 202 Accepted with a session identifier when marketplace 2FA is required.

Every response contains a job_id. Subscribe to the account lifecycle webhooks for real-time updates, and use GET /api/v1/jobs/{job_id} as a delivery-independent fallback.

201 · connected
{
  "id": "b62e8a44-715b-4b81-9a20-826797be9f6a",
  "marketplace": "leboncoin",
  "mode": "live",
  "status": "active",
  "job_id": "35aa25e4-..."
}
202 · OTP required
{
  "id": "b62e8a44-715b-4b81-9a20-826797be9f6a",
  "marketplace": "leboncoin",
  "mode": "live",
  "status": "pending_2fa",
  "session_id": "pending_...",
  "verification": {
    "type": "otp",
    "channel": "sms",
    "session_id": "pending_...",
    "phone_hint": "+33••••67",
    "expires_at": "2026-07-12T17:25:00+02:00"
  },
  "next_action": "submit_otp",
  "job_id": "35aa25e4-..."
}
422 · connection failed
{
  "error": {
    "code": "credentials_invalid",
    "message": "The provided credentials were rejected by the marketplace."
  },
  "job_id": "35aa25e4-..."
}

The verification object is the canonical shape — read verification.type, verification.channel and verification.phone_hint from it. The top-level session_id, phone_hint, verification_type and verification_channel fields are kept for backward compatibility only; new integrations should ignore them.

List and inspect accounts

GET /api/v1/accounts
GET /api/v1/accounts/{account_id}

The list accepts status, marketplace, limit and cursor. The account identifier is an opaque UUID; database identifiers and credentials are never returned. A test key can only see test accounts and a live key can only see live accounts.

Complete marketplace 2FA

POST /api/v1/accounts/{account_id}/verify-2fa

When verification.type is otp, use verification.channel (email or sms) to tell the seller where to find the code, then send the returned session identifier and code. Credentials and infrastructure details are never returned by the API.

GET /api/v1/accounts/{account_id}/verification-status

When the type is mobile_challenge and the channel is mobile, ask the user to approve the notification in the Leboncoin app and poll this endpoint with session_id. It returns 202 while pending, may switch to otp / sms when SMS fallback becomes available, and returns 200 once active.

Refresh a session

POST /api/v1/accounts/{account_id}/refresh

Attempts a marketplace session refresh and returns its job_id. A 409 reauth_required means the seller must connect again; a retryable 503 refresh_unavailable means the connector could not be reached.

Disconnect an account

DELETE /api/v1/accounts/{account_id}

This idempotent operation revokes the stored marketplace session, removes retained credentials and emits account.disconnected with reason user_requested. Supply an Idempotency-Key.