Sprout - AI Job Search icon

Sprout AI Job Search data API

Magnifex · Jobs & Careers

Sprout - AI Job Search is Magnifex's candidate Android app for people who want an agent to hunt and apply on their behalf rather than browse a board all day. Version 2.0.14 signs in with Apple, Google, or email/password so the same account works on the phone and the matching web client. After sign-in, a wizard captures job-search status, target titles and types, minimum salary, locations (city for on-site roles, country for country-wide search), experience level, and EEO fields such as citizenship, veteran and disability status; onboarding then asks for a resume upload plus toggles for AI resume, AI cover letter and AI outreach. The home tab is a swipe deck of personalized matches with new roles added daily; swipe-right cards land on the Applications tab, where the user reviews AI-written resumes and cover letters, answers resume-gap questions, and only then lets Sprout submit. Profile holds a professional blueprint (overview, skills, work experience, education, certifications, languages), saved searches, documents, workspace, Gmail connect so recruiter replies land in a tagged inbox (or a proxy email if Gmail is disconnected), and LinkedIn-outreach eligibility. Credits meter applications — one extra credit per application that needed a successful search — with in-app alerts and support. English copy and US-style EEO onboarding point at a white-collar US job-search niche rather than a high-volume public board.

Nested job_applications records carry the posting's jobTitle and companySize, a tailored resume keyed by source_resume_id, cover letters, job_fit_factors and resume-gap qa_items whose change_proposals write back onto workExperience. Eligibility patches supply citizenshipStatus and disabilityStatus before the row can leave review; a successful outbound apply stamps submittedAt and decrements remainingCredits, while an expired posting refunds the extra search credit. Saved searches hold a query string or up to five queries together with workLocations and jobTypes, scoped to the blueprint at active_professional_profile_id.

Coach dashboards, resume-gap inboxes and recruiter-reply CRMs read that pipeline — review through submitted, Gmail unread employer tags, LinkedIn-outreach eligible — and openData Studio turns it into callable open data.

