> ## Documentation Index
> Fetch the complete documentation index at: https://crevio.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit formation

> Create a draft formation and start payment. Returns a Stripe checkout_url unless the account has a saved card, in which case the charge happens inline and charged_inline is true.



## OpenAPI

````yaml /developer/api-reference/openapi.json post /formations
openapi: 3.1.1
info:
  title: Crevio API V1
  version: 1.0.0
  description: >
    API for the Crevio creator platform — a multi-tenant SaaS for digital
    product sales.

    Uses snake_case keys following Stripe conventions. All resource IDs are
    string IDs (e.g., "prod_abc123").
  contact:
    email: support@crevio.co
    name: Crevio Support
    url: https://crevio.co/docs
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.crevio.co/v1
    description: Production
security:
  - ApiKey: []
tags:
  - name: Account
    description: Current account information
  - name: Analytics
    description: Account-wide business analytics
  - name: BlogCategories
    description: Blog post categories
  - name: BlogPosts
    description: Blog content management
  - name: Carts
    description: Shopping cart management
  - name: CheckoutLinks
    description: Shareable checkout links
  - name: Checkouts
    description: Checkout session management
  - name: Customers
    description: Customer relationship management
  - name: Discounts
    description: Discount code management
  - name: Emails
    description: Email sending
  - name: Experiences
    description: Digital experiences (courses, communities, downloads)
  - name: Files
    description: File uploads and external media management
  - name: FormSubmissions
    description: Form submission management
  - name: FormationDocuments
    description: Documents generated for a formation
  - name: Formations
    description: Whitelabel business formation via doola Partner API
  - name: Forms
  - name: Invoices
    description: Invoice creation, payment, and lifecycle management
  - name: LegalPages
  - name: Me
    description: Current user profile
  - name: OrderItems
    description: Order line items
  - name: Orders
    description: Order history and details
  - name: PriceVariants
    description: Product pricing tiers
  - name: Products
    description: Digital product catalog
  - name: Refunds
    description: Refund management
  - name: Reviews
    description: Product reviews
  - name: Socials
    description: Social media management (accounts, posts, media).
  - name: Subscriptions
    description: Subscription lifecycle management (cancel, pause, resume)
  - name: Tags
    description: Customer tags
  - name: TaskRuns
    description: Individual execution records for AI tasks.
  - name: Tasks
    description: >-
      AI tasks — scheduled or event-triggered agentic work (cron, interval,
      once, immediate, event).
  - name: WebhookEndpoints
    description: Webhook endpoint management
  - name: WebhookEvents
    description: Webhook event delivery history
  - name: Leads
    description: Find, verify and enrich business leads (Hunter.io-backed).
  - name: Ads
    description: >-
      Paid advertising — campaigns, ad groups, ads, audiences, targeting, leads,
      conversions, and reports across Meta, Google, TikTok, LinkedIn, Pinterest,
      and X.
  - name: Domains
    description: Custom web domains for your sites.
  - name: Web
    description: >-
      Web search & scraping (search, read, map, crawl, extract, research),
      backed by Firecrawl.
  - name: Skills
    description: >-
      AI skills marketplace — search the catalog and install or uninstall skills
      for your account's agent.
  - name: Schedules
    description: Reusable availability schedules that back event types.
  - name: EventTypes
    x-displayName: Event Types
    description: Bookable services customers can schedule time on.
  - name: Bookings
    description: Reservations made against event types.
  - name: Connections
    description: Third-party app connections (connect, list, execute)
  - name: Approvals
    description: Human-in-the-loop approvals for gated actions
  - name: Logs
    description: Account activity log
