Developer Preview

RepayIQ API documentation

Integrate student-loan analysis, plan selection, document package preparation, supplemental intake, review, and bundle generation.

Current status

API shape is ready for beta integration review. Document screening returns conservative form candidates, related-document dependencies, continuation capacity, certification roles, and submission routing; only exact verified mappings produce prefilled PDFs.

OpenAPI JSON

Core Workflow

Both B2C and B2B clients follow the same backend lifecycle. The UI or partner system should follow workflow.next_action_ids instead of guessing the next step.

Create analysis

Submit borrower profile and loan data to receive current plan quotes plus a saved Direct Consolidation what-if.

POST /api/v1/analyses

Select a plan

Choose a workflow.plan_options entry. Return its analysis_scenario_id when the option belongs to a what-if scenario.

POST /api/v1/analyses/:analysis_id/document-packages

Complete requirements

Follow workflow.next_action_ids for source-specific intake, repeatable records, qualification paths, optional or required attachments, borrower attestation, and review.

supplemental-intake + attachments + review

Generate bundle

Generate bundle metadata and any official forms supported by an exact, verified PDF mapping.

POST /api/v1/analyses/:analysis_id/document-packages/:document_package_id/bundle

Download bundle

Use document_bundle_download.download_url to retrieve one ZIP containing package artifacts, supporting documents, and every generated official form instance.

GET .../bundle/content

