---
title: "Make Representative Primary"
method: POST
path: "/entities/{entity_id}/representatives/{representative_id}/make-primary"
tags: ["Entities"]
---

# Make Representative Primary

`POST /entities/{entity_id}/representatives/{representative_id}/make-primary`

## Request

- Base URL: `https://api.meow.com/v1`
- URL: `https://api.meow.com/v1/entities/{entity_id}/representatives/{representative_id}/make-primary`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/meow/apis/meow-api/docs/entities/:entity_id/representatives/:representative_id/make-primary/post.ts> (a function with typed inputs; its response is checked against the schema)

Make an existing representative the primary representative (signer). Any current primary is demoted, so exactly one remains. Allowed only before the application is submitted for review. Returns the updated onboarding status.

## Path parameters

- `representative_id` string, required: The representative, as returned in `representatives` on `GET /entities/{entity_id}`.
- `entity_id` string, required: The entity being onboarded.

## Response `200`

Successful Response

- EntityOnboardingStatusResponse
  - `entity_id` string, uuid, required: Public ID of the onboarded business entity, stable across the onboarding lifecycle and matching the `entity_id` used in the Customer API, MCP, and webhook payloads.
  - `status` 'pending_document_upload' | 'pending_user_action' | 'submitted' | 'under_review' | 'approved' | 'rejected', required
  - `business_name` string, nullable, required: Legal business name.
  - `created_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `updated_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `documents` OnboardingDocumentStatus[], required: Documents uploaded during onboarding.
    - `proof_type` 'accredited' | 'address' | 'articles_of_organization' | 'bank_statement' | 'client_contract' | 'client_invoice' | 'beneficial_owner_address' | 'beneficial_owner_id' | 'beneficial_owner_id_back' | 'beneficial_ownership_register' | 'bylaws' | 'certificate_of_good_standing' | 'corporate_resolution' | 'drivers_license' | 'due_diligence' | 'ein' | 'final_edd_report' | 'periodic_review_report' | 'government_issued_business_license' | 'hemp_cultivator_state_license' | 'incorporation' | 'industry_related_license' | 'lease_agreement' | 'llc_resolution' | 'money_service_business_license' | 'money_transmitter_registration' | 'mortgage_statement' | 'national_id' | 'org_chart' | 'partnership_agreement' | 'partnership_agreement_due_diligence' | 'partnership_resolution' | 'personal_address' | 'remote_employees_due_diligence' | 'signed_ss4' | 'tax_exemption_certificate' | 'uk_officer_passport' | 'officer_registry' | 'uk_registry' | 'shareholder_registry' | 'uk_w8_en' | 'utility_bill' | 'us_based_office_proof_of_address_due_diligence' | 'pitch_deck' | 'active_business_registration' | 'proof_of_ownership_or_banking_authorization' | 'non_profit_bylaws' | 'operating_agreement' | 'flow_of_funds' | 'aml_sanction' | 'registration_or_license' | 'sec_filing' | 'legal_opinion' | 'certificate_of_formation_master_llc' | 'series_operating_agreement' | 'share_subscription_agreement' | 'fund_subscription_agreement' | 'safe_agreement' | 'convertible_note_agreement' | 'loan_promissory_note' | 'token_purchase_agreement' | 'saft_agreement' | 'deal_memo_hybrid_agreement' | 'issuer_due_diligence_report' | 'protocol_ecosystem_questionnaire' | 'investment_company_due_diligence_form' | 'us_based_operations_due_diligence_form' | 'register_of_directors' | 'articles_of_association' | 'memorandum_of_association' | 'non_profit_status' | 'ofac_sanctions_screening_policy' | 'aml_kyc_policy' | 'w8_bene' | 'corporate_structure_chart' | 'custody_safeguarding_agreement' | 'reserve_attestation' | 'sanctions_vendor_service_agreement' | 'contractual_fund_flow_agreements', required
    - `file_name` string, nullable, required: Uploaded file name, or null if not yet uploaded.
    - `representative_id` string, uuid, nullable: The representative this document belongs to, or null for business-level documents.
  - `kyc_status` 'not_started' | 'pending' | 'action_required' | 'approved' | 'rejected', required
  - `onboarding_type` 'api' | 'smb' | 'mcp' | 'partner', required
  - `next_step` OnboardingNextStep, required
    - `step` 'gather_business_context' | 'collect_user_info' | 'collect_business_addresses' | 'collect_business_details' | 'collect_additional_details' | 'complete_due_diligence' | 'upload_documents' | 'manage_representatives' | 'complete_identity_verification' | 'accept_terms' | 'submit_application' | 'monitor_review' | 'resolve_info_requests' | 'onboarding_complete', required
    - `phase` 'business_info' | 'ready_to_submit' | 'submitted', required
    - `missing` string[], required: Items you still need to provide to advance past the current step. After submission this also lists any agreements still outstanding, which are owed alongside an open information request rather than after it. Empty once nothing is owed.
    - `required_proof_types` PublicKybProofType[]: KYB documents you still owe, as `proof_type` values to pass to a document upload endpoint. Before submission these are the application's own required documents, uploaded through `/entities/{entity_id}/documents/upload-url`; for a non-US business that usually includes `incorporation`, `shareholder_registry` (your shareholder registry or register of members), and `officer_registry` (your register of directors). Once `step` is `resolve_info_requests` these are instead what the open info requests still owe, uploaded through `/entities/{entity_id}/info-requests/{request_id}/documents/upload-url`. See `info_requests` for which request each belongs to. Empty once every required document is on file.
    - `can_submit` boolean, required: Whether all requirements are met and the application is ready to be submitted for review.
    - `info_requests` OnboardingInfoRequest[]: Open requests for follow-up information. Non-empty whenever a reviewer has asked for something, which is normally after submission and then `step` is `resolve_info_requests`, where `required_proof_types` above is the deduplicated union of what these still owe. A request raised before submission is reported here too, while `step` stays on the pre-submission work. Use the per-request entries when you need the `request_id` to upload against.
      - `request_id` string, uuid, required: Pass this to `POST /entities/{entity_id}/info-requests/{request_id}/documents/upload-url` and its confirm call, so the uploaded file is attributed to this request. The pre-submission `/documents/upload-url` pair does not take it and is closed once the application is submitted.
      - `required_proof_types` PublicKybProofType[], required: Documents this request is still waiting on. Empty once every requested document is on file.
      - `questions_pending` boolean, required: Whether this request also asks questions that have not been answered yet. The request stays open until they are, even once every document is on file. Answer them at `POST /entities/{entity_id}/info-requests/{request_id}`.
      - `outstanding` PublicOutstandingItem[], required: Everything this request is still waiting on, documents and questions alike, as structured items. `required_proof_types` above is the document half of this list.
        - `kind` 'document' | 'answers' | 'tin', required
        - `proof_type` 'accredited' | 'address' | 'articles_of_organization' | 'bank_statement' | 'client_contract' | 'client_invoice' | 'beneficial_owner_address' | 'beneficial_owner_id' | 'beneficial_owner_id_back' | 'beneficial_ownership_register' | 'bylaws' | 'certificate_of_good_standing' | 'corporate_resolution' | 'drivers_license' | 'due_diligence' | 'ein' | 'final_edd_report' | 'periodic_review_report' | 'government_issued_business_license' | 'hemp_cultivator_state_license' | 'incorporation' | 'industry_related_license' | 'lease_agreement' | 'llc_resolution' | 'money_service_business_license' | 'money_transmitter_registration' | 'mortgage_statement' | 'national_id' | 'org_chart' | 'partnership_agreement' | 'partnership_agreement_due_diligence' | 'partnership_resolution' | 'personal_address' | 'remote_employees_due_diligence' | 'signed_ss4' | 'tax_exemption_certificate' | 'uk_officer_passport' | 'officer_registry' | 'uk_registry' | 'shareholder_registry' | 'uk_w8_en' | 'utility_bill' | 'us_based_office_proof_of_address_due_diligence' | 'pitch_deck' | 'active_business_registration' | 'proof_of_ownership_or_banking_authorization' | 'non_profit_bylaws' | 'operating_agreement' | 'flow_of_funds' | 'aml_sanction' | 'registration_or_license' | 'sec_filing' | 'legal_opinion' | 'certificate_of_formation_master_llc' | 'series_operating_agreement' | 'share_subscription_agreement' | 'fund_subscription_agreement' | 'safe_agreement' | 'convertible_note_agreement' | 'loan_promissory_note' | 'token_purchase_agreement' | 'saft_agreement' | 'deal_memo_hybrid_agreement' | 'issuer_due_diligence_report' | 'protocol_ecosystem_questionnaire' | 'investment_company_due_diligence_form' | 'us_based_operations_due_diligence_form' | 'register_of_directors' | 'articles_of_association' | 'memorandum_of_association' | 'non_profit_status' | 'ofac_sanctions_screening_policy' | 'aml_kyc_policy' | 'w8_bene' | 'corporate_structure_chart' | 'custody_safeguarding_agreement' | 'reserve_attestation' | 'sanctions_vendor_service_agreement' | 'contractual_fund_flow_agreements'
        - `detail` string, required: The item written out for a person to read. Prose, so match on `kind` and `proof_type` rather than on this.
      - `note` string, nullable, required: What the reviewer asked for, if they left a note.
      - `expires_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
  - `representatives` OnboardingRepresentativeKyc[], required: Every representative on the application with their identity verification (KYC) status. The top-level `kyc_status` reflects the primary representative; the application can only be approved once every representative is approved.
    - `representative_id` string, uuid, required: ID of the representative.
    - `first_name` string, nullable, required: Legal first name.
    - `last_name` string, nullable, required: Legal last name.
    - `email` string, required: Representative's email address.
    - `is_primary` boolean, required: Whether they are the primary representative (signer).
    - `is_beneficial_owner` boolean, required: Whether they are a beneficial owner.
    - `percent_ownership` string, nullable, required: Ownership percentage, if any.
    - `kyc_status` 'not_started' | 'pending' | 'action_required' | 'approved' | 'rejected', required
    - `failed_checks` OnboardingKycFailedCheck[], required: The identity-verification checks that failed when `kyc_status` is `rejected`. Empty for other statuses or when check details are unavailable.
  - `consent_url` string, nullable, required: Link where the primary representative reviews and accepts the required agreements and disclosures in their browser. Populated once the application has been submitted; share it with the primary representative. The link needs no login and anyone holding it can accept on the business's behalf, so treat it as a secret.
  - `consent` OnboardingConsentState, required
    - `status` 'pending' | 'viewed' | 'completed', required
    - `consented_items` AgenticOnboardingConsentType[], required: Agreements the primary representative has accepted so far.
    - `remaining_items` AgenticOnboardingConsentType[], required: Required agreements still outstanding. Review proceeds while this is non-empty, but no account can be opened until it is empty, so share `consent_url` with the primary representative so they can finish.
    - `viewed_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).
    - `completed_at` string, date-time, required: ISO 8601 date-time in the format `YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]` (per [IETF RFC 3339](https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14)).

## Other responses

- `400`: The request could not be processed.
- `401`: Authentication failed.
- `403`: The API key is not authorized for this operation.
- `429`: Too many requests.

---

[API](https://skmtc.dev/meow/apis/meow-api.md) - [All operations](https://skmtc.dev/meow/apis/meow-api/llms.txt) - [OpenAPI document](https://skmtc.dev/meow/apis/meow-api/revisions/ea2d7e25b63b?raw)
