Skip to main content
RFP.ai AI RFP response software logo in the main navigation
Open navigation menu

rfp.ai REST API Documentation

Integrate RFP automation into your workflows with the rfp.ai REST API. Generate AI-powered answers, manage projects, and export responses programmatically.

Last updated

⚡ TL;DR — Quick Facts

Base URL

https://rfp.ai/api

Authentication

Bearer Token

Format

JSON

Rate Limits

10-unlimited req/min

What You Can Do With the API

The rfp.ai REST API enables programmatic access to all core RFP automation features:

AI Answer Generation

Generate answers to RFP questions using your knowledge base with source citations and confidence scores.

Project Management

Create, list, and retrieve RFP projects programmatically.

File Management

Upload and manage knowledge base files, RFP documents, and supporting materials.

Multi-Format Export

Export responses to Word, PDF, Excel, CSV, or PowerPoint formats.

Authentication

The rfp.ai API uses Bearer token authentication. All requests must include your API token in the Authorization header.

📌 Requirements

  • Starter plan or higher (API access not available on Free tier)
  • API token created in Settings → API & Extensions → API Tokens
  • Token must be kept secure (treat like a password)
  • Pick token scopes (default read; add projects.write, qa.write, qa.approve, kb.write as needed)

Creating an API Token

  1. Log in to your rfp.ai dashboard
  2. Go to Settings → API & Extensions → API Tokens
  3. Click Create Token
  4. Name your token (e.g., "Production Server")
  5. Copy and save the token securely (you won't see it again!)

Using the Token

Authorization Header
Authorization: Bearer YOUR_API_TOKEN

Example Request

cURL
curl -X GET https://rfp.ai/api/projects \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json"

Base URL

All API endpoints are relative to the base URL:

https://rfp.ai/api

OpenAPI Contract and Versioning

The machine-readable API contract is available as OpenAPI 3.1 JSON. Use it to generate clients, validate integrations, or inspect request and response schemas.

Spec URL

https://rfp.ai/openapi.json

Compatibility

Additive fields may appear over time. Breaking changes will be documented before rollout and reflected in the OpenAPI version.

API Endpoints

Projects

GET/api/projects

List all projects in your organization with pagination support.

Example Request
curl -X GET https://rfp.ai/api/projects \
  -H "Authorization: Bearer YOUR_API_TOKEN"
Response
[
  {
    "id": "proj_123",
    "name": "Q4 Enterprise RFP",
    "status": "active",
    "created_at": "2025-10-01T10:00:00Z"
  }
]
POST/api/projects

Create a new RFP project.

Request Body
{
  "name": "Q4 Enterprise RFP",
  "deadline": "2025-12-31"
}
GET/api/projects/:projectId

Get details for a specific project including metadata and statistics.

AI Answer Generation

POST/api/ask

Generate an AI-powered answer to an RFP question using your project's knowledge base. Returns answer with trust score, source citations, and confidence level.

Request Body
{
  "projectId": "proj_123",
  "question": "What is your HIPAA compliance status?",
  "wordLimit": 200,
  "tone": "professional"
}
Response
{
  "answer": "Our organization maintains HIPAA compliance through...",
  "trustScore": 85,
  "sources": [
    {
      "filename": "hipaa-compliance.pdf",
      "page": 2,
      "excerpt": "..."
    }
  ],
  "confidence": "high",
  "wordCount": 187
}

File Management

GET/api/projects/:projectId/files

List all files in a project's knowledge base with metadata.

Export

Export your RFP responses in multiple formats:

POST/api/export/docxMicrosoft Word
POST/api/export/pdfPDF Document
POST/api/export/xlsxExcel Spreadsheet
POST/api/export/csvCSV Data
POST/api/export/pptPowerPoint Presentation

Rate Limits

API rate limits are based on your subscription plan. Exceeding your limit returns a 429 (Too Many Requests) error.

PlanRate LimitMonthly Requests
Free10 req/minuteLimited
Starter30 req/minute~43,000
Professional60 req/minute~86,000
EnterpriseUnlimitedUnlimited

HTTP Status Codes

The API returns standard HTTP status codes to indicate success or failure:

CodeMeaningDescription
200SuccessRequest completed successfully
201CreatedResource created successfully
400Bad RequestInvalid request parameters
401UnauthorizedInvalid or missing API token
402Payment RequiredUsage limit exceeded - upgrade required
403ForbiddenAccess denied to resource
404Not FoundResource not found
429Rate LimitedRate limit exceeded - retry after wait period
500Server ErrorInternal server error - contact support

Response and Error Model

Successful JSON responses return endpoint-specific objects. Failed JSON responses use a stable public error code and, when useful, a short public message. Internal exception details, provider responses, file paths, and environment names are logged server-side, not returned to API clients.

Error Response
{
  "error": "export_failed",
  "message": "Unable to generate the filled XLSX export right now."
}

Frequently Asked Questions

How do I authenticate with the rfp.ai API?

Use Bearer token authentication. Include your API token in the Authorization header: Authorization: Bearer YOUR_TOKEN. Create tokens in Settings → API Tokens (requires Starter plan or higher).

What are the API rate limits?

Rate limits depend on your plan: Free (10 req/min), Starter (30 req/min), Professional (60 req/min), Enterprise (unlimited). Exceeding limits returns a 429 error with a retry-after header.

Can I generate AI answers via the API?

Yes. POST to /api/ask with projectId, question, and optional wordLimit. Returns AI-generated answer with trust score, source citations, and confidence level.

What export formats does the API support?

The API supports exporting to Word (DOCX), PDF, Excel (XLSX), CSV, and PowerPoint (PPT). Use POST /api/export/{format} endpoints.

Is there a sandbox or test environment?

Use the main API with a test project. Create a project specifically for testing, upload test documents, and experiment with API calls without affecting production data. All plans include project creation.

Can I use the API for batch processing?

Yes. You can make multiple API calls within your rate limit to process questions in bulk. For large volumes, consider Enterprise plan for unlimited rate limits or contact us for batch processing options.

How are API tokens secured?

Tokens are hashed and stored securely. You can view token metadata but never the actual token value after creation. Tokens are org-scoped (can only access your organization's data), carry one or more scopes (read, projects.write, qa.write, qa.approve, kb.write), and can be revoked anytime from Settings. New tokens default to read.

Can MCP agents (Claude, Cursor) write data, not just read?

Yes — at /api/mcp we expose 18 MCP tools (9 read + 9 write). Write tools require an explicit token scope, hit per-scope rate sub-caps, and every call is recorded in a per-org MCP audit log (with sensitive payloads redacted). See the Agents on rfp.ai page or the full MCP integration docs.

Does the API include source citations?

Yes. All AI-generated answers via /api/ask include source citations showing which documents and pages were used, plus confidence scores for transparency.

Code Examples

Python

import requests

API_TOKEN = "your_api_token_here"
BASE_URL = "https://rfp.ai/api"

headers = {
    "Authorization": f"Bearer {API_TOKEN}",
    "Content-Type": "application/json"
}

# Generate an answer
response = requests.post(
    f"{BASE_URL}/ask",
    headers=headers,
    json={
        "projectId": "proj_123",
        "question": "What is your HIPAA compliance status?",
        "wordLimit": 200
    }
)

data = response.json()
print(f"Answer: {data['answer']}")
print(f"Trust Score: {data['trustScore']}")

JavaScript/Node.js

const API_TOKEN = "your_api_token_here";
const BASE_URL = "https://rfp.ai/api";

// Generate an answer
const response = await fetch(`${BASE_URL}/ask`, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${API_TOKEN}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    projectId: "proj_123",
    question: "What is your HIPAA compliance status?",
    wordLimit: 200
  })
});

const data = await response.json();
// Use the answer and trust score
// const answer = data.answer;
// const trustScore = data.trustScore;

Related Documentation

Browser Extension

The Chrome extension uses the same API. Learn how to set it up for answering RFP questions directly in web forms.

Extension Docs

Claude Desktop Integration

Connect Claude Desktop to rfp.ai via Model Context Protocol for AI-powered knowledge base access.

MCP Docs

Need Help with the API?

Questions about the API? Our support team is here to help with integration, troubleshooting, and best practices.

Manage API Tokens

Related Pages