Screenshots

  • Sprout - AI Job Search screenshot 1
  • Sprout - AI Job Search screenshot 2
  • Sprout - AI Job Search screenshot 3
  • Sprout - AI Job Search screenshot 4
  • Sprout - AI Job Search screenshot 5
  • Sprout - AI Job Search screenshot 6
  • Sprout - AI Job Search screenshot 7
  • Sprout - AI Job Search screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Sign in and session

    POST /v1/candidate/session osint

    Issues the session JWT used by later Sprout calls after email/password, Google, or Apple sign-in.

    Auth: Email/password, Google or Apple identity token, or a refresh token. Later calls send Authorization: Bearer <access_token> plus an API-key header.

    • access_token
    • refresh_token
    • token_type
    • expires_in
    • user
    • id
    • email
    • app_metadata
    • provider
    POST /v1/candidate/session HTTP/1.1
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "email": "[email protected]",
      "password": "<redacted>"
    }
    {
      "access_token": "<jwt>",
      "refresh_token": "<refresh>",
      "token_type": "bearer",
      "expires_in": 3600,
      "user": {
        "id": "usr_8c21",
        "email": "[email protected]",
        "app_metadata": {"provider": "google"}
      }
    }
  • Swipe job matches

    GET /v1/matches/deck opendata

    Feeds the home swipe deck of personalized job matches (title, company-size band, saved-search id, location).

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • items
    • id
    • jobTitle
    • companySize
    • search_id
    • locations
    • city
    • countryCode
    GET /v1/matches/deck HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "items": [{
        "id": "job_4412",
        "jobTitle": "Staff Backend Engineer",
        "companySize": "11-50 employees",
        "search_id": "ss_18",
        "locations": [{"city": "Austin", "countryCode": "US"}]
      }]
    }
  • Record a swipe decision

    POST /v1/matches/decisions opendata

    Records a left skip or right-apply on a match card; a right swipe creates a job_applications row that then appears on the Applications tab.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • id
    • job_id
    • direction
    • search_id
    • job_application_id
    POST /v1/matches/decisions HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_id": "job_4412",
      "direction": "right",
      "search_id": "ss_18"
    }
    {
      "id": "swipe_9021",
      "job_id": "job_4412",
      "direction": "right",
      "search_id": "ss_18",
      "job_application_id": "app_7731"
    }
  • List job applications

    GET /v1/agent/apply-pipeline opendata

    Loads the Applications tab: each swipe-right row nested with the job, tailored resume, cover letter, timeline events, fit-factor analysis and resume-gap Q&A.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • id
    • status
    • job
    • jobTitle
    • locations
    • countryCode
    • resumes
    • source_resume_id
    • cover_letters
    • events
    • analyses
    • job_fit_factors
    • qa_items
    • change_proposals
    • workExperience
    GET /v1/agent/apply-pipeline?include=job,resumes,coverLetters,events,analyses HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "id": "app_7731",
      "status": "review",
      "job": {
        "id": "job_4412",
        "jobTitle": "Staff Backend Engineer",
        "locations": [{"city": "Austin", "countryCode": "US"}]
      },
      "resumes": [{"id": "res_19", "source_resume_id": "res_base_3"}],
      "cover_letters": [{"id": "cl_44"}],
      "events": [],
      "analyses": [{
        "id": "an_9",
        "job_fit_factors": [{"factor": "stack", "score": 0.86}],
        "qa_items": [{
          "question": "Gap in 2023?",
          "change_proposals": [{"field": "workExperience", "proposed": "Contract work at Northwind"}]
        }]
      }]
    }
  • Submit application review

    POST /v1/applications/approve opendata

    Approves the AI-generated resume and cover letter on the review screen so Sprout can submit the application.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • source_resume_id
    • selected_cover_letter_id
    • id
    • status
    • remainingCredits
    POST /v1/applications/approve HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731",
      "source_resume_id": "res_base_3",
      "selected_cover_letter_id": "cl_44"
    }
    {
      "id": "app_7731",
      "status": "submitted",
      "remainingCredits": 41
    }
  • Submit resume-gap answer

    POST /v1/applications/gap-answers opendata

    Posts the candidate's answer to a resume-gap question raised by job_application_analysis_qa before the application can leave review.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • qa_item_id
    • answer
    • status
    • change_proposals
    • field
    • proposed
    • workExperience
    POST /v1/applications/gap-answers HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731",
      "qa_item_id": "qa_12",
      "answer": "Contract frontend work at Northwind, Mar–Nov 2023"
    }
    {
      "qa_item_id": "qa_12",
      "status": "answered",
      "change_proposals": [{"field": "workExperience", "proposed": "Contract frontend, Northwind, 2023"}]
    }
  • Provide missing application info

    POST /v1/applications/eligibility opendata

    Supplies missing eligibility fields the posting still needs — citizenship, veteran and disability answers collected on onboarding — so the application can leave review.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • id
    • status
    • citizenshipStatus
    • disabilityStatus
    POST /v1/applications/eligibility HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731",
      "citizenshipStatus": "us_citizen",
      "disabilityStatus": "prefer_not_to_say"
    }
    {
      "id": "app_7731",
      "status": "review",
      "citizenshipStatus": "us_citizen",
      "disabilityStatus": "prefer_not_to_say"
    }
  • Mark application submitted

    POST /v1/applications/complete opendata

    Flips an approved application to submitted and appends a job_application_events row once the outbound apply succeeds; remainingCredits reflects the extra credit spent on a successful search.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • id
    • status
    • submittedAt
    • remainingCredits
    • events
    • type
    • at
    POST /v1/applications/complete HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731",
      "submittedAt": "2026-10-11T15:04:00Z"
    }
    {
      "id": "app_7731",
      "status": "submitted",
      "submittedAt": "2026-10-11T15:04:00Z",
      "remainingCredits": 41,
      "events": [{"type": "submitted", "at": "2026-10-11T15:04:00Z"}]
    }
  • Release pending reviews

    POST /v1/applications/release-queue opendata

    Clears applications that were held for document or resume-gap review so they can leave the review queue.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_ids
    • released
    • status
    POST /v1/applications/release-queue HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_ids": ["app_7731", "app_7732"]
    }
    {
      "released": ["app_7731", "app_7732"],
      "status": "released"
    }
  • Transfer profile onto application

    POST /v1/applications/tailor-docs opendata

    Re-runs AI resume and cover-letter generation against the professional profile for one application.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • source_resume_id
    • resume_id
    • cover_letter_id
    • status
    POST /v1/applications/tailor-docs HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731",
      "source_resume_id": "res_base_3"
    }
    {
      "resume_id": "res_20",
      "cover_letter_id": "cl_45",
      "source_resume_id": "res_base_3",
      "status": "ok"
    }
  • Professional profile blueprint

    GET /v1/profiles/blueprint osint

    Returns the professional blueprint the agent tailors from: overview entries (work, education, skills) and profile URLs, scoped to the active profile.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • id
    • active_professional_profile_id
    • professionalTitle
    • statusText
    • entries
    • kind
    • details
    • companySize
    • title
    • urls
    • label
    • url
    • workExperience
    GET /v1/profiles/blueprint?include=entries,urls HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "id": "pp_4",
      "active_professional_profile_id": "pp_4",
      "professionalTitle": "Staff Engineer",
      "statusText": "open",
      "entries": [{
        "id": "ent_88",
        "kind": "workExperience",
        "details": [{"companySize": "11-50 employees", "title": "Staff Engineer"}]
      }],
      "urls": [{"label": "LinkedIn", "url": "https://www.linkedin.com/in/example"}]
    }
  • Activate professional profile

    POST /v1/profiles/activate osint

    Switches the active professional blueprint so jobs, searches and resumes are scoped to the profile the candidate picks.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • professional_profile_id
    • active_professional_profile_id
    • professionalProfileId
    • statusText
    POST /v1/profiles/activate HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "professional_profile_id": "pp_4"
    }
    {
      "active_professional_profile_id": "pp_4",
      "professionalProfileId": "pp_4",
      "statusText": "open"
    }
  • Upload source resume

    POST /v1/documents/upload-url opendata

    Mints a signed upload URL for the candidate's source PDF; later tailored resumes point at this row via source_resume_id.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • filename
    • contentType
    • signedUrl
    • resume_id
    • source_resume_id
    • status
    POST /v1/documents/upload-url HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "filename": "alex-resume.pdf",
      "contentType": "application/pdf"
    }
    {
      "signedUrl": "/v1/documents/put/res_base_3",
      "resume_id": "res_base_3",
      "source_resume_id": null,
      "status": "uploaded"
    }
  • Saved searches

    GET /v1/searches opendata

    Lists the saved search filters (a query string or up to five query strings, locations, job types) that drive the swipe deck.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • id
    • queries
    • workLocations
    • city
    • countryCode
    • jobTypes
    GET /v1/searches HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "id": "ss_18",
      "queries": ["staff backend", "platform engineer"],
      "workLocations": [{"city": "Austin", "countryCode": "US"}],
      "jobTypes": ["full_time"]
    }
  • Suggested work locations

    GET /v1/geo/suggestions opendata

    Autocomplete for the location wizard: city for on-site roles or country for country-wide search, written onto saved-search workLocations.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • suggestions
    • city
    • countryCode
    • label
    GET /v1/geo/suggestions?q=Aus HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "suggestions": [{
        "city": "Austin",
        "countryCode": "US",
        "label": "Austin, TX, United States"
      }]
    }
  • Gmail accounts and inbox counts

    GET /v1/inbox/counts opendata

    Powers the Emails tab: Gmail connection state and unread counts for employer/recruiter threads tagged per application.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • connected
    • accounts
    • email
    • provider
    • unread
    GET /v1/inbox/counts HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "connected": true,
      "accounts": [{"email": "[email protected]", "provider": "gmail"}],
      "unread": 3
    }
  • LinkedIn outreach eligibility

    GET /v1/outreach/eligibility osint

    Tells the AI-outreach toggle whether this profile may send LinkedIn messages as part of an application.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • eligible
    • reason
    GET /v1/outreach/eligibility HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Accept: application/json
    {
      "eligible": true,
      "reason": null
    }
  • Regenerate outreach message

    POST /v1/outreach/drafts osint

    Rewrites the LinkedIn outreach note attached to one application after the eligibility check passes.

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • job_application_id
    • message
    • status
    POST /v1/outreach/drafts HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_application_id": "app_7731"
    }
    {
      "job_application_id": "app_7731",
      "message": "Hi — I applied for Staff Backend Engineer and would welcome a chat.",
      "status": "ok"
    }
  • Report a job posting

    POST /v1/listings/flags opendata

    Submits a candidate report on a swipe-deck posting (closed, spam, or other).

    Auth: Authorization: Bearer <access_token> plus an API-key header.

    • id
    • job_id
    • reason
    • details
    • status
    POST /v1/listings/flags HTTP/1.1
    Authorization: Bearer <access_token>
    X-Api-Key: <api-key>
    Content-Type: application/json
    
    {
      "job_id": "job_4412",
      "reason": "closed",
      "details": "Posting already filled"
    }
    {
      "id": "rpt_12",
      "job_id": "job_4412",
      "reason": "closed",
      "status": "submitted"
    }

