{"files":{"SKILL.md":"---\nname: ingestion-api\ndescription: \"Ingestion API skill. Use when working with Ingestion for import, track, engage#profile-set. Covers 20 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Ingestion API\nAPI version: 1.0.0\n\n## Auth\nNo authentication required.\n\n## Base URL\nhttps://api.mixpanel.com\n\n## Setup\n1. No auth setup needed\n2. GET /lookup-tables -- list lookup tables\n3. POST /import -- create first import\n\n## Endpoints\n20 endpoints across 19 groups. See references/api-spec.lap for full details.\n\n### Import\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /import | Import Events |\n\n### Track\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /track | Track Events |\n\n### Engage#profile-set\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-set | Set Property |\n\n### Engage#profile-set-once\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-set-once | Set Property Once |\n\n### Engage#profile-numerical-add\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-numerical-add | Increment Numerical Property |\n\n### Engage#profile-union\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-union | Union To List Property |\n\n### Engage#profile-list-append\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-list-append | Append to List Property |\n\n### Engage#profile-list-remove\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-list-remove | Remove from List Property |\n\n### Engage#profile-unset\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-unset | Delete Property |\n\n### Engage#profile-batch-update\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-batch-update | Update Multiple Profiles |\n\n### Engage#profile-delete\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /engage#profile-delete | Delete Profile |\n\n### Groups#group-set\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-set | Update Property |\n\n### Groups#group-set-once\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-set-once | Set Property Once |\n\n### Groups#group-unset\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-unset | Delete Property |\n\n### Groups#group-remove-from-list\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-remove-from-list | Remove from List Property |\n\n### Groups#group-union\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-union | Union To List Property |\n\n### Groups#group-batch-update\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-batch-update | Batch Update Group Profiles |\n\n### Groups#group-delete\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /groups#group-delete | Delete Group |\n\n### Lookup-tables\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /lookup-tables | List Lookup Tables |\n| PUT | /lookup-tables/{id} | Replace a Lookup Table |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a import?\" -> POST /import\n- \"Create a track?\" -> POST /track\n- \"Create a engage#profile-set?\" -> POST /engage#profile-set\n- \"Create a engage#profile-set-once?\" -> POST /engage#profile-set-once\n- \"Create a engage#profile-numerical-add?\" -> POST /engage#profile-numerical-add\n- \"Create a engage#profile-union?\" -> POST /engage#profile-union\n- \"Create a engage#profile-list-append?\" -> POST /engage#profile-list-append\n- \"Create a engage#profile-list-remove?\" -> POST /engage#profile-list-remove\n- \"Create a engage#profile-unset?\" -> POST /engage#profile-unset\n- \"Create a engage#profile-batch-update?\" -> POST /engage#profile-batch-update\n- \"Create a engage#profile-delete?\" -> POST /engage#profile-delete\n- \"Create a groups#group-set?\" -> POST /groups#group-set\n- \"Create a groups#group-set-once?\" -> POST /groups#group-set-once\n- \"Create a groups#group-unset?\" -> POST /groups#group-unset\n- \"Create a groups#group-remove-from-list?\" -> POST /groups#group-remove-from-list\n- \"Create a groups#group-union?\" -> POST /groups#group-union\n- \"Create a groups#group-batch-update?\" -> POST /groups#group-batch-update\n- \"Create a groups#group-delete?\" -> POST /groups#group-delete\n- \"List all lookup-tables?\" -> GET /lookup-tables\n- \"Update a lookup-table?\" -> PUT /lookup-tables/{id}\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Ingestion API\n@base https://api.mixpanel.com\n@version 1.0.0\n@endpoints 20\n@toc import(1), track(1), engage#profile-set(1), engage#profile-set-once(1), engage#profile-numerical-add(1), engage#profile-union(1), engage#profile-list-append(1), engage#profile-list-remove(1), engage#profile-unset(1), engage#profile-batch-update(1), engage#profile-delete(1), groups#group-set(1), groups#group-set-once(1), groups#group-unset(1), groups#group-remove-from-list(1), groups#group-union(1), groups#group-batch-update(1), groups#group-delete(1), lookup-tables(2)\n\n@group import\n@endpoint POST /import\n@desc Import Events\n@required {strict: str(0/1)=1 # When set to 1 (recommended), Mixpanel will validate the batch and return errors per event that failed., project_id: str=<YOUR_PROJECT_ID> # The Mixpanel project_id, used to authenticate service account credentials.}\n@optional {Content-Type: str(application/json/application/x-ndjson)=application/json, Content-Encoding: str}\n@returns(200) {code: int, num_records_imported: int, status: str} # A 200 response indicates all records were successfully ingested.\n@errors {400: A 400 response indicates that some records failed validation., 401: A 401 response indicates invalid credentials., 413: A 413 response indicates that the payload is too large., 429: A 429 response indicates rate limits have been exceeded.}\n\n@endgroup\n\n@group track\n@endpoint POST /track\n@desc Track Events\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-set\n@endpoint POST /engage#profile-set\n@desc Set Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-set-once\n@endpoint POST /engage#profile-set-once\n@desc Set Property Once\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-numerical-add\n@endpoint POST /engage#profile-numerical-add\n@desc Increment Numerical Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-union\n@endpoint POST /engage#profile-union\n@desc Union To List Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-list-append\n@endpoint POST /engage#profile-list-append\n@desc Append to List Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-list-remove\n@endpoint POST /engage#profile-list-remove\n@desc Remove from List Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-unset\n@endpoint POST /engage#profile-unset\n@desc Delete Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-batch-update\n@endpoint POST /engage#profile-batch-update\n@desc Update Multiple Profiles\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group engage#profile-delete\n@endpoint POST /engage#profile-delete\n@desc Delete Profile\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-set\n@endpoint POST /groups#group-set\n@desc Update Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-set-once\n@endpoint POST /groups#group-set-once\n@desc Set Property Once\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-unset\n@endpoint POST /groups#group-unset\n@desc Delete Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-remove-from-list\n@endpoint POST /groups#group-remove-from-list\n@desc Remove from List Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-union\n@endpoint POST /groups#group-union\n@desc Union To List Property\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-batch-update\n@endpoint POST /groups#group-batch-update\n@desc Batch Update Group Profiles\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group groups#group-delete\n@endpoint POST /groups#group-delete\n@desc Delete Group\n@returns(200) * `1` - One or more objects provided are valid. This does not signify a valid project token or secret. * `0` - No data objects in the body are valid.\n@errors {401: Unauthorized, 403: Forbidden}\n\n@endgroup\n\n@group lookup-tables\n@endpoint GET /lookup-tables\n@desc List Lookup Tables\n@required {project_id: str=<YOUR_PROJECT_ID> # The Mixpanel project_id, used to authenticate service account credentials.}\n@returns(200) {code: num, status: str, results: [map]} # The list of Lookup Tables.\n@errors {401: A 401 response indicates invalid credentials.}\n\n@endpoint PUT /lookup-tables/{id}\n@desc Replace a Lookup Table\n@required {id: str(uuid) # The ID of the lookup table to replace which can be retreived from Lexicon under the lookup table's details, click [here](https://docs.mixpanel.com/docs/data-structure/lookup-tables#where-can-i-find-the-id-of-the-lookup-table-for-apis-path-params) for more info., project_id: str=<YOUR_PROJECT_ID> # The Mixpanel project_id, used to authenticate service account credentials.}\n@optional {Content-Type: str=text/csv}\n@returns(200) {code: int, status: str} # A 200 response indicates all records were successfully ingested.\n@errors {400: A 400 response indicates that some records failed validation., 401: A 401 response indicates invalid credentials., 404: A 404 response indicates that the entity to replace was not found., 413: A 413 response indicates that the payload is too large., 429: A 429 response indicates rate limits have been exceeded.}\n\n@endgroup\n\n@end\n"}}