paths:
  /formations:
    post:
      tags:
        - Formations
      summary: Submit formation
      description: >-
        Create a draft formation and start payment. Returns a Stripe
        checkout_url unless the account has a saved card, in which case the
        charge happens inline and charged_inline is true.
      operationId: submitFormation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - entity_type
                - state
                - naics_code
                - description
                - name_options
                - members
                - responsible_party
                - mailing_address
              properties:
                entity_type:
                  type: string
                  enum:
                    - LLC
                  description: Today doola only supports LLC
                state:
                  type: string
                  description: Two-letter US state code (e.g. WY)
                naics_code:
                  type: string
                  description: 6-digit NAICS code (from GET /v1/formations/naics_codes)
                description:
                  type: string
                  maxLength: 250
                phone_number:
                  type: string
                name_options:
                  type: array
                  minItems: 1
                  maxItems: 3
                  items:
                    type: object
                    required:
                      - name
                      - entity_type_ending
                    properties:
                      name:
                        type: string
                      entity_type_ending:
                        type: string
                        enum:
                          - LLC
                          - L.L.C
                          - L.L.C.
                          - Limited Liability Company
                        x-speakeasy-enums:
                          - LLC
                          - LLCDotted
                          - LLCDottedSuffix
                          - LimitedLiabilityCompany
                members:
                  type: array
                  minItems: 1
                  description: LLC members. Ownership percentages must sum to exactly 100.
                  items:
                    type: object
                    required:
                      - legal_first_name
                      - legal_last_name
                      - contact_full_name
                      - ownership_percent
                      - address
                    properties:
                      legal_first_name:
                        type: string
                      legal_last_name:
                        type: string
                      contact_full_name:
                        type: string
                      is_natural_person:
                        type: boolean
                        default: true
                      ownership_percent:
                        type: number
                      address:
                        type: object
                        required:
                          - line1
                          - city
                          - state
                          - postal_code
                          - country
                        properties:
                          line1:
                            type: string
                          line2:
                            type: string
                          city:
                            type: string
                          state:
                            type: string
                          postal_code:
                            type: string
                          country:
                            type: string
                            description: ISO 3166-1 Alpha-3
                          phone:
                            type: string
                      ssn:
                        type: string
                        description: Optional. Format XXX-XX-XXXX. Not stored locally.
                responsible_party:
                  type: object
                  required:
                    - legal_first_name
                    - legal_last_name
                    - address
                  properties:
                    legal_first_name:
                      type: string
                    legal_last_name:
                      type: string
                    email:
                      type: string
                    address:
                      type: object
                      required:
                        - line1
                        - city
                        - state
                        - postal_code
                        - country
                      properties:
                        line1:
                          type: string
                        line2:
                          type: string
                        city:
                          type: string
                        state:
                          type: string
                        postal_code:
                          type: string
                        country:
                          type: string
                          description: ISO 3166-1 Alpha-3
                        phone:
                          type: string
                    ssn:
                      type: string
                      description: Optional. Not stored locally.
                mailing_address:
                  type: object
                  required:
                    - line1
                    - city
                    - state
                    - postal_code
                    - country
                  properties:
                    line1:
                      type: string
                    line2:
                      type: string
                    city:
                      type: string
                    state:
                      type: string
                    postal_code:
                      type: string
                    country:
                      type: string
                      description: ISO 3166-1 Alpha-3
                    phone:
                      type: string
                verification_id:
                  type: string
                  description: >-
                    KYC verification id from the active KYC provider. Optional —
                    omitted means auto-resolve via the configured provider.
      responses:
        '201':
          description: Formation created
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Formation'
                  - type: object
                    properties:
                      checkout_url:
                        type:
                          - string
                          - 'null'
                        description: Present when hosted checkout is needed
                      charged_inline:
                        type: boolean
                        description: True when card-on-file charged inline without redirect
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          description: >-
            duplicate_record — a non-terminal formation already exists for this
            verification_id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - ApiKey: []
      x-codeSamples:
        - lang: typescript
          label: Typescript (SDK)
          source: |-
            import { Crevio } from "@crevio/sdk";

            const crevio = new Crevio({
              apiKey: process.env["CREVIO_API_KEY"] ?? "",
            });

            async function run() {
              const result = await crevio.formations.submit({
                entityType: "LLC",
                state: "Oklahoma",
                naicsCode: "<value>",
                description: "hippodrome emphasize ferociously eulogise through gadzooks phew reschedule beyond",
                nameOptions: [
                  {
                    name: "<value>",
                    entityTypeEnding: "Limited Liability Company",
                  },
                ],
                members: [
                  {
                    legalFirstName: "<value>",
                    legalLastName: "<value>",
                    contactFullName: "<value>",
                    ownershipPercent: 1306.42,
                    address: {
                      line1: "<value>",
                      city: "Lindsaychester",
                      state: "Ohio",
                      postalCode: "26472",
                      country: "China",
                    },
                  },
                ],
                responsibleParty: {
                  legalFirstName: "<value>",
                  legalLastName: "<value>",
                  address: {
                    line1: "<value>",
                    city: "Elmoreworth",
                    state: "Delaware",
                    postalCode: "30968-7847",
                    country: "Liechtenstein",
                  },
                },
                mailingAddress: {
                  line1: "<value>",
                  city: "Flatleystad",
                  state: "Vermont",
                  postalCode: "95160",
                  country: "Russian Federation",
                },
              });

              console.log(result);
            }

            run();