Data categories

  • job matches
  • applications
  • resumes and cover letters
  • professional profiles
  • saved searches
  • application credits
  • recruiter email

Where teams use this data

  • Agent apply-pipeline dashboard

    A job-search ops tool pages job_applications with nested jobs, resumes, cover_letters, job_fit_factors and qa_items so a coach can see which swipe-right cards are still in review versus submitted.

  • Resume-gap coaching inbox

    A career-coach product reads job_application_analysis_qa plus profile_change_proposals, posts answers, and writes the accepted workExperience back onto professional_profile_entries.

  • Credit and search telemetry

    A billing bot watches remainingCredits against user_saved_searches runs, flagging when a multi-query search is about to spend the extra per-application credit and when an expired posting refunds it.

  • Recruiter-reply CRM

    A lightweight CRM joins Emails-tab unread employer tags with mark-submitted events so follow-ups attach to the same job_application_id the swipe created.

Frequently asked questions

What does a Sprout job application record contain?

Each job_applications row nests the jobs posting and job_locations, tailored resumes (source_resume_id points at the uploaded PDF), cover_letters, job_application_events, and job_application_analyses with job_fit_factors plus qa_items and profile_change_proposals.

How does Sprout authenticate the candidate?

Sign-in accepts email/password, Google, or Apple. Later calls send Authorization: Bearer plus an API-key header; the same account also signs into the matching web client.