July 2026 plan transition
Direct Standard is limited to borrowers with no Direct Loan made on or after July 1, 2026. Post-cutoff Direct debt uses Tiered Standard or RAP. A new post-cutoff consolidation must select one of those plans, and a consolidation that repays Parent PLUS debt cannot use RAP. SAVE is not returned as a selectable plan.
Graduated and Extended inputs
For pre-cutoff Direct Loans, submit direct_loan_repayment_start_status to select the applicable Graduated and Extended term rules. Modern Extended eligibility also requires extended_new_borrower_status and more than $30,000 in outstanding Direct Loans. Graduated quotes are modeled estimates because the servicer sets the final schedule.
Direct IBR inputs
Direct IBR applies only to eligible Direct Loans made before July 1, 2026. Submit ibr_new_borrower_status and repaye_qualifying_payment_count_since_2024_07_01 for a calculated option. When spouse income is included, also submit spouse_eligible_loan_debt_cents. Existing IBR borrowers should submit their historical ibr_standard_payment_cap_cents.
FFEL repayment inputs
FFEL Standard and Graduated are returned for payable FFEL loans. Extended Fixed and Extended Graduated additionally require ffel_extended_new_borrower_status and more than $30,000 in complete FFEL balances. Income-Sensitive is a selectable review-required request path with no fabricated payment quote. After package creation, use ffel_repayment_plan_holder_guidance to track each parsed holder's request, decision, reported payment terms, annual review, and optional requested income evidence.
Direct Alternative approval workflow
For borrowers with only pre-July 1, 2026 Direct Loans, direct_alternative may be returned as a selectable review-required request path. Its quote_status is requires_input and monthly_payment_cents is omitted because the Secretary must approve exceptional circumstances and issue written terms. Prepare the package, contact every current federal servicer, and do not represent the current payment as changed before written approval.
PAYE inputs
PAYE is limited to borrowers who remained enrolled after July 1, 2024, meet the PAYE new-borrower tests, and received no Direct Loan on or after July 1, 2026. Submit paye_enrollment_status, paye_new_borrower_status, and the historical paye_standard_payment_cap_cents. For Parent PLUS-derived consolidations, parent_plus_consolidation_idr_payment_status controls the temporary post-July 4, 2025 IDR-payment exception. PAYE ends before July 1, 2028.
ICR inputs
ICR is limited to qualifying Parent PLUS consolidations and borrowers who remained in ICR after July 1, 2024, and ends before July 1, 2028. Submit icr_enrollment_status. Existing borrowers also submit icr_12_year_standard_payment_cents. Joint repayment requires spouse income, spouse_eligible_loan_debt_cents, and spouse_icr_12_year_standard_payment_cents.
Scenario-aware plan selection
The default analysis compares all currently eligible loans in one projected Direct Consolidation Loan. Partners can submit selected loan IDs instead. When a plan option includes analysis_scenario_id, return that ID with selected_plan_id; RepayIQ derives and locks the matching document loan selection.
TPD document workflow
Use total_and_permanent_disability_discharge_pdf as the canonical supplemental source. tpd_documentation_path selects VA, SSA, or medical_professional; VA and SSA require a source-scoped attachment, while the medical path leaves all professional fields blank. Optional tpd_representative_* values can generate a separate designation, change, or revocation form.
School-discharge routing
Use school_related_discharge_workflow as the canonical supplemental source. school_discharge_path routes one issue. Closed School, Unpaid Refund, all four False Certification routes, and Forgery generate exact prefilled PDFs. Borrower Defense returns a StudentAid.gov handoff.
General Forbearance requests
Use general_forbearance_pdf when temporary_payment_relief produces a General Forbearance candidate. Submit the hardship, requested payment treatment, and a period of no more than 12 months. RepayIQ returns one signature-required PDF instance per distinct loan holder; optional hardship records use general_forbearance_supporting_documentation.
Economic Hardship Deferment requests
Use economic_hardship_deferment_pdf when economic_hardship_deferment produces a candidate. Select the same-period deferment, public assistance, Peace Corps, or low-income full-time-employment path; upload its required evidence; and submit the start date, interest election, and borrower acknowledgement. Low-income eligibility is validated on the backend. RepayIQ returns one signature-required PDF instance per distinct federal loan holder.
Unemployment Deferment requests
Use unemployment_deferment_pdf when unemployment_deferment produces a candidate. Select unemployment_benefits or job_search and submit only the conditional answers required by that route. Benefit evidence uses unemployment_benefits_documentation. The backend applies Perkins-only exceptions and excludes ineligible Direct and FFEL holder copies.
Student Loan Debt Burden Forbearance requests
Use student_loan_debt_burden_forbearance_pdf when unemployment_or_economic_hardship produces this candidate. The no-taxable-income route needs no financial attachments. The taxable-income route must pass the backend 20% payment test and include debt_burden_income_documentation plus debt_burden_title_iv_payment_documentation. RepayIQ returns one signature-required PDF per federal loan holder.
In-School Deferment requests
Use in_school_deferment_pdf when current_education_or_training produces this candidate. Submit eligible-school, enrollment, school, verification-route, request, and borrower-acknowledgement fields. school_official_certification keeps Section 4 editable for the school; separate_official_documentation requires in_school_enrollment_verification_documentation; nslds_reporting requires explicit reporting confirmation. RepayIQ returns one signature-required PDF per eligible holder and excludes Perkins copies when regular-student status is No.
Parent PLUS Borrower Deferment requests
Use parent_plus_borrower_deferment_pdf when parent_plus_student_enrollment produces a candidate for an eligible parent borrower with Parent PLUS loans first disbursed on or after July 1, 2008. Submit parent_plus_student_record_count, repeatable parent_plus_student__N__* student records, and explicit parent_plus_student__N__holder__M__label assignments. Each student selects school_official_certification, separate_official_documentation, or nslds_reporting. Separate records use parent_plus_enrollment_verification_documentation. RepayIQ returns one signature-required request per student-and-holder assignment.
Graduate Fellowship Deferment requests
Use graduate_fellowship_deferment_pdf when graduate_fellowship_participation produces this candidate. Submit every Section 2 eligibility answer, institution and program dates, interest election, and borrower acknowledgement. program_official_certification keeps Section 4 editable for the program official; separate_official_documentation requires graduate_fellowship_program_certification_documentation. RepayIQ returns one signature-required PDF per active Direct, FFEL, or Perkins loan holder.
Rehabilitation Training Deferment requests
Use rehabilitation_training_deferment_pdf when rehabilitation_training_participation produces this candidate. Submit all four Section 2 eligibility answers, institution and program dates, interest election, and borrower acknowledgement. program_official_certification keeps Section 4 editable for the program official; separate_official_documentation requires rehabilitation_training_program_certification_documentation. RepayIQ returns one signature-required PDF per active Direct, FFEL, or Perkins loan holder.
Cancer Treatment Deferment requests
Use cancer_treatment_deferment_pdf when serious_illness_or_cancer_treatment produces this candidate. Submit borrower identity, care status, treatment dates, treating-physician details, the ineligible-loan forbearance choice, and borrower acknowledgement. physician_certification keeps Section 4 editable for the physician; separate_physician_documentation requires cancer_treatment_physician_certification_documentation. RepayIQ applies the September 28, 2018 loan-date rule on the server and returns one signature-required PDF per applicable loan holder.
Military Service Deferment requests
Use military_service_and_post_active_duty_deferment_pdf when military_service_or_post_active_duty produces a candidate. Select Military Service, Post-Active Duty Student, or both; submit the service-period and conditional school or representative fields; then choose authorized_official_certification, commanding_or_personnel_officer_statement, or military_orders. The latter two routes require the matching source-scoped attachment. RepayIQ validates the request and returns one prefilled PDF per eligible non-default federal loan holder.
Mandatory Forbearance requests
Use medical_dental_national_guard_dod_forbearance_pdf when military_or_national_service produces this candidate. mandatory_forbearance_path selects the medical/dental, National Guard, or DoD branch. Submit the applicable Section 2 answers, payment request, and authorized_official_certification, separate_authorized_official_documentation, or National Guard military_orders route. The medical/dental Item 5 route additionally requires mandatory_forbearance_state_licensing_agency_statement. RepayIQ returns one signature-required PDF per eligible Direct or FFEL holder.
Loan Rehabilitation requests
Use loan_rehabilitation_income_and_expense_pdf when federal_loan_default produces this candidate. Confirm the borrower requested rehabilitation, objected to the 15% formula payment, and has not already rehabilitated the same loans. Submit all monthly income and expense values in cents plus family and conditional joint-consolidation spouse details. RepayIQ recomputes totals on the server, accepts holder-requested evidence as optional attachments, and returns one signature-required PDF per eligible defaulted Direct or FFEL holder.
Loan Reaffirmation requests
Use loan_reaffirmation_form when inadvertent_overborrowing produces this candidate. Submit borrower and school-draft fields, loan_reaffirmation_loan_record_count, and repeatable loan_reaffirmation_loan__N__loan_id plus loan_reaffirmation_loan__N__excess_amount_cents values. Excess amounts must come from the school. RepayIQ derives the other Section 3 values from the parsed portfolio, creates one agreement per holder, keeps all school-owned fields editable, and appends continuation sheets after four affected loans for a holder.
Federal tax information consent revocation
Set federal_tax_information_consent_revocation to yes to receive this candidate, then save source federal_tax_information_consent_revocation_form. federal_tax_consent_revocation_person_role selects borrower or spouse; submit the matching federal_tax_consent_revocation_* identity and permanent-mailing-address fields plus every acknowledgement. RepayIQ enforces the official page-2 grid capacities, leaves signature and date blank for the selected person, and returns one submission PDF with no attachment workflow.

