> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venlyfinance.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quick Start

> Authenticate, send a request, and read the response — your first Venly API call in under 5 minutes.

Venly Finance offers two separate products — **Fundflow API** for multi-rail payment orchestration, and **Finance API** for embedded financial infrastructure. Both use OAuth2 client credentials for authentication.

***

## Step 1 — Get your credentials

Your **Client ID** and **Client Secret** are provisioned by Venly and sent to you directly. If you haven't received them, [contact us](https://venlyfinance.com/contact).

<Info>
  Use your staging credentials while testing. Staging calls do not move real funds.
</Info>

***

## Step 2 — Get an access token

Exchange your credentials for a short-lived Bearer token:

```mermaid theme={null}
sequenceDiagram
    autonumber
    participant App as Your App
    participant Auth as login.venly.io
    participant API as Venly API

    App->>Auth: POST /token (client_credentials)
    Auth-->>App: access_token (5 min TTL)
    App->>API: GET /company (Bearer token)
    API-->>App: company details
    App->>API: First domain call (party / ramp request)
    API-->>App: 200 OK + resource
```

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://login-staging.venly.io/auth/realms/VenlyFinance/protocol/openid-connect/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "grant_type=client_credentials" \
    -d "client_id=YOUR_CLIENT_ID" \
    -d "client_secret=YOUR_CLIENT_SECRET"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    'https://login-staging.venly.io/auth/realms/VenlyFinance/protocol/openid-connect/token',
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body: new URLSearchParams({
        grant_type: 'client_credentials',
        client_id: 'YOUR_CLIENT_ID',
        client_secret: 'YOUR_CLIENT_SECRET',
      }),
    }
  );
  const { access_token } = await response.json();
  ```
</CodeGroup>

Response:

```json theme={null}
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...<redacted>",
  "expires_in": 300,
  "refresh_expires_in": 0,
  "token_type": "Bearer",
  "not-before-policy": 0,
  "scope": "email profile"
}
```

<Tip>
  Tokens expire after **5 minutes** (300 seconds). Implement token refresh logic in your client so requests don't fail mid-session.
</Tip>

Copy the `access_token` — you'll pass it as a Bearer token in every subsequent request.

***

## Step 3 — First Fundflow API call

Call `GET /v1/company` to confirm your Fundflow credentials are working and check your KYB verification status:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET https://api-fundflow-staging.venly.io/v1/company \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api-fundflow-staging.venly.io/v1/company', {
    headers: {
      'Authorization': `Bearer ${access_token}`,
      'Content-Type': 'application/json',
    },
  });
  const data = await response.json();
  ```
</CodeGroup>

A successful response:

```json theme={null}
{
  "result": {
    "id": "b7e2c1a3-4d5f-6e7a-8b9c-0d1e2f3a4b5c",
    "name": "Your Company",
    "kybStatus": "VERIFIED"
  },
  "success": true
}
```

<Tip>
  `kybStatus: VERIFIED` means your company is approved to create ramp requests. If it shows `PENDING`, KYB review is still in progress — [contact us](https://venlyfinance.com/contact).
</Tip>

***

## Step 4 — First Finance API call

Call `POST /v1/parties` to create your first party — the foundational record that will hold accounts and wallets:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api-staging.venlyfinance.com/v1/parties \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "partyType": "INDIVIDUAL",
      "firstName": "Jane",
      "lastName": "Doe"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api-staging.venlyfinance.com/v1/parties', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${access_token}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      partyType: 'INDIVIDUAL',
      firstName: 'Jane',
      lastName: 'Doe',
    }),
  });
  const data = await response.json();
  ```
</CodeGroup>

A successful `201` response:

```json theme={null}
{
  "success": true,
  "result": {
    "id": "f3a2b1c4-8d9e-4f5a-b6c7-d8e9f0a1b2c3",
    "partyType": "INDIVIDUAL",
    "status": "ACTIVE",
    "firstName": "Jane",
    "lastName": "Doe",
    "createdAt": "2026-01-15T09:30:00",
    "updatedAt": "2026-01-15T09:30:00",
    "version": 0
  }
}
```

Save the returned `id` — you'll use it to create an account and assign wallets in the next steps.

<Tip>
  A party is created **`ACTIVE`** immediately — no verification step. The **account** you open under it, however, starts unverified and can't move money until a Venly admin verifies it. See [Account verification](/guides/finance/kyc-verification).
</Tip>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Finance API walkthrough" icon="route" href="/guides/finance/integration-walkthrough">
    Create a party, open and verify an account, fund it, and send your first transfer
  </Card>

  <Card title="Fundflow API guide" icon="route" href="/guides/payments/getting-started">
    Set up bank accounts, wallets, and create your first ramp request
  </Card>

  <Card title="Authentication" icon="key" href="/getting-started/authentication">
    Token refresh, environment switching, and credential security
  </Card>

  <Card title="Fundflow API Reference" icon="code" href="/api-reference/Fundflow-API/ramp-requests/list-all-ramp-requests">
    Ramp requests, wallets, fees, currencies, and more
  </Card>

  <Card title="Finance API Reference" icon="building-columns" href="/api-reference/Finance-API/parties/list-all-parties">
    Parties, accounts, wallets, transfers, and IBANs
  </Card>
</CardGroup>