How are application credits charged?

remainingCredits meters swipe-right applies. Client copy states that a successful search uses one extra credit per application, and an expired posting issues the credit back.

Where do recruiter replies show up?

The Emails tab reads inbox counts after Connect Gmail. Replies are tagged per application in the candidate's Gmail; disconnecting Gmail switches new applies to a proxy (Sprout-given) email address.

Apps similar to Sprout - AI Job Search

  • LazyApply — LazyApply is an AI job-search tool that autofills applications and submits them on boards such as LinkedIn, Indeed, Greenhouse, Dice and ZipRecruiter in the USA and Canada.
  • Simplify — Simplify is an AI job-search platform that matches seekers to roles, tailors resumes, and can autofill and submit applications from a single profile.
  • LoopCV — LoopCV lets a job seeker upload a CV once and then auto-apply to matching openings on LinkedIn, Indeed, Glassdoor and other boards.
  • Huntr — Huntr is a job-search workspace that tracks applications, builds AI resumes and cover letters, and autofills application forms in one click.
  • Indeed Job Search — Indeed is an American multinational employment website for job listings, launched in 2004 and available in over 60 countries and 28 languages.
  • LinkedIn: Community & Network — LinkedIn is a business and employment-oriented social network where job seekers post CVs, employers post listings, and members manage a professional identity.
  • Job Search by ZipRecruiter — ZipRecruiter is an American employment marketplace, headquartered in Santa Monica, that lets job seekers search US openings and apply from the site.
  • Glassdoor | Jobs & Careers — Glassdoor is an American jobs and careers app, owned by Indeed, that publishes company ratings and reviews from current and former employees alongside listings.

Topics

  • Sprout AI Job Search API
  • Magnifex Sprout
  • job_applications
  • job_fit_factors
  • AI cover letter
  • saved searches
  • application credits
  • AI job agent

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote