---
title: "Delete Contact Group"
full: true
_openapi:
  method: DELETE
  toc: []
  structuredData:
    headings: []
    contents:
      - content: "Deletes a contact from a group by ID or email"
_apiData:
  document: "https://reloop.sh/api/contacts/openapi/json"
  operationData: [{"path":"/api/contacts/group/{group_id}","method":"delete"}]
  parameterList: [{"name":"group_id","type":"string","required":true,"description":"Group ID","location":"path","example":"grp_123456789"},{"name":"contact_id","type":"string","required":false,"description":"Contact ID","location":"body"},{"name":"email","type":"string","required":false,"description":"Contact email address","location":"body","pattern":"^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$"}]
  responseMap: {"200":{"description":"Response for status 200","schema":{"success":true,"object":"contact","id":"cont_123456789","event":"contact.update"}},"400":{"description":"Response for status 400","schema":{"message":"Contact already exists"}},"404":{"description":"Response for status 404","schema":{"message":"Contact already exists"}}}
  codeSamples:
    - id: node
      lang: javascript
      label: Node.js
      source: |-
        import { Reloop } from "reloop-email";
        
        const reloop = new Reloop({ apiKey: "rl_123456789" });
        
        const { group, groupError } = await reloop.contacts.groups.removeContact(
          "grp_123456789",
          { contact_id: "con_123456789" },
        );
        
        if (groupError) throw groupError;
        
        console.log(group.id, group.success);
    - id: curl
      lang: bash
      label: cURL
      source: |-
        curl -X DELETE https://reloop.sh/api/contacts/group/grp_123456789 \
          -H "x-api-key: rl_123456789" \
          -H "Content-Type: application/json" \
          -d '{"contact_id": "con_123456789"}'
    - id: python
      lang: python
      label: Python
      source: |-
        from reloop_email import Reloop
        
        reloop = Reloop(api_key="rl_123456789")
        
        result = reloop.contacts.groups.removeContact("grp_123456789", {
          "contact_id": "con_123456789",
        })
        
        if result.group_error:
            raise result.group_error
        
        print(result.group["id"], result.group["success"])
    - id: php
      lang: php
      label: PHP
      source: |-
        <?php
        
        require 'vendor/autoload.php';
        
        use Reloop\Reloop;
        
        $reloop = Reloop::client('rl_123456789');
        
        $group = $reloop->contacts->groups->removeContact('grp_123456789', [
            'contact_id' => 'con_123456789',
        ]);
        echo $group['id'] . ' ' . $group['success'] . PHP_EOL;
    - id: java
      lang: java
      label: Java
      source: |-
        import sh.reloop.ReloopClient;
        ReloopClient reloop = new ReloopClient("rl_123456789");
        
        RemoveGroupContactParams params = new RemoveGroupContactParams();
        params.contactId = "con_123456789";
        var group = reloop.contacts.groups.removeContact("grp_123456789", params);
        System.out.println(group.id + " " + group.success);
    - id: dotnet
      lang: csharp
      label: .NET
      source: |-
        using Reloop;
        using Reloop.Models;
        
        var reloop = new ReloopClient("rl_123456789");
        
        await reloop.Contacts.Groups.RemoveContactAsync("grp_123456789", new Dictionary<string, object?> { ["contact_id"] = "con_123456789" });
    - id: go
      lang: go
      label: Go
      source: |-
        import reloop "github.com/reloop-labs/reloop-go"
        
        client, _ := reloop.NewClient(reloop.ClientOptions{
            APIKey: "rl_123456789",
        })
        
        _, _ = client.Contacts.Groups.RemoveContact("grp_123456789", map[string]interface{"contact_id": "con_123456789"})
    - id: rust
      lang: rust
      label: Rust
      source: |-
        use reloop::ReloopClient;
        #[tokio::main]
        async fn main() -> Result<(), Box<dyn std::error::Error>> {
            let reloop = ReloopClient::new("rl_123456789".to_string(), None);
        
            reloop.contacts().groups().remove_contact("grp_123456789", RemoveContactFromGroupParams { contact_id: Some("con_123456789".to_string()), ..Default::default() }).await?;
        
            Ok(())
        }
    - id: ruby
      lang: ruby
      label: Ruby
      source: |-
        require "reloop"
        
        reloop = Reloop::Client.new(api_key: "rl_123456789")
        
        reloop.contacts.groups.remove_contact("grp_123456789", contact_id: "con_123456789")
    - id: elixir
      lang: elixir
      label: Elixir
      source: |-
        client = Reloop.client("rl_123456789")
        
        {:ok, result} = Reloop.Services.ContactGroups.remove_contact(client, "grp_123456789", %{contact_id: "con_123456789"})
---
> For the complete documentation index, see [llms-docs.txt](/llms-docs.txt) or the site index [llms.txt](/llms.txt). Full docs corpus: [llms-full-docs.txt](/llms-full-docs.txt). Prefer markdown URLs (append `.md`) for agent consumption. Product skill: [skill.md](/skill.md).


{/* This file was generated by the OpenAPI doc generator. Do not edit this file directly. Run `bun run generate:api-docs` to regenerate. */}

<APIPage />
