Skip to main content
The Partners API gives you programmatic control over partner records in your PartnerOS organization. You can trigger AI-powered domain enrichment that populates industry data, employee counts, revenue estimates, and a multi-dimensional fit score. You can also submit partner applications on behalf of prospective partners and upload banner images for application pages. All partner endpoints that read or modify your organization’s data require a valid session. The application submission endpoint (POST /api/partners/applications/submit) is public and does not require authentication, because it is designed to be called by prospective partners filling out your published application form.

Analyze a partner

Runs AI-powered domain analysis on a partner record. The pipeline scrapes and interprets the partner’s web presence to populate enriched fields (industry, description, employees, companyRevenue, regions, languages, services) and computes a multi-dimensional fit score. Results are cached by domain for 7 days to avoid redundant LLM calls. POST /api/partners/{partnerId}/analyze

Path parameters

string
required
UUID of the partner record to analyze. The partner must belong to your active organization.

Response fields

object
required
The updated partner record after enrichment.
object
required
Dimensional breakdown of the AI fit assessment.

Example

If the partner record has no domain set, the analysis runs on company name alone and may produce lower-confidence results. Set a domain on the partner record before triggering analysis for best results.

Submit a partner application

Accepts a public partner application submission. This endpoint is unauthenticated and is intended to be called from your published partner application form. You must provide the application’s public slug and valid form data that satisfies all required fields and agreements defined in the application builder. POST /api/partners/applications/submit

Body parameters

string
required
Public slug identifier of the partner application form. Found in your application’s share settings.
object
required
Key-value map of field responses. Keys are the fieldKey values defined in the application builder. Values are strings (use "true" for checkbox fields that are checked).
string[]
required
Array of agreement section IDs that the applicant has accepted. Required agreements must be present or the submission is rejected.
string
Optional affiliate tracking slug. When provided, the submission is attributed to the corresponding affiliate link and the link’s lead count is incremented.
string
Cloudflare Turnstile verification token. Required in production to prevent automated submissions.

Response fields

boolean
required
true when the submission was accepted and recorded.
string
Custom confirmation message configured in the application’s content settings, displayed to the applicant after submission.

Example

The application must have a publishState of "published" and isPublic set to true in its share settings. Submissions to unpublished or private applications return 404 Not Found.

Upload an application banner image

Uploads a banner image for a partner application page. A public URL is returned for use in the application builder. POST /api/partners/applications/banner Accepts multipart/form-data. Requires authentication.

Form fields

file
required
The image file to upload. Accepted formats: JPEG, PNG, WebP, GIF. Maximum size: 5 MB.

Response fields

string
required
Storage path of the uploaded image within the banner bucket.
string
required
Publicly accessible URL of the uploaded banner image.
string
required
Always "supabase".

Example

This endpoint enforces a rate limit of 20 uploads per minute per user per organization. Exceeding this limit returns 429 Too Many Requests.

Uploads a PDF legal template to Docuseal and records it as a reusable or one-off agreement template for a specific partner. Requires authentication and a non-partner role. POST /api/partners/legal-templates Accepts multipart/form-data.

Form fields

file
required
The PDF document to use as the agreement template. Only PDF files are accepted.
string
required
UUID of the partner this template is associated with.
string
required
Display name of the template. Must be unique within your organization (case-insensitive).
string
Optional description of the template’s purpose.
string
required
Template scope: "reusable" (available for multiple agreements) or "one_off" (single-use).
string
required
JSON-encoded array of field placement objects that define where signature, date, and other fields appear on the PDF pages.
string
required
JSON-encoded array of signer role names (e.g. ["Partner", "PartnerOS"]).

Response fields

boolean
required
true when the template was created successfully.
object
required
The newly created legal template record.

Example

If a template with the same name already exists in your organization, the API returns 409 Conflict with the existing template’s details in an existing field. Use the existing template or choose a different name.