# Overview

Welcome to the Flo User API. This guide will explain how customers can programmatically upload members to either Flo Perform or Flo ATS. This is a great way to export employees from your HRIS and upload them directly into Flo so that they will be able to receive performance reviews or access our ATS.

This endpoint accepts CSV files via multipart/form-data uploads.

### Authentication

All endpoints require authentication.

**Possible authentication errors**

* `401 Unauthorized`
* `403 Forbidden`

***

### Common Requirements

* Requests must use `multipart/form-data`
* CSV files must be uploaded using a `file` form field
* Validation errors are returned in structured JSON responses

***

### Endpoint: Import Members via CSV

#### `POST /members/import-csv`

Import new members into a specific Flo product.

#### Summary

Creates new members from the provided CSV file.\
On success, no response body is returned.\
On failure, a detailed validation response is provided.

#### Query Parameters

| Name    | Type   | Required | Description                                                 |
| ------- | ------ | -------- | ----------------------------------------------------------- |
| product | string | Yes      | Target product. Allowed values: `RECRUIT`, `PERFORM`, `UNI` |

#### Request

**Headers**

```
Accept: application/json
Content-Type: multipart/form-data
```

**Form Fields**

| Field | Type         | Required |
| ----- | ------------ | -------- |
| file  | binary (CSV) | Yes      |

#### Example (cURL)

```bash
curl -X POST \
  'https://florecruit.com/api/v2/members/import-csv?product=RECRUIT' \
  -H 'Accept: application/json' \
  -F 'file=@./members.csv'
```

#### Responses

| Status | Description                                     |
| ------ | ----------------------------------------------- |
| 200    | Members created successfully (no response body) |
| 400    | Invalid CSV or member data                      |
| 401    | Unauthorized                                    |
| 403    | Forbidden                                       |

#### Validation Error Response Schema

**`MembersCsvValidationResult`**

```json
{
  "fileError": { "message": "string", "type": "string" },
  "rowColumnErrors": [
    {
      "rowNumber": 1,
      "columnName": "email",
      "message": "Invalid email format",
      "type": "INVALID_EMAIL",
      "value": "example@"
    }
  ]
}
```

### Example CSV

{% file src="/files/xNoQjBwXM57ablqhulUP" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.joinflo.com/flo-apis/user-api/overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