Authentication

Production B2B requests use partner credentials. Sandbox browser routes use an HTTP-only session cookie so API keys are not exposed in client code.

x-repayiq-partner-id

Partner identifier assigned by RepayIQ.

x-repayiq-api-key

Raw API key sent by the partner. Only SHA-256 hashes are stored server-side.

idempotency-key

Optional key for safely retrying analysis creation.

OpenAPI

The partner API contract is available as an OpenAPI 3.1 JSON document for import into API clients and documentation tools.

RepayIQ Partner API v1

/openapi/repayiq-v1.json
Open JSON

Endpoints

Versioned partner routes authenticate with B2B headers and infer the channel from credentials.

Quick quotes

Estimate potential repayment-plan matches from loose borrower and balance information without creating a saved analysis.

POST/api/v1/quick-quotes

Return preliminary plan matches and payment estimates using a disclosed representative loan-rate assumption.

Analysis

Parse uploaded student-loan text, evaluate repayment options, and retrieve the current workflow state.

POST/api/v1/analyses

Evaluate borrower and loan data, returning current results, a consolidation comparison, and workflow.plan_options.

GET/api/v1/analyses/:analysis_id

Read the immutable analysis snapshot plus the current derived workflow summary.

GET/api/v1/analyses/:analysis_id/plan-options

Return the API-safe selectable plan options and current workflow state.

Documents

Move a selected plan through document preparation, official-form readiness, review, and bundle generation.

POST/api/v1/analyses/:analysis_id/document-packages

