Skip to main content
POST
/
cvs
/
analyze
/
files
Analyze CV from file upload
curl --request POST \
  --url https://api-service.fribl.co/api/v1/cvs/analyze/files \
  --header 'Content-Type: multipart/form-data' \
  --header 'x-api-key: <api-key>' \
  --form 'files=<string>' \
  --form cache=true \
  --form stream=true \
  --form block=true \
  --form files.items='@example-file'
import requests

url = "https://api-service.fribl.co/api/v1/cvs/analyze/files"

files = { "files.items": ("example-file", open("example-file", "rb")) }
payload = {
"files": "<string>",
"cache": "true",
"stream": "true",
"block": "true"
}
headers = {"x-api-key": "<api-key>"}

response = requests.post(url, data=payload, files=files, headers=headers)

print(response.text)
const form = new FormData();
form.append('files', '<string>');
form.append('cache', 'true');
form.append('stream', 'true');
form.append('block', 'true');
form.append('files.items', '{
"fileName": "example-file"
}');

const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};

options.body = form;

fetch('https://api-service.fribl.co/api/v1/cvs/analyze/files', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api-service.fribl.co/api/v1/cvs/analyze/files"

payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cache\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stream\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"block\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-api-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api-service.fribl.co/api/v1/cvs/analyze/files")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cache\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stream\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"block\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files.items\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();
{
  "message": "Analyze CVs request received!",
  "data": {
    "ids": [
      "3c90c3cc-0d44-4b50-8888-8dd25736052a"
    ],
    "status": "PENDING"
  }
}
{
"error": "<string>"
}
{
"error": "<string>"
}
{
"code": "INSUFFICIENT_TOKENS",
"message": "Insufficient tokens: have 3, need 10",
"balance": 3,
"required": 10
}

Authorizations

x-api-key
string
header
required

API key in UUID format. Include this header with every authenticated request.

Body

multipart/form-data

Request body for submitting file uploads for analysis.

files
file[]
required

One or more PDF files to analyze.

cache
boolean

Whether to cache the analysis results.

stream
boolean

Whether to stream the analysis progress.

block
boolean

Whether to block until analysis is complete before returning.

Response

Analysis request accepted. Use the returned IDs to poll for status.

message
string
required
Example:

"Analyze CVs request received!"

data
object
required