components:
  schemas:
    Formation:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        status:
          type: string
          enum:
            - awaiting_payment
            - pending
            - submitted
            - completed
            - failed
        entity_type:
          type: string
          enum:
            - LLC
        state:
          type: string
        naics_code:
          type: string
        description:
          type: string
        name_options:
          type: array
        members:
          type: array
        responsible_party:
          type: object
        mailing_address:
          type: object
        ein:
          type:
            - string
            - 'null'
        formation_filing_date:
          type:
            - string
            - 'null'
        admin_notes:
          type: array
        doola_error:
          type:
            - string
            - 'null'
        stripe_checkout_session_id:
          type:
            - string
            - 'null'
        submitted_at:
          type:
            - string
            - 'null'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        doola_company_id:
          type:
            - string
            - 'null'
        verification_id:
          type:
            - string
            - 'null'
        payment_status:
          type: string
          enum:
            - unpaid
            - paid
            - refunded
        documents:
          type: array
          items:
            $ref: '#/components/schemas/FormationDocument'
      required:
        - id
        - object
        - status
        - entity_type
        - state
        - naics_code
        - description
        - name_options
        - members
        - responsible_party
        - mailing_address
        - ein
        - formation_filing_date
        - admin_notes
        - doola_error
        - stripe_checkout_session_id
        - submitted_at
        - created_at
        - updated_at
        - doola_company_id
        - verification_id
        - payment_status
        - documents
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            type:
              type: string
              enum:
                - api_error
                - invalid_request_error
                - validation_error
            code:
              type: string
            message:
              type: string
            param:
              type: string
            errors:
              type: object
          required:
            - type
            - message
      required:
        - error
    FormationDocument:
      type: object
      properties:
        id:
          type: string
        object:
          type: string
        document_type:
          type: string
          enum:
            - ArticlesOfOrganization
            - EinLetter
            - Mail
        name:
          type: string
        content_type:
          type:
            - string
            - 'null'
        doola_created_at:
          type:
            - string
            - 'null'
        doola_last_modified_at:
          type:
            - string
            - 'null'
        doola_company_id:
          type: string
        download_url:
          type:
            - string
            - 'null'
      required:
        - id
        - object
        - document_type
        - name
        - content_type
        - doola_created_at
        - doola_last_modified_at
        - doola_company_id
        - download_url
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: bad_request
              message: The request was malformed or contained invalid parameters
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: authentication_required
              message: You did not provide an API key.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: invalid_request_error
              code: forbidden
              message: You do not have permission to perform this action
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              type: api_error
              code: internal_error
              message: An unexpected error occurred
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key in the format: Bearer {api_token}'

````