Create a document package from a selected baseline or scenario plan.

POST/api/v1/analyses/:analysis_id/document-packages/:document_package_id/supplemental-intake

Save encrypted source-scoped intake, including mapped form values, Direct Alternative notes, or repeatable FFEL holder request and decision records.

GET/api/v1/analyses/:analysis_id/document-packages/:document_package_id/supplemental-intake

Read redacted supplemental intake status and official-form readiness.

POST/api/v1/analyses/:analysis_id/document-packages/:document_package_id/attachments

Upload one verified PDF, JPEG, or PNG supporting document using multipart/form-data. Set source_id to keep every required or optional record scoped to its official form.

GET/api/v1/analyses/:analysis_id/document-packages/:document_package_id/attachments

Read public-safe attachment metadata, branch requirements, and missing document roles.

GET/api/v1/analyses/:analysis_id/document-packages/:document_package_id/attachments/:attachment_id/content

Download an authorized attachment after server-side decryption and integrity validation.

DELETE/api/v1/analyses/:analysis_id/document-packages/:document_package_id/attachments/:attachment_id

Delete attachment metadata and its encrypted private object.

POST/api/v1/analyses/:analysis_id/document-packages/:document_package_id/review

Mark required packet fields as reviewed.

POST/api/v1/analyses/:analysis_id/document-packages/:document_package_id/bundle

Generate a bundle after the workflow reaches ready_to_generate_bundle.

GET/api/v1/analyses/:analysis_id/document-packages/:document_package_id/bundle/content

Download the complete authorized ZIP archive with integrity-checked supporting documents.

GET/api/v1/analyses/:analysis_id/document-packages/:document_package_id/official-forms/:source_id/content

Download a hash-verified prefilled PDF; pass form_instance_id when one source produces multiple forms.

Business Sandbox

Browser-safe partner sandbox routes scoped by an HTTP-only sandbox session cookie.

POST/api/business/sandbox/quick-quotes

Run a browser-safe quick quote without exposing partner API credentials.

POST/api/business/sandbox/evaluate

Run a B2B sandbox analysis without exposing partner API credentials in the browser.

POST/api/business/sandbox/:analysis_id/documents

Create a sandbox document package for the selected plan.

POST/api/business/sandbox/:analysis_id/documents/:document_package_id/attachments

Upload a sandbox supporting document for an attachment-enabled official-form source.

GET/api/business/sandbox/:analysis_id/documents/:document_package_id/attachments

List sandbox attachment metadata and branch requirements.

GET/api/business/sandbox/:analysis_id/documents/:document_package_id/attachments/:attachment_id/content

Download an authorized sandbox attachment.

DELETE/api/business/sandbox/:analysis_id/documents/:document_package_id/attachments/:attachment_id

Delete a sandbox attachment and recalculate readiness.

POST/api/business/sandbox/:analysis_id/documents/:document_package_id/review

Save sandbox review state.

POST/api/business/sandbox/:analysis_id/documents/:document_package_id/bundle

Generate a sandbox bundle after workflow requirements are met.

GET/api/business/sandbox/:analysis_id/documents/:document_package_id/bundle/content

Download the complete sandbox ZIP archive.

GET/api/business/sandbox/:analysis_id/documents/:document_package_id/official-forms/:source_id/content

Download one authorized sandbox PDF instance, including repeated PSLF/TLF forms, TPD companions, and holder-specific General Forbearance, Economic Hardship Deferment, Unemployment Deferment, or In-School Deferment requests.

Request Examples

The first response gives partners the plan options and next actions needed to continue the borrower workflow.

Quick Quote Request

{
  "analysis_as_of": "2026-07-19",
  "annual_income_cents": 6000000,
  "estimated_balance_cents": 4500000,
  "family_size": 2,
  "state_of_residence": "CA",
  "loan_category": "direct_undergraduate",
  "loan_timing": "before_2026_07_01"
}

Evaluate Request

