Floreal Logo

Get Document Details

Get document details and check status

Poll this endpoint after uploading to check if processing is complete.


Response States

StatusMeaningWhat to do
uploadingFile being processed (0-15s)Wait 10s, check again
pendingAI analyzing CV (15-50s)Wait 15s, check again
completed✅ Done!Retrieve full data
failed❌ Error occurredCheck error message
invalidNot a valid CVUpload different file

What You Get (when completed)

Complete Response Structure

{
  "documentId": "e89f1798-8e91-405b-83b2-036987006593",
  "documentName": "Benjamin Gabay - CV",
  "documentType": "cv",
  "documentDate": "11-2025",
  "status": "completed",
  "message": "Document processing completed successfully",

  "summary": "Benjamin Gabay - Sales-marketing Professional based in Paris, FRA with 4 years of experience. Educational background: Bachelor in Philosophy, Literature from University of Paris I: Panthéon-Sorbonne. Technical expertise: Copywriting, Content Creation, Prospecting. Domain experience: Ghostwriting, LinkedIn Coaching, Lead Generation, B2B, Inbound Sales. Most recently specializing in Ghostwriting, LinkedIn Coaching, Lead Generation.",

  "extractedText": "Contact +33766771226\nLinkedIn: www.linkedin.com/in/benjamin-gabay\n\nBenjamin Gabay\nGhostwriter LinkedIn...\n\nEXPERIENCE\nFreelance Ghostwriter & Coach LinkedIn\nJanuary 2023 - Present (2 years)\n...",

  "contact": {
    "firstName": "Benjamin",
    "lastName": "Gabay",
    "email": "benjamin.gabay@example.com",
    "linkedin": "www.linkedin.com/in/benjamin-gabay",
    "location": {
      "city": "Paris",
      "country": "FRA"
    }
  },

  "profile": {
    "domain": "Sales Marketing",
    "specialization": "Content Marketing",
    "seniorityLevel": "Junior",
    "experienceYears": 4,
    "technicalStack": ["Copywriting", "Content Creation", "Prospecting"],
    "industries": ["Real-estate", "Social Media"],
    "recentExpertise": ["Ghostwriting", "LinkedIn Coaching", "Lead Generation"],
    "hasManagement": false
  },

  "attributes": {
    "languages": {
      "french": 1,
      "languages_count": 1,
      "cv_language_detected": "French"
    },
    "technical_skills": {
      "copywriting": 1,
      "content_creation": 1,
      "prospecting_tools": 1,
      "technical_skills_count": 3
    },
    "professional_experience": {
      "total_experience_years": 4,
      "number_of_employers": 3,
      "average_tenure_months": 16,
      "current_position_duration": 4
    },
    "education_indicators": {
      "highest_degree": "Bachelor",
      "education_field": ["Philosophy", "Literature"],
      "first_school_name": "University of Paris I: Panthéon-Sorbonne",
      "education_prestige_score": 3
    },
    "industry_verticals": {
      "real_estate": 1,
      "social_media": 1,
      "verticals_count": 2
    },
    "business_specialization": {
      "roi_analysis": 1,
      "training_experience": 1,
      "revenue_generation_experience": 1,
      "client_relationship_experience": 1
    },
    "performance_impact": {
      "lead_generation_impact": 1,
      "revenue_responsibility": 1,
      "brand_awareness": 1
    },
    "domain_expertise": {
      "b2b_sales_experience": 1,
      "inbound_sales_experience": 1,
      "content_marketing_experience": 1,
      "social_media_marketing_experience": 1
    }
  },

  "processingTime": {
    "milliseconds": 61761,
    "seconds": 62,
    "formatted": "62s"
  },

  "timestamps": {
    "createdAt": "2025-11-05T16:08:54.293Z",
    "updatedAt": "2025-11-05T16:08:54.293Z",
    "lastProcessedAt": "2025-11-05T16:09:56.054Z"
  }
}

Field Descriptions

summary

AI-generated professional summary (2-3 sentences) including:

  • Name and location
  • Years of experience
  • Educational background
  • Technical expertise
  • Domain specializations
  • Recent focus areas

extractedText

Complete text extracted from the CV (typically 5-15KB). Useful for:

  • Full-text search
  • Custom parsing
  • LLM analysis
  • Displaying original CV content

contact

Extracted contact information:

  • firstName / lastName - Parsed from CV
  • email - Email address (or "Unknown" if not found)
  • linkedin - LinkedIn profile URL
  • location - City and country (ISO codes)

profile

