Appearance
POST legal_entity_applications
Create a new API-managed legal-entity application.
Endpoint
text
POST /api/v1/legal_entity_applicationsAuthentication
This endpoint accepts:
- a standard API key (
sk-) - an Agent Key (
ak-) with theagent:entity.application.createscope
Send the key in the Authorization header:
text
Authorization: Bearer <your-api-key-or-agent-key>If an Agent Key is missing the required scope, the API returns:
json
{
"error": "Insufficient permissions"
}Prerequisites
- The API-key owner must be an active
e-ResidentorResident. - Only LLC applications are supported through this public endpoint.
- If you are using an Agent Key, the account owner must have an active signed Manifestation of Will before that write-capable key can be created.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
applicationData | object | Yes | Public create payload for the legal-entity application. |
referralCode | string | No | Referral code owned by the authenticated user. Used only for attribution, not for invoice payment. If self-referral is not enabled for that code, attribution is silently skipped. |
redirectUrl | string | No | Absolute URL to redirect the signer to after completing the public signature flow. |
applicationData
| Field | Type | Required | Description |
|---|---|---|---|
residencyType | string | Yes | e-Resident or Resident. |
entityType | string | Yes | Must be llc. |
name | string | Yes | Legal name without the extension. |
extension | string | Yes | LLC extension value. See supported values below. |
principalOffice | object | Yes | Principal office address. |
contactEmail | string | Yes | Contact email address. |
registeredAgentProvider | string | null | Yes | Use prospera_employment_solutions when using the built-in provider. |
registeredAgentDetails | object | null | Yes | Custom registered-agent details when not using the built-in provider. |
analytics | object | No | Optional analytics / attribution metadata. |
Exactly one of registeredAgentProvider or registeredAgentDetails must be set.
Supported extension values
LLCL.L.C.Limited Liability CompanyS. de R.L.SRLLimited CompanyL.C.LCLimited Liability Co.Limited Co.Ltd. Co.
Address shape
Both principalOffice, officeAddress, and mailingAddress use:
| Field | Type | Required |
|---|---|---|
line1 | string | Yes |
line2 | string | No |
city | string | Yes |
state | string | No |
postalCode | string | Yes |
country | string | Yes |
registeredAgentDetails
| Field | Type | Required |
|---|---|---|
attn | string | Yes |
residentPermitNumber | string | Yes |
officeAddress | object | Yes |
mailingAddress | object | Yes |
analytics
| Field | Type |
|---|---|
industry | string |
whatIsYourBusinessIntendingToDo | string |
howDidYouHearAboutProspera | string |
whyChooseProspera | string |
website | string |
Example Request
bash
curl -X POST https://portal.eprospera.com/api/v1/legal_entity_applications \
-H "Authorization: Bearer <your-api-key-or-agent-key>" \
-H "Content-Type: application/json" \
-d '{
"applicationData": {
"residencyType": "e-Resident",
"entityType": "llc",
"name": "Example Tech Company",
"extension": "LLC",
"principalOffice": {
"line1": "123 Business St",
"city": "Roatan",
"postalCode": "34101",
"country": "Honduras"
},
"contactEmail": "contact@example.com",
"registeredAgentProvider": "prospera_employment_solutions",
"registeredAgentDetails": null,
"analytics": {
"industry": "Technology",
"whatIsYourBusinessIntendingToDo": "Software development services"
}
},
"redirectUrl": "https://example.com/success"
}'Response
Success Response (200 OK)
| Field | Type | Description |
|---|---|---|
data | object | Newly created application row. |
nextSteps | object | Public follow-up actions. |
data
| Field | Type | Description |
|---|---|---|
id | string | Application ID. |
statusId | string | Always Draft for a new application. |
applicationData | object | Stored application payload, including internal flags such as createdViaAPI. |
applicationVersion | string | Application data version. |
submittedAt | null | null until the application is submitted. |
createdAt | string | ISO 8601 timestamp. |
approvedAt | null | null for a new application. |
rejectedAt | null | null for a new application. |
legalEntityId | string | null | Created legal-entity ID after approval, or null while the application is still a draft or under review. |
nextSteps
| Field | Type | Description |
|---|---|---|
signature | string | null | URL for signing the Agreement of Coexistence, or null if the AoC was auto-applied from a signed Manifestation of Will |
Example Response
json
{
"data": {
"id": "12345678-abcd-1234-abcd-123456789012",
"statusId": "Draft",
"applicationData": {
"createdViaAPI": true,
"residencyType": "e-Resident",
"entityType": "llc",
"name": "Example Tech Company",
"extension": "LLC",
"principalOffice": {
"line1": "123 Business St",
"city": "Roatan",
"postalCode": "34101",
"country": "Honduras"
},
"contactEmail": "contact@example.com",
"registeredAgentProvider": "prospera_employment_solutions",
"registeredAgentDetails": null
},
"applicationVersion": "1.0.0",
"submittedAt": null,
"createdAt": "2024-01-15T10:30:00.000Z",
"approvedAt": null,
"rejectedAt": null,
"legalEntityId": null
},
"nextSteps": {
"signature": "https://portal.eprospera.com/en/application/api-terms/12345678-abcd-1234-abcd-123456789012?token=..."
}
}Error Responses
400 Bad Request
Unsupported entity type:
json
{
"error": "Only LLCs are supported in the API at this time. Please use the web app to create other entity types."
}Schema validation failure:
json
{
"error": "Invalid request body",
"details": [
{
"code": "invalid_type",
"expected": "string",
"received": "number",
"path": ["applicationData", "name"]
}
]
}Registered-agent configuration failure:
json
{
"error": "Either registeredAgentProvider or registeredAgentDetails must be provided, but not both."
}Custom registered-agent resident is not active:
json
{
"error": "The registered agent permit number '80000000000000' does not belong to an active resident."
}Referral code is not owned by the authenticated user:
json
{
"error": "Referral code not found or does not belong to you"
}401 Unauthorized
json
{
"error": "Missing API key"
}or:
json
{
"error": "Invalid API key"
}403 Forbidden
Agent Key missing the required scope:
json
{
"error": "Insufficient permissions"
}User not eligible to create applications:
json
{
"error": "You must be an active resident to create a legal entity application"
}409 Conflict
json
{
"error": "An LLC with the name \"Example Tech Company\" already exists. Please choose a different name."
}500 Internal Server Error
json
{
"error": "Internal server error"
}Notes
- Applications created via API start in
Draftstatus withapplicationData.createdViaAPI: true. - If
nextSteps.signatureisnull, the Agreement of Coexistence was auto-applied from the signed Manifestation of Will and no manual signature step is required. - If
nextSteps.signatureis a URL, payment can still be processed first, but the application remains inDraftuntil the Agreement of Coexistence is signed. - Entity names must be unique per entity type (case-insensitive).
- If providing custom registered-agent details, the permit number must belong to an active resident.
- Catalyst referrals: If you are a Catalyst Program member, pass your
referralCodeto attribute the business as your referral. If self-referral is not enabled for your code, using it on your own application will silently skip referral attribution (the application still succeeds). - Catalyst discount scope: The automatic 20% Catalyst residency discount is a separate natural-person residency portal feature. It does not apply to legal-entity application invoices created through this endpoint.