Skip to content

POST legal_entity_applications

Create a new API-managed legal-entity application.

Endpoint

text
POST /api/v1/legal_entity_applications

Authentication

This endpoint accepts:

  • a standard API key (sk-)
  • an Agent Key (ak-) with the agent:entity.application.create scope

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-Resident or Resident.
  • 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

FieldTypeRequiredDescription
applicationDataobjectYesPublic create payload for the legal-entity application.
referralCodestringNoReferral 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.
redirectUrlstringNoAbsolute URL to redirect the signer to after completing the public signature flow.

applicationData

FieldTypeRequiredDescription
residencyTypestringYese-Resident or Resident.
entityTypestringYesMust be llc.
namestringYesLegal name without the extension.
extensionstringYesLLC extension value. See supported values below.
principalOfficeobjectYesPrincipal office address.
contactEmailstringYesContact email address.
registeredAgentProviderstring | nullYesUse prospera_employment_solutions when using the built-in provider.
registeredAgentDetailsobject | nullYesCustom registered-agent details when not using the built-in provider.
analyticsobjectNoOptional analytics / attribution metadata.

Exactly one of registeredAgentProvider or registeredAgentDetails must be set.

Supported extension values

  • LLC
  • L.L.C.
  • Limited Liability Company
  • S. de R.L.
  • SRL
  • Limited Company
  • L.C.
  • LC
  • Limited Liability Co.
  • Limited Co.
  • Ltd. Co.

Address shape

Both principalOffice, officeAddress, and mailingAddress use:

FieldTypeRequired
line1stringYes
line2stringNo
citystringYes
statestringNo
postalCodestringYes
countrystringYes

registeredAgentDetails

FieldTypeRequired
attnstringYes
residentPermitNumberstringYes
officeAddressobjectYes
mailingAddressobjectYes

analytics

FieldType
industrystring
whatIsYourBusinessIntendingToDostring
howDidYouHearAboutProsperastring
whyChooseProsperastring
websitestring

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)

FieldTypeDescription
dataobjectNewly created application row.
nextStepsobjectPublic follow-up actions.

data

FieldTypeDescription
idstringApplication ID.
statusIdstringAlways Draft for a new application.
applicationDataobjectStored application payload, including internal flags such as createdViaAPI.
applicationVersionstringApplication data version.
submittedAtnullnull until the application is submitted.
createdAtstringISO 8601 timestamp.
approvedAtnullnull for a new application.
rejectedAtnullnull for a new application.
legalEntityIdstring | nullCreated legal-entity ID after approval, or null while the application is still a draft or under review.

nextSteps

FieldTypeDescription
signaturestring | nullURL 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 Draft status with applicationData.createdViaAPI: true.
  • If nextSteps.signature is null, the Agreement of Coexistence was auto-applied from the signed Manifestation of Will and no manual signature step is required.
  • If nextSteps.signature is a URL, payment can still be processed first, but the application remains in Draft until 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 referralCode to 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.