Professional profile summary:

  • domain - Primary professional domain (e.g., "Sales Marketing", "Technology", "Finance")
  • specialization - Specific expertise area (e.g., "Content Marketing", "Backend Development")
  • seniorityLevel - Career level: "Junior", "Senior", "Executive"
  • experienceYears - Total years of professional experience
  • technicalStack - Array of tools, technologies, or methodologies
  • industries - Array of industry verticals (e.g., "Real-estate", "Fintech")
  • recentExpertise - Recent focus areas from last 1-2 positions
  • hasManagement - Boolean indicating leadership/management experience

attributes

100+ structured attributes grouped by category:

languages - Language proficiency

  • Specific languages (e.g., french: 1, english_fluent: 1)
  • Language counts and CV language

technical_skills - Technical competencies

  • Specific skills (e.g., copywriting: 1, python_experience: 1)
  • Skill counts by category

professional_experience - Career metrics

  • Total experience years
  • Number of employers
  • Job stability scores
  • Current position duration

education_indicators - Academic background

  • Highest degree earned
  • Fields of study
  • School names
  • Education prestige score

industry_verticals - Industry experience

  • Specific industries worked in
  • Vertical counts

business_specialization - Business skills

  • Revenue generation
  • Client relationships
  • Strategic planning
  • ROI analysis
  • Training/mentoring

domain_expertise - Domain-specific experience

  • B2B/B2C experience
  • Inbound/outbound sales
  • Content/digital marketing
  • Technical domains

performance_impact - Achievement indicators

  • Lead generation impact
  • Revenue responsibility
  • Innovation contributions
  • Brand awareness

market_client - Market experience

  • Geographic markets (EMEA, APAC, etc.)
  • B2B/B2C indicators
  • Customer segments
  • Channel experience

certifications - Professional credentials

  • Certification counts
  • Continuing education indicators

Polling Example

async function waitForCompletion(documentId) {
  for (let i = 0; i < 18; i++) { // 90 seconds max
    const res = await fetch(
      `/v1/public/documents/${documentId}`,
      { headers: { 'X-API-Key': 'YOUR_API_KEY' } }
    );
    const data = await res.json();

    if (data.status === 'completed') {
      console.log('✅ Processing complete!');
      console.log('Contact:', data.contact);
      console.log('Profile:', data.profile);
      return data;
    }

    if (data.status === 'failed' || data.status === 'invalid') {
      throw new Error(data.error?.message || 'Processing failed');
    }

    console.log(`⏳ Status: ${data.status} - waiting...`);
    await new Promise(r => setTimeout(r, 5000)); // Wait 5s
  }
  throw new Error('Timeout: Processing took longer than expected');
}

const result = await waitForCompletion('e89f1798-8e91-405b-83b2-036987006593');

Use Cases

Display Candidate Profile

const { contact, profile, summary } = await getDocument(documentId);
displayProfile({
  name: `${contact.firstName} ${contact.lastName}`,
  email: contact.email,
  summary: summary,
  experience: profile.experienceYears,
  skills: profile.technicalStack
});

Search by Attributes

const { attributes } = await getDocument(documentId);
if (attributes.professional_experience.total_experience_years >= 5 &&
    attributes.domain_expertise.b2b_sales_experience) {
  addToShortlist(documentId);
}

Custom Analysis

const { extractedText } = await getDocument(documentId);
const customData = await analyzeWithLLM(extractedText);

Typical processing time: 30 to 90 seconds (average: 60s)

GET
/v1/public/documents/{documentId}
X-API-Key<token>

API key for public API access. Get yours at https://app.floreal.ai?tab=api

In: header

Path Parameters

documentIdstring
Formatuuid

Response Body

curl -X GET "https://api.floreal.ai/v1/public/documents/497f6eca-6276-4993-bfeb-53cbbbba6f08"
{
  "documentId": "4704590c-004e-410d-adf7-acb7ca0a7052",
  "documentName": "string",
  "documentType": "cv",
  "documentDate": "string",
  "status": "uploading",
  "message": "string",
  "summary": "string",
  "extractedText": "string",
  "contact": {
    "firstName": "string",
    "lastName": "string",
    "email": "string",
    "linkedin": "string",
    "location": {
      "city": "string",
      "country": "string"
    }
  },
  "profile": {
    "domain": "string",
    "specialization": "string",
    "seniorityLevel": "string",
    "experienceYears": 0,
    "technicalStack": [
      "string"
    ],
    "industries": [
      "string"
    ],
    "recentExpertise": [
      "string"
    ],
    "hasManagement": true
  },
  "attributes": {},
  "error": {
    "message": "string",
    "timestamp": "2019-08-24T14:15:22Z"
  },
  "processingTime": {
    "milliseconds": 0,
    "seconds": 0,
    "formatted": "string"
  },
  "timestamps": {
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "lastProcessedAt": "2019-08-24T14:15:22Z"
  }
}
{
  "error": "string",
  "message": "string"
}
{
  "error": "string"
}
{
  "error": "string",
  "message": "string"
}