{
  "borrower_profile": {
    "analysis_as_of": "2026-07-10",
    "state_of_residence": "CA",
    "poverty_guideline_region": "contiguous_48_dc",
    "marital_status": "single",
    "tax_filing_status": "single",
    "spouse_income_included": false,
    "adjusted_gross_income_cents": 7200000,
    "family_size": 1,
    "dependent_count": 0,
    "direct_loan_repayment_start_status": "on_or_after_2006_07_01",
    "extended_new_borrower_status": "new_borrower",
    "ffel_extended_new_borrower_status": "new_borrower",
    "ffel_income_sensitive_expected_monthly_gross_income_cents": 600000,
    "ibr_new_borrower_status": "not_new_borrower",
    "repaye_qualifying_payment_count_since_2024_07_01": 0,
    "parent_plus_consolidation_idr_payment_status": "unknown",
    "paye_new_borrower_status": "unknown",
    "paye_enrollment_status": "not_repaying_on_2024_07_01",
    "icr_enrollment_status": "not_repaying_on_2024_07_01",
    "icr_joint_repayment_with_spouse": false
  },
  "consolidation_scenario": {
    "selection_mode": "all_eligible",
    "included_loan_ids": []
  },
  "document_screening": {
    "public_service_employment": "yes",
    "qualifying_teaching_service": "no",
    "total_and_permanent_disability": "no",
    "school_related_discharge_issue": "no",
    "current_education_or_training": "no",
    "graduate_fellowship_participation": "no",
    "rehabilitation_training_participation": "no",
    "parent_plus_student_enrollment": "no",
    "economic_hardship_deferment": "no",
    "unemployment_deferment": "no",
    "unemployment_or_economic_hardship": "no",
    "serious_illness_or_cancer_treatment": "no",
    "military_service_or_post_active_duty": "no",
    "military_or_national_service": "no",
    "federal_loan_default": "no",
    "inadvertent_overborrowing": "no",
    "federal_tax_information_consent_revocation": "no",
    "joint_consolidation_or_loan_limit_issue": "no",
    "temporary_payment_relief": "no"
  },
  "raw_text": "Loan export text...",
  "source_label": "studentaid_text_export",
  "include_rule_traces": false,
  "include_calculation_traces": false
}

Workflow Response

{
  "success": true,
  "data": {
    "analysis_id": "analysis_abc123...",
    "consolidation_comparison": {
      "scenario_id": "scenario_consolidation_def456...",
      "status": "available",
      "included_loan_ids": ["loan_1", "loan_2"],
      "interest_rate_calculation": {
        "rounded_interest_rate_bps": 562.5,
        "projected_principal_balance_cents": 1275000
      }
    },
    "workflow": {
      "active_stage": "plan_selection_ready",
      "next_action_ids": [
        "review_plan_options",
        "select_plan",
        "create_document_package"
      ],
      "plan_options": [
        {
          "plan_id": "tiered_standard",
          "rank": 1,
          "recommendation_status": "recommended",
          "document_preparation_status": "ready",
          "monthly_payment_cents": 84700,
          "selectable": true
        },
        {
          "analysis_scenario_id": "scenario_consolidation_def456...",
          "scenario_type": "new_direct_consolidation",
          "plan_id": "tiered_standard",
          "rank": 1,
          "recommendation_status": "recommended",
          "document_preparation_status": "ready",
          "monthly_payment_cents": 14200,
          "selectable": true
        }
      ]
    }
  },
  "error_message": ""
}

Response Format

JSON endpoints return the envelope below. Successful downloads return application/pdf or application/zip; download errors use the standard JSON envelope.

successboolean

True when the request completed successfully.

dataobject

Endpoint-specific response data. Successful workflow endpoints include workflow when applicable.

error_messagestring

Empty on success. On failure, one or more lines prefixed with "- ".

Workflow stages

plan_selection_readysupplemental_intake_neededborrower_attestation_neededincome_documentation_neededdocument_review_neededmanual_review_neededready_to_generate_bundleblocked

Rate Limits And Data Handling

Partner traffic is rate limited by partner, operation, and fixed time window. Audit events store request metadata without raw loan exports, borrower profile payloads, supplemental PII, or API keys.

Rate limits

Exceeded requests return 429 with RateLimit headers and Retry-After.

Supplemental intake

Official-form-only PII is encrypted before persistence and returned only as redacted status.

Document status

Exact verified mappings produce signature-required official PDFs, including holder-specific General Forbearance, Economic Hardship Deferment, Unemployment Deferment, and In-School Deferment requests. The protected ZIP places verified supporting documents beside forms without embedding them in a PDF.