# Developer organizations


An organization is the shared space where colleagues manage Campaigns, courses, data, and funds. You sign in with a personal account and work as the Owner, an Admin, or a Member of the active organization.

## Create a new organization or join one?

A Campaign invitation or referral code is not an organization membership invitation. If a colleague already manages the work, ask the Owner or an Admin of **their existing organization** for access.

If you are establishing a separate organization for your own work, sign in and open [organization setup](https://developer.humanbased.ai/onboarding). Enter the organization name and URL slug, then wait for both availability checks before selecting **Create organization**. The organization is created at once and is live.

If the name or slug is unavailable or protected, choose an identity you are authorized to use. If you represent that organization and the page offers **Apply to claim this identity**, provide an official domain, public evidence link, and explanation for review. After creation, **Invite Team** lets you send colleague invitations or continue to the dashboard. Confirm the new organization and your role in **Members** before configuring its resources.

## Check and switch the active organization

The account area at the bottom left of the Developer portal shows your name and the organization you are working in. Open it and select **Organization**. Confirm the name before editing a Campaign, creating a key, or viewing billing. In **Members**, your own row is marked **(You)**; check its **Role** and **Permissions**.

| Role | Scope shown in the member list |
| --- | --- |
| Owner | Full access; restricted General settings are owner-managed |
| Admin | Campaigns, Data, Agents |
| Member | Campaigns, Data |

Individual actions can have additional checks. If **General** says **Only the owner can change these settings**, ask the Owner of this organization. Roles are set per organization, so a role you hold elsewhere applies only there.

### Switch to another organization

When your account belongs to more than one organization, the account menu lists them at the top. Each row shows an organization's name and your role in it, and a check mark sits on the active one.

1. Open the account menu at the bottom left.
2. Select the organization you need.
3. Wait for the portal to reload, then confirm the name shown in the account area.

After switching, the Campaigns, keys, and billing you see belong to the organization you selected; each organization keeps its own. The choice lasts for the current sign-in session, and a new session opens in the organization you joined most recently.

If the organization you need is missing from the list, your account has not joined it yet, so ask its Owner or an Admin to invite you. If the portal shows **Couldn't switch organization — try again.**, you are still in the previous organization.

## Separate personal and organization details

| Page | What it holds | Who can change it |
| --- | --- | --- |
| **Account** | Your name, email, and linked sign-in methods | You |
| **Organization → General** | Organization name, slug, logo, and billing contact | Owner |
| **Organization → Public profile** | The organization's public introduction and page visibility | Owner |
| **Organization → Verification** | The organization's legal entity details and verification status | Owner |

**Public profile** has two visibility settings: **Public** lets anyone view the organization page, and **Hidden** takes that page down. Use **Preview as contributor** to check the introduction and links a contributor will see. Billing contacts and member records stay internal to the organization. Changes to your personal **Account** affect only you.

## Join an existing organization

An invitation reaches you in one of two forms, and each finishes differently. Both need you to sign in to the Developer portal; if your account does not have Developer access yet, get it first as described in [Account and sign-in](/start/account).

**Email invitation.** The link in the email opens a page headed **Join** followed by the organization's name. It shows who invited you, the role offered, the address the invitation was sent to, and when it expires. Sign in with that address, then select **Accept invitation**. The page answers **You're in** and opens the Dashboard. If you are already signed in with the invited address, a banner at the top of the portal offers the same invitation with **Accept**.

**Invite link.** A shared link opens the same heading with **Request to join**. Selecting it sends a request, and the page shows **Request sent**. You become a member when the Owner or an Admin approves the request, with the role they choose.

| What you see | What it means | What to do now |
| --- | --- | --- |
| **Sign in to accept** | You are not signed in | Sign in with the invited address, then accept |
| **This invitation is for a different account** | You are signed in with another email | Select **Sign in with that address** |
| **This invitation has expired** | Its 7-day validity has passed | Ask the Owner or an Admin to resend it |
| **This invitation is no longer valid** | It was revoked or replaced by a newer invitation | Open the newest email, or ask for a fresh invitation |
| **Request sent** or **Request already sent** | Your request is waiting for the Owner or an Admin. You are not a member yet | Tell the person who shared the link, then wait for their decision |
| **This invitation was already used** or **You're already a member** | The membership already exists | Open the Dashboard and switch to the organization |

To confirm the result, check the organization name in the account area; switch first if you belong to several organizations. Then open **Organization → Members** and find the row marked **(You)**. Its **Role** should match what the inviter intended.

An organization can also admit a whole company email domain. When a banner says your email domain matches an organization, select **Join** and confirm to be added as a Member.

## Invite members and decide join requests

The Owner and Admins manage membership in **Organization → Members**. A Member sees only the member list there.

| Way in | Who sets it up | What the newcomer does | Role granted |
| --- | --- | --- | --- |
| Email invitation | Owner or Admin, one address per invitation | Accepts with the invited address within 7 days | Member or Admin, chosen when inviting |
| Invite link | Owner or Admin, one active link per organization | Requests to join, then waits for approval | Member or Admin, chosen when approving |
| Allowed email domain | Owner, on the **Domains** tab | Confirms the join prompt; there is no approval step | Member |

### Invite one person by email

1. Under **Invite team members**, enter the person's **Email address**.
2. Choose the role to grant: **Member** or **Admin**.
3. Select **Invite**.

The address appears under **Pending Invitations** with a **Pending** badge, and the person receives an email link that stays valid for 7 days. They become a member when they accept with that address.

Hover over the pending row to show two buttons. **Resend** issues a fresh link and retires the earlier one. **Revoke** cancels the invitation.

### Share an invite link and decide requests

1. Under **Invite link**, select **Generate invite link**, then **Copy**.
2. Send the link to the people who should ask for access.
3. When a request appears under **Join Requests**, check the requester's name and email.
4. Choose **Member** or **Admin** in that row, then select **Approve**. Select **Reject** to decline.

Approval adds the person to the member list at once, with the role you chose. Anyone holding the link can send a request, so if it spreads too far, use **Regenerate** to replace it or **Revoke** to turn it off. The old link then stops working.

### Read the result

| What you see in **Members** | What it means | What to do now |
| --- | --- | --- |
| A row under **Pending Invitations** marked **Pending** | The invitation is sent and not yet accepted | Wait for the invitee, or use **Resend** or **Revoke** |
| A row under **Join Requests** | Someone used the invite link and is not a member yet | Choose the role, then **Approve** or **Reject** |
| The person in the member list | The membership is active with the **Role** shown | Ask the new member to confirm the same organization and role on their side |
| A red notice such as **We could not confirm invite delivery** | The portal could not confirm your last action | Refresh, then check the list the notice names before repeating the action |

### Change a role or remove a member

In the member list, use the **Role** control in a member's row to move them between **Member** and **Admin**. To remove someone, hover over their row, select **Remove**, then **Confirm**. The member is told by email about either change. Removal ends their membership in this organization and leaves their personal account in place. API keys that person created stay active, so review them in **API Keys** and revoke the ones that should stop.

Your own row and the Owner's row carry no such controls. The Owner role changes hands only through **Transfer ownership**, described below.

### Admit a company email domain

Only the Owner sees the **Domains** tab. Under **Allowed email domains**, type the company domain and select **Add domain**. People who sign in with a verified email at that domain are then shown a join prompt and become Members as soon as they confirm. Public email providers such as gmail.com are refused, and an empty list keeps domain join off.

## What organization verification changes

Verification confirms the organization's legal identity. Member roles stay as they were.

The Owner submits it on the **Verification** tab of **Organization**. The card **Organization verification (KYB)** asks for three details: **Legal entity**, **Registry / tax number**, and **Registry country**. Select **Submit for review**; a business license or registration record can be uploaded under **Supporting documents**. The card then shows **In review**, followed by **Verified**, or by **Rejected** with the reviewer's reason.

Verification affects the organization's work as follows. Open **Trust** from the account menu to see the current state of each line.

| What you want to do | What it requires | Where to check |
| --- | --- | --- |
| Run a standard Campaign with a flat reward and public data | No organization verification | On **Trust**, the section **What each level unlocks** shows **Standard campaigns** as **Now** |
| Publish **Data Assets** or **Agents** | A verified organization, and trust level L3 held for 30 days | On **Trust**, the **Publishing + expert work** card says which of the two is still outstanding |
| Show contributors the verified mark beside the organization's name | A verified organization | On the **Public profile** tab, the **Verification** line of the **Publisher panel** |

Passing verification does not publish anything by itself: the trust level is a separate condition, and each asset still goes through its own publication steps.

### Verify through GitHub or Hugging Face

**External verification** connects your GitHub or Hugging Face organization and imports its verified badge as this organization's domain-verification proof. Select **Connect**, sign in to the provider, and choose the organization; only organizations where you hold an admin role there can be connected. Each connection shows **Verified** or **Not verified on** the provider, and **Disconnect** removes it.

<a id="campaign-roles"></a>
## Campaign roles and access

Each Campaign has its own roles, separate from organization roles. **Team & access** in the Campaign's setup shows yours:

| Role | Can |
| --- | --- |
| **Owner** | Launch, pause, end, fund, and delete the Campaign, and manage who has access |
| **Editor** | Change the brief, workflow, rewards, settings, and review submissions |
| **Viewer** | Read Campaign information |

Members of the organization can ask to edit a Campaign. Their requests appear under **Access requests**, where an Owner selects **Grant** or **Decline**. **Grant** gives the role the person asked for, and the button names it. To give a different role, decline the request and use **Add a collaborator**, which has its own role choice. **Add a collaborator** also adds someone directly, by the email they sign in with; they must already be in the Campaign's organization.

## Leave, hand over, or delete an organization

These three actions end different things, so decide which one you mean before you start.

| Action | Who can do it | What changes | Settle before you start |
| --- | --- | --- | --- |
| **Leave organization** | Admin or Member | Only your membership ends. Campaigns, data, keys, and billing stay with the organization | Who continues your open work; which API keys you created and who looks after them next |
| **Transfer ownership** | Owner | When the recipient accepts, they become the Owner and you become an Admin. Everything else in the organization stays as it is | The recipient is already a member and has agreed; they know the billing contact, funds, and keys they are taking on |
| **Delete organization** | Owner | The organization is removed permanently, with all members, keys, subscriptions, and billing data | No running Campaign or program still depends on it; the statements and receipts you need are saved; you have asked [support](mailto:hello@humanbased.ai) about any remaining balance |

### Leave as an Admin or Member

Open the **General** tab of **Organization** and find the **Leave organization** section. Select **Leave organization**, then **Confirm**. The portal continues in another organization your account belongs to, or shows **No organization** if this was your only one.

API keys you created stay active after you leave, until the Owner or an Admin revokes them. Before you go, revoke the ones no program needs and hand the rest to the Owner or an Admin; [API Keys](/api/api-auth) explains how. Coming back later takes a new invitation or approval.

The Owner sees a notice in place of the button: **As the owner you must transfer ownership before you can leave this organization.**

### Transfer ownership as the Owner

1. Check that the recipient is already listed in **Members**; invite them first if they are missing.
2. Open the **General** tab of **Organization** and find the **Transfer ownership** section.
3. Choose the recipient under **Select a member…**.
4. Type the organization name exactly as the **Name** field above shows it, then select **Transfer ownership**. Case and spaces count, and an unsaved change to **Name** changes what you must type.
5. Ask the recipient to open the Developer portal. A banner at the top asks them to take ownership, and they have 7 days to select **Accept** or **Decline**.
6. After they accept, both of you check **Members**: the recipient is the Owner and you are an Admin.

Until the recipient accepts, you remain the Owner and the section reads **Transfer pending**. **Cancel transfer** is offered there right after you start the request. If you no longer see it, ask the recipient to select **Decline**, because only one transfer can be open at a time. After 7 days **Accept**, **Decline** and **Cancel transfer** all stop working while the request still holds that one open slot, so the organization cannot start a new transfer. Contact [support](mailto:hello@humanbased.ai) with the organization name and the recipient's email address, and support will clear the request.

### Delete as the Owner

On the **General** tab, the **Danger zone** section holds **Delete organization**. Deleting is not a way to leave or to repair a permission problem: it removes the organization for every member. To go ahead, select **Delete organization**, type the organization name exactly as the **Name** field shows it, and select **Delete organization** again. There is no undo.

Closing your personal account is a separate matter from all three.

If a result differs from what this page describes, contact [support](mailto:hello@humanbased.ai) with the organization name and the message you see. Continue with the [Developer journey](/start/developer-start) or [API Keys](/api/